diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,22 @@
 # Change Log
 
+## 0.6.0
+
+* **BREAKING CHANGE**: Added `ValList` type. This new type allows you to
+  reference parameters that are already list types. Previously you had to use
+  some kludgy workarounds. For example, you can now `Ref` a parameter of type
+  `List<AWS::EC2::AvailabilityZone::Name>`.
+
+  Every type that used to be `[Val a]` is now `ValList a`. If you use the
+  `OverloadedLists` pragma, you might not have to change any of your code.
+  Otherwise, you must wrap existing lists in the `ValList` constructor.
+
+* **BREAKING CHANGE**: The newtype wrappers `Integer'`, `Bool'`, and `Double'`
+  are no longer required. CloudFormation expects numbers and bools to be JSON
+  strings. These newtypes used to be necessary so we didn't use JSON
+  numbers/bools. Now the conversion is handled internally, and users don't need
+  to worry about this when using `stratosphere`.
+
 ## 0.5.0
 
 * Update resource specification document (no version given)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -91,11 +91,6 @@
 We recommend using the `OverloadedStrings` extension to reduce the number of
 `Literal`s you have to use.
 
-Note that CloudFormation represents numbers and bools in JSON as strings, so we
-had to some types called `Integer'` and `Bool'` to override the `aeson`
-instances. In a future version we plan on using our own JSON encoder/decoder to
-get around this.
-
 ## Lenses
 
 Almost every CloudFormation resource has a handful of required arguments, and
diff --git a/examples/auto-scaling-group.hs b/examples/auto-scaling-group.hs
--- a/examples/auto-scaling-group.hs
+++ b/examples/auto-scaling-group.hs
@@ -22,6 +22,9 @@
     & resUpdatePolicy ?~ asgUpdatePolicy
   , launchConfigResource
   ]
+  & parameters ?~
+  [ parameter "AvailabilityZones" "List<AWS::EC2::AvailabilityZone::Name>"
+  ]
   & description ?~ "Auto scaling group example"
   & formatVersion ?~ "2010-09-09"
 
@@ -34,6 +37,11 @@
   "4"
   & asasgDesiredCapacity ?~ "3"
   & asasgLaunchConfigurationName ?~ Ref "LaunchConfig"
+  & asasgAvailabilityZones ?~ RefList "AvailabilityZones"
+  & asasgTerminationPolicies ?~
+    [ "OldestLaunchConfiguration"
+    , "ClosestToNextInstanceHour"
+    ]
 
 asgCreationPolicy :: CreationPolicy
 asgCreationPolicy =
@@ -47,14 +55,14 @@
   updatePolicy
   & upAutoScalingScheduledAction ?~ (
     autoScalingScheduledActionPolicy
-    & assapIgnoreUnmodifiedGroupSizeProperties ?~ Literal True'
+    & assapIgnoreUnmodifiedGroupSizeProperties ?~ Literal True
     )
   & upAutoScalingRollingUpdate ?~ (
     autoScalingRollingUpdatePolicy
     & asrupMinInstancesInService ?~ Literal 1
     & asrupMaxBatchSize ?~ Literal 2
     & asrupPauseTime ?~ "PT15M"
-    & asrupWaitOnResourceSignals ?~ Literal True'
+    & asrupWaitOnResourceSignals ?~ Literal True
     )
 
 launchConfigResource :: Resource
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayApiKeyStageKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-apikey-stagekey.html
 
@@ -26,15 +27,15 @@
   toJSON ApiGatewayApiKeyStageKey{..} =
     object $
     catMaybes
-    [ ("RestApiId" .=) <$> _apiGatewayApiKeyStageKeyRestApiId
-    , ("StageName" .=) <$> _apiGatewayApiKeyStageKeyStageName
+    [ fmap (("RestApiId",) . toJSON) _apiGatewayApiKeyStageKeyRestApiId
+    , fmap (("StageName",) . toJSON) _apiGatewayApiKeyStageKeyStageName
     ]
 
 instance FromJSON ApiGatewayApiKeyStageKey where
   parseJSON (Object obj) =
     ApiGatewayApiKeyStageKey <$>
-      obj .:? "RestApiId" <*>
-      obj .:? "StageName"
+      (obj .:? "RestApiId") <*>
+      (obj .:? "StageName")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayApiKeyStageKey' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentMethodSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html
 
@@ -18,47 +19,47 @@
 -- 'apiGatewayDeploymentMethodSetting' for a more convenient constructor.
 data ApiGatewayDeploymentMethodSetting =
   ApiGatewayDeploymentMethodSetting
-  { _apiGatewayDeploymentMethodSettingCacheDataEncrypted :: Maybe (Val Bool')
-  , _apiGatewayDeploymentMethodSettingCacheTtlInSeconds :: Maybe (Val Integer')
-  , _apiGatewayDeploymentMethodSettingCachingEnabled :: Maybe (Val Bool')
-  , _apiGatewayDeploymentMethodSettingDataTraceEnabled :: Maybe (Val Bool')
+  { _apiGatewayDeploymentMethodSettingCacheDataEncrypted :: Maybe (Val Bool)
+  , _apiGatewayDeploymentMethodSettingCacheTtlInSeconds :: Maybe (Val Integer)
+  , _apiGatewayDeploymentMethodSettingCachingEnabled :: Maybe (Val Bool)
+  , _apiGatewayDeploymentMethodSettingDataTraceEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentMethodSettingHttpMethod :: Maybe (Val HttpMethod)
   , _apiGatewayDeploymentMethodSettingLoggingLevel :: Maybe (Val LoggingLevel)
-  , _apiGatewayDeploymentMethodSettingMetricsEnabled :: Maybe (Val Bool')
+  , _apiGatewayDeploymentMethodSettingMetricsEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentMethodSettingResourcePath :: Maybe (Val Text)
-  , _apiGatewayDeploymentMethodSettingThrottlingBurstLimit :: Maybe (Val Integer')
-  , _apiGatewayDeploymentMethodSettingThrottlingRateLimit :: Maybe (Val Double')
+  , _apiGatewayDeploymentMethodSettingThrottlingBurstLimit :: Maybe (Val Integer)
+  , _apiGatewayDeploymentMethodSettingThrottlingRateLimit :: Maybe (Val Double)
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayDeploymentMethodSetting where
   toJSON ApiGatewayDeploymentMethodSetting{..} =
     object $
     catMaybes
-    [ ("CacheDataEncrypted" .=) <$> _apiGatewayDeploymentMethodSettingCacheDataEncrypted
-    , ("CacheTtlInSeconds" .=) <$> _apiGatewayDeploymentMethodSettingCacheTtlInSeconds
-    , ("CachingEnabled" .=) <$> _apiGatewayDeploymentMethodSettingCachingEnabled
-    , ("DataTraceEnabled" .=) <$> _apiGatewayDeploymentMethodSettingDataTraceEnabled
-    , ("HttpMethod" .=) <$> _apiGatewayDeploymentMethodSettingHttpMethod
-    , ("LoggingLevel" .=) <$> _apiGatewayDeploymentMethodSettingLoggingLevel
-    , ("MetricsEnabled" .=) <$> _apiGatewayDeploymentMethodSettingMetricsEnabled
-    , ("ResourcePath" .=) <$> _apiGatewayDeploymentMethodSettingResourcePath
-    , ("ThrottlingBurstLimit" .=) <$> _apiGatewayDeploymentMethodSettingThrottlingBurstLimit
-    , ("ThrottlingRateLimit" .=) <$> _apiGatewayDeploymentMethodSettingThrottlingRateLimit
+    [ fmap (("CacheDataEncrypted",) . toJSON . fmap Bool') _apiGatewayDeploymentMethodSettingCacheDataEncrypted
+    , fmap (("CacheTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayDeploymentMethodSettingCacheTtlInSeconds
+    , fmap (("CachingEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentMethodSettingCachingEnabled
+    , fmap (("DataTraceEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentMethodSettingDataTraceEnabled
+    , fmap (("HttpMethod",) . toJSON) _apiGatewayDeploymentMethodSettingHttpMethod
+    , fmap (("LoggingLevel",) . toJSON) _apiGatewayDeploymentMethodSettingLoggingLevel
+    , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentMethodSettingMetricsEnabled
+    , fmap (("ResourcePath",) . toJSON) _apiGatewayDeploymentMethodSettingResourcePath
+    , fmap (("ThrottlingBurstLimit",) . toJSON . fmap Integer') _apiGatewayDeploymentMethodSettingThrottlingBurstLimit
+    , fmap (("ThrottlingRateLimit",) . toJSON . fmap Double') _apiGatewayDeploymentMethodSettingThrottlingRateLimit
     ]
 
 instance FromJSON ApiGatewayDeploymentMethodSetting where
   parseJSON (Object obj) =
     ApiGatewayDeploymentMethodSetting <$>
-      obj .:? "CacheDataEncrypted" <*>
-      obj .:? "CacheTtlInSeconds" <*>
-      obj .:? "CachingEnabled" <*>
-      obj .:? "DataTraceEnabled" <*>
-      obj .:? "HttpMethod" <*>
-      obj .:? "LoggingLevel" <*>
-      obj .:? "MetricsEnabled" <*>
-      obj .:? "ResourcePath" <*>
-      obj .:? "ThrottlingBurstLimit" <*>
-      obj .:? "ThrottlingRateLimit"
+      fmap (fmap (fmap unBool')) (obj .:? "CacheDataEncrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "CacheTtlInSeconds") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CachingEnabled") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DataTraceEnabled") <*>
+      (obj .:? "HttpMethod") <*>
+      (obj .:? "LoggingLevel") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
+      (obj .:? "ResourcePath") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ThrottlingBurstLimit") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "ThrottlingRateLimit")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayDeploymentMethodSetting' containing required
@@ -80,19 +81,19 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachedataencrypted
-agdmsCacheDataEncrypted :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool'))
+agdmsCacheDataEncrypted :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsCacheDataEncrypted = lens _apiGatewayDeploymentMethodSettingCacheDataEncrypted (\s a -> s { _apiGatewayDeploymentMethodSettingCacheDataEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachettlinseconds
-agdmsCacheTtlInSeconds :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer'))
+agdmsCacheTtlInSeconds :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer))
 agdmsCacheTtlInSeconds = lens _apiGatewayDeploymentMethodSettingCacheTtlInSeconds (\s a -> s { _apiGatewayDeploymentMethodSettingCacheTtlInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachingenabled
-agdmsCachingEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool'))
+agdmsCachingEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsCachingEnabled = lens _apiGatewayDeploymentMethodSettingCachingEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingCachingEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-datatraceenabled
-agdmsDataTraceEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool'))
+agdmsDataTraceEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsDataTraceEnabled = lens _apiGatewayDeploymentMethodSettingDataTraceEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingDataTraceEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-httpmethod
@@ -104,7 +105,7 @@
 agdmsLoggingLevel = lens _apiGatewayDeploymentMethodSettingLoggingLevel (\s a -> s { _apiGatewayDeploymentMethodSettingLoggingLevel = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-metricsenabled
-agdmsMetricsEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool'))
+agdmsMetricsEnabled :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Bool))
 agdmsMetricsEnabled = lens _apiGatewayDeploymentMethodSettingMetricsEnabled (\s a -> s { _apiGatewayDeploymentMethodSettingMetricsEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-resourcepath
@@ -112,9 +113,9 @@
 agdmsResourcePath = lens _apiGatewayDeploymentMethodSettingResourcePath (\s a -> s { _apiGatewayDeploymentMethodSettingResourcePath = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingburstlimit
-agdmsThrottlingBurstLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer'))
+agdmsThrottlingBurstLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Integer))
 agdmsThrottlingBurstLimit = lens _apiGatewayDeploymentMethodSettingThrottlingBurstLimit (\s a -> s { _apiGatewayDeploymentMethodSettingThrottlingBurstLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingratelimit
-agdmsThrottlingRateLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Double'))
+agdmsThrottlingRateLimit :: Lens' ApiGatewayDeploymentMethodSetting (Maybe (Val Double))
 agdmsThrottlingRateLimit = lens _apiGatewayDeploymentMethodSettingThrottlingRateLimit (\s a -> s { _apiGatewayDeploymentMethodSettingThrottlingRateLimit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html
 
@@ -19,20 +20,20 @@
 -- 'apiGatewayDeploymentStageDescription' for a more convenient constructor.
 data ApiGatewayDeploymentStageDescription =
   ApiGatewayDeploymentStageDescription
-  { _apiGatewayDeploymentStageDescriptionCacheClusterEnabled :: Maybe (Val Bool')
+  { _apiGatewayDeploymentStageDescriptionCacheClusterEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentStageDescriptionCacheClusterSize :: Maybe (Val Text)
-  , _apiGatewayDeploymentStageDescriptionCacheDataEncrypted :: Maybe (Val Bool')
-  , _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds :: Maybe (Val Integer')
-  , _apiGatewayDeploymentStageDescriptionCachingEnabled :: Maybe (Val Bool')
+  , _apiGatewayDeploymentStageDescriptionCacheDataEncrypted :: Maybe (Val Bool)
+  , _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds :: Maybe (Val Integer)
+  , _apiGatewayDeploymentStageDescriptionCachingEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentStageDescriptionClientCertificateId :: Maybe (Val Text)
-  , _apiGatewayDeploymentStageDescriptionDataTraceEnabled :: Maybe (Val Bool')
+  , _apiGatewayDeploymentStageDescriptionDataTraceEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentStageDescriptionDescription :: Maybe (Val Text)
   , _apiGatewayDeploymentStageDescriptionLoggingLevel :: Maybe (Val LoggingLevel)
   , _apiGatewayDeploymentStageDescriptionMethodSettings :: Maybe [ApiGatewayDeploymentMethodSetting]
-  , _apiGatewayDeploymentStageDescriptionMetricsEnabled :: Maybe (Val Bool')
+  , _apiGatewayDeploymentStageDescriptionMetricsEnabled :: Maybe (Val Bool)
   , _apiGatewayDeploymentStageDescriptionStageName :: Maybe (Val Text)
-  , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit :: Maybe (Val Integer')
-  , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit :: Maybe (Val Double')
+  , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit :: Maybe (Val Integer)
+  , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit :: Maybe (Val Double)
   , _apiGatewayDeploymentStageDescriptionVariables :: Maybe Object
   } deriving (Show, Eq)
 
@@ -40,41 +41,41 @@
   toJSON ApiGatewayDeploymentStageDescription{..} =
     object $
     catMaybes
-    [ ("CacheClusterEnabled" .=) <$> _apiGatewayDeploymentStageDescriptionCacheClusterEnabled
-    , ("CacheClusterSize" .=) <$> _apiGatewayDeploymentStageDescriptionCacheClusterSize
-    , ("CacheDataEncrypted" .=) <$> _apiGatewayDeploymentStageDescriptionCacheDataEncrypted
-    , ("CacheTtlInSeconds" .=) <$> _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds
-    , ("CachingEnabled" .=) <$> _apiGatewayDeploymentStageDescriptionCachingEnabled
-    , ("ClientCertificateId" .=) <$> _apiGatewayDeploymentStageDescriptionClientCertificateId
-    , ("DataTraceEnabled" .=) <$> _apiGatewayDeploymentStageDescriptionDataTraceEnabled
-    , ("Description" .=) <$> _apiGatewayDeploymentStageDescriptionDescription
-    , ("LoggingLevel" .=) <$> _apiGatewayDeploymentStageDescriptionLoggingLevel
-    , ("MethodSettings" .=) <$> _apiGatewayDeploymentStageDescriptionMethodSettings
-    , ("MetricsEnabled" .=) <$> _apiGatewayDeploymentStageDescriptionMetricsEnabled
-    , ("StageName" .=) <$> _apiGatewayDeploymentStageDescriptionStageName
-    , ("ThrottlingBurstLimit" .=) <$> _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit
-    , ("ThrottlingRateLimit" .=) <$> _apiGatewayDeploymentStageDescriptionThrottlingRateLimit
-    , ("Variables" .=) <$> _apiGatewayDeploymentStageDescriptionVariables
+    [ fmap (("CacheClusterEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionCacheClusterEnabled
+    , fmap (("CacheClusterSize",) . toJSON) _apiGatewayDeploymentStageDescriptionCacheClusterSize
+    , fmap (("CacheDataEncrypted",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionCacheDataEncrypted
+    , fmap (("CacheTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds
+    , fmap (("CachingEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionCachingEnabled
+    , fmap (("ClientCertificateId",) . toJSON) _apiGatewayDeploymentStageDescriptionClientCertificateId
+    , fmap (("DataTraceEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionDataTraceEnabled
+    , fmap (("Description",) . toJSON) _apiGatewayDeploymentStageDescriptionDescription
+    , fmap (("LoggingLevel",) . toJSON) _apiGatewayDeploymentStageDescriptionLoggingLevel
+    , fmap (("MethodSettings",) . toJSON) _apiGatewayDeploymentStageDescriptionMethodSettings
+    , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionMetricsEnabled
+    , fmap (("StageName",) . toJSON) _apiGatewayDeploymentStageDescriptionStageName
+    , fmap (("ThrottlingBurstLimit",) . toJSON . fmap Integer') _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit
+    , fmap (("ThrottlingRateLimit",) . toJSON . fmap Double') _apiGatewayDeploymentStageDescriptionThrottlingRateLimit
+    , fmap (("Variables",) . toJSON) _apiGatewayDeploymentStageDescriptionVariables
     ]
 
 instance FromJSON ApiGatewayDeploymentStageDescription where
   parseJSON (Object obj) =
     ApiGatewayDeploymentStageDescription <$>
-      obj .:? "CacheClusterEnabled" <*>
-      obj .:? "CacheClusterSize" <*>
-      obj .:? "CacheDataEncrypted" <*>
-      obj .:? "CacheTtlInSeconds" <*>
-      obj .:? "CachingEnabled" <*>
-      obj .:? "ClientCertificateId" <*>
-      obj .:? "DataTraceEnabled" <*>
-      obj .:? "Description" <*>
-      obj .:? "LoggingLevel" <*>
-      obj .:? "MethodSettings" <*>
-      obj .:? "MetricsEnabled" <*>
-      obj .:? "StageName" <*>
-      obj .:? "ThrottlingBurstLimit" <*>
-      obj .:? "ThrottlingRateLimit" <*>
-      obj .:? "Variables"
+      fmap (fmap (fmap unBool')) (obj .:? "CacheClusterEnabled") <*>
+      (obj .:? "CacheClusterSize") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CacheDataEncrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "CacheTtlInSeconds") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CachingEnabled") <*>
+      (obj .:? "ClientCertificateId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DataTraceEnabled") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "LoggingLevel") <*>
+      (obj .:? "MethodSettings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
+      (obj .:? "StageName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ThrottlingBurstLimit") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "ThrottlingRateLimit") <*>
+      (obj .:? "Variables")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayDeploymentStageDescription' containing
@@ -101,7 +102,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclusterenabled
-agdsdCacheClusterEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool'))
+agdsdCacheClusterEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCacheClusterEnabled = lens _apiGatewayDeploymentStageDescriptionCacheClusterEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheClusterEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclustersize
@@ -109,15 +110,15 @@
 agdsdCacheClusterSize = lens _apiGatewayDeploymentStageDescriptionCacheClusterSize (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheClusterSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachedataencrypted
-agdsdCacheDataEncrypted :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool'))
+agdsdCacheDataEncrypted :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCacheDataEncrypted = lens _apiGatewayDeploymentStageDescriptionCacheDataEncrypted (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheDataEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachettlinseconds
-agdsdCacheTtlInSeconds :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer'))
+agdsdCacheTtlInSeconds :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer))
 agdsdCacheTtlInSeconds = lens _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds (\s a -> s { _apiGatewayDeploymentStageDescriptionCacheTtlInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachingenabled
-agdsdCachingEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool'))
+agdsdCachingEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdCachingEnabled = lens _apiGatewayDeploymentStageDescriptionCachingEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionCachingEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-clientcertificateid
@@ -125,7 +126,7 @@
 agdsdClientCertificateId = lens _apiGatewayDeploymentStageDescriptionClientCertificateId (\s a -> s { _apiGatewayDeploymentStageDescriptionClientCertificateId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-datatraceenabled
-agdsdDataTraceEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool'))
+agdsdDataTraceEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdDataTraceEnabled = lens _apiGatewayDeploymentStageDescriptionDataTraceEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionDataTraceEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-description
@@ -141,7 +142,7 @@
 agdsdMethodSettings = lens _apiGatewayDeploymentStageDescriptionMethodSettings (\s a -> s { _apiGatewayDeploymentStageDescriptionMethodSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-metricsenabled
-agdsdMetricsEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool'))
+agdsdMetricsEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdMetricsEnabled = lens _apiGatewayDeploymentStageDescriptionMetricsEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionMetricsEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-stagename
@@ -149,11 +150,11 @@
 agdsdStageName = lens _apiGatewayDeploymentStageDescriptionStageName (\s a -> s { _apiGatewayDeploymentStageDescriptionStageName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingburstlimit
-agdsdThrottlingBurstLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer'))
+agdsdThrottlingBurstLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer))
 agdsdThrottlingBurstLimit = lens _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit (\s a -> s { _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingratelimit
-agdsdThrottlingRateLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Double'))
+agdsdThrottlingRateLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Double))
 agdsdThrottlingRateLimit = lens _apiGatewayDeploymentStageDescriptionThrottlingRateLimit (\s a -> s { _apiGatewayDeploymentStageDescriptionThrottlingRateLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-variables
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html
 
@@ -19,7 +20,7 @@
 -- 'apiGatewayMethodIntegration' for a more convenient constructor.
 data ApiGatewayMethodIntegration =
   ApiGatewayMethodIntegration
-  { _apiGatewayMethodIntegrationCacheKeyParameters :: Maybe [Val Text]
+  { _apiGatewayMethodIntegrationCacheKeyParameters :: Maybe (ValList Text)
   , _apiGatewayMethodIntegrationCacheNamespace :: Maybe (Val Text)
   , _apiGatewayMethodIntegrationCredentials :: Maybe (Val Text)
   , _apiGatewayMethodIntegrationIntegrationHttpMethod :: Maybe (Val HttpMethod)
@@ -35,31 +36,31 @@
   toJSON ApiGatewayMethodIntegration{..} =
     object $
     catMaybes
-    [ ("CacheKeyParameters" .=) <$> _apiGatewayMethodIntegrationCacheKeyParameters
-    , ("CacheNamespace" .=) <$> _apiGatewayMethodIntegrationCacheNamespace
-    , ("Credentials" .=) <$> _apiGatewayMethodIntegrationCredentials
-    , ("IntegrationHttpMethod" .=) <$> _apiGatewayMethodIntegrationIntegrationHttpMethod
-    , ("IntegrationResponses" .=) <$> _apiGatewayMethodIntegrationIntegrationResponses
-    , ("PassthroughBehavior" .=) <$> _apiGatewayMethodIntegrationPassthroughBehavior
-    , ("RequestParameters" .=) <$> _apiGatewayMethodIntegrationRequestParameters
-    , ("RequestTemplates" .=) <$> _apiGatewayMethodIntegrationRequestTemplates
-    , ("Type" .=) <$> _apiGatewayMethodIntegrationType
-    , ("Uri" .=) <$> _apiGatewayMethodIntegrationUri
+    [ fmap (("CacheKeyParameters",) . toJSON) _apiGatewayMethodIntegrationCacheKeyParameters
+    , fmap (("CacheNamespace",) . toJSON) _apiGatewayMethodIntegrationCacheNamespace
+    , fmap (("Credentials",) . toJSON) _apiGatewayMethodIntegrationCredentials
+    , fmap (("IntegrationHttpMethod",) . toJSON) _apiGatewayMethodIntegrationIntegrationHttpMethod
+    , fmap (("IntegrationResponses",) . toJSON) _apiGatewayMethodIntegrationIntegrationResponses
+    , fmap (("PassthroughBehavior",) . toJSON) _apiGatewayMethodIntegrationPassthroughBehavior
+    , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodIntegrationRequestParameters
+    , fmap (("RequestTemplates",) . toJSON) _apiGatewayMethodIntegrationRequestTemplates
+    , fmap (("Type",) . toJSON) _apiGatewayMethodIntegrationType
+    , fmap (("Uri",) . toJSON) _apiGatewayMethodIntegrationUri
     ]
 
 instance FromJSON ApiGatewayMethodIntegration where
   parseJSON (Object obj) =
     ApiGatewayMethodIntegration <$>
-      obj .:? "CacheKeyParameters" <*>
-      obj .:? "CacheNamespace" <*>
-      obj .:? "Credentials" <*>
-      obj .:? "IntegrationHttpMethod" <*>
-      obj .:? "IntegrationResponses" <*>
-      obj .:? "PassthroughBehavior" <*>
-      obj .:? "RequestParameters" <*>
-      obj .:? "RequestTemplates" <*>
-      obj .:? "Type" <*>
-      obj .:? "Uri"
+      (obj .:? "CacheKeyParameters") <*>
+      (obj .:? "CacheNamespace") <*>
+      (obj .:? "Credentials") <*>
+      (obj .:? "IntegrationHttpMethod") <*>
+      (obj .:? "IntegrationResponses") <*>
+      (obj .:? "PassthroughBehavior") <*>
+      (obj .:? "RequestParameters") <*>
+      (obj .:? "RequestTemplates") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Uri")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethodIntegration' containing required fields
@@ -81,7 +82,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-cachekeyparameters
-agmiCacheKeyParameters :: Lens' ApiGatewayMethodIntegration (Maybe [Val Text])
+agmiCacheKeyParameters :: Lens' ApiGatewayMethodIntegration (Maybe (ValList Text))
 agmiCacheKeyParameters = lens _apiGatewayMethodIntegrationCacheKeyParameters (\s a -> s { _apiGatewayMethodIntegrationCacheKeyParameters = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-cachenamespace
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html
 
@@ -28,19 +29,19 @@
   toJSON ApiGatewayMethodIntegrationResponse{..} =
     object $
     catMaybes
-    [ ("ResponseParameters" .=) <$> _apiGatewayMethodIntegrationResponseResponseParameters
-    , ("ResponseTemplates" .=) <$> _apiGatewayMethodIntegrationResponseResponseTemplates
-    , ("SelectionPattern" .=) <$> _apiGatewayMethodIntegrationResponseSelectionPattern
-    , ("StatusCode" .=) <$> _apiGatewayMethodIntegrationResponseStatusCode
+    [ fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodIntegrationResponseResponseParameters
+    , fmap (("ResponseTemplates",) . toJSON) _apiGatewayMethodIntegrationResponseResponseTemplates
+    , fmap (("SelectionPattern",) . toJSON) _apiGatewayMethodIntegrationResponseSelectionPattern
+    , fmap (("StatusCode",) . toJSON) _apiGatewayMethodIntegrationResponseStatusCode
     ]
 
 instance FromJSON ApiGatewayMethodIntegrationResponse where
   parseJSON (Object obj) =
     ApiGatewayMethodIntegrationResponse <$>
-      obj .:? "ResponseParameters" <*>
-      obj .:? "ResponseTemplates" <*>
-      obj .:? "SelectionPattern" <*>
-      obj .:? "StatusCode"
+      (obj .:? "ResponseParameters") <*>
+      (obj .:? "ResponseTemplates") <*>
+      (obj .:? "SelectionPattern") <*>
+      (obj .:? "StatusCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethodIntegrationResponse' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodMethodResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html
 
@@ -27,17 +28,17 @@
   toJSON ApiGatewayMethodMethodResponse{..} =
     object $
     catMaybes
-    [ ("ResponseModels" .=) <$> _apiGatewayMethodMethodResponseResponseModels
-    , ("ResponseParameters" .=) <$> _apiGatewayMethodMethodResponseResponseParameters
-    , ("StatusCode" .=) <$> _apiGatewayMethodMethodResponseStatusCode
+    [ fmap (("ResponseModels",) . toJSON) _apiGatewayMethodMethodResponseResponseModels
+    , fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodMethodResponseResponseParameters
+    , fmap (("StatusCode",) . toJSON) _apiGatewayMethodMethodResponseStatusCode
     ]
 
 instance FromJSON ApiGatewayMethodMethodResponse where
   parseJSON (Object obj) =
     ApiGatewayMethodMethodResponse <$>
-      obj .:? "ResponseModels" <*>
-      obj .:? "ResponseParameters" <*>
-      obj .:? "StatusCode"
+      (obj .:? "ResponseModels") <*>
+      (obj .:? "ResponseParameters") <*>
+      (obj .:? "StatusCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethodMethodResponse' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayRestApiS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html
 
@@ -28,19 +29,19 @@
   toJSON ApiGatewayRestApiS3Location{..} =
     object $
     catMaybes
-    [ ("Bucket" .=) <$> _apiGatewayRestApiS3LocationBucket
-    , ("ETag" .=) <$> _apiGatewayRestApiS3LocationETag
-    , ("Key" .=) <$> _apiGatewayRestApiS3LocationKey
-    , ("Version" .=) <$> _apiGatewayRestApiS3LocationVersion
+    [ fmap (("Bucket",) . toJSON) _apiGatewayRestApiS3LocationBucket
+    , fmap (("ETag",) . toJSON) _apiGatewayRestApiS3LocationETag
+    , fmap (("Key",) . toJSON) _apiGatewayRestApiS3LocationKey
+    , fmap (("Version",) . toJSON) _apiGatewayRestApiS3LocationVersion
     ]
 
 instance FromJSON ApiGatewayRestApiS3Location where
   parseJSON (Object obj) =
     ApiGatewayRestApiS3Location <$>
-      obj .:? "Bucket" <*>
-      obj .:? "ETag" <*>
-      obj .:? "Key" <*>
-      obj .:? "Version"
+      (obj .:? "Bucket") <*>
+      (obj .:? "ETag") <*>
+      (obj .:? "Key") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayRestApiS3Location' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html
 
@@ -18,47 +19,47 @@
 -- 'apiGatewayStageMethodSetting' for a more convenient constructor.
 data ApiGatewayStageMethodSetting =
   ApiGatewayStageMethodSetting
-  { _apiGatewayStageMethodSettingCacheDataEncrypted :: Maybe (Val Bool')
-  , _apiGatewayStageMethodSettingCacheTtlInSeconds :: Maybe (Val Integer')
-  , _apiGatewayStageMethodSettingCachingEnabled :: Maybe (Val Bool')
-  , _apiGatewayStageMethodSettingDataTraceEnabled :: Maybe (Val Bool')
+  { _apiGatewayStageMethodSettingCacheDataEncrypted :: Maybe (Val Bool)
+  , _apiGatewayStageMethodSettingCacheTtlInSeconds :: Maybe (Val Integer)
+  , _apiGatewayStageMethodSettingCachingEnabled :: Maybe (Val Bool)
+  , _apiGatewayStageMethodSettingDataTraceEnabled :: Maybe (Val Bool)
   , _apiGatewayStageMethodSettingHttpMethod :: Maybe (Val HttpMethod)
   , _apiGatewayStageMethodSettingLoggingLevel :: Maybe (Val LoggingLevel)
-  , _apiGatewayStageMethodSettingMetricsEnabled :: Maybe (Val Bool')
+  , _apiGatewayStageMethodSettingMetricsEnabled :: Maybe (Val Bool)
   , _apiGatewayStageMethodSettingResourcePath :: Maybe (Val Text)
-  , _apiGatewayStageMethodSettingThrottlingBurstLimit :: Maybe (Val Integer')
-  , _apiGatewayStageMethodSettingThrottlingRateLimit :: Maybe (Val Double')
+  , _apiGatewayStageMethodSettingThrottlingBurstLimit :: Maybe (Val Integer)
+  , _apiGatewayStageMethodSettingThrottlingRateLimit :: Maybe (Val Double)
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayStageMethodSetting where
   toJSON ApiGatewayStageMethodSetting{..} =
     object $
     catMaybes
-    [ ("CacheDataEncrypted" .=) <$> _apiGatewayStageMethodSettingCacheDataEncrypted
-    , ("CacheTtlInSeconds" .=) <$> _apiGatewayStageMethodSettingCacheTtlInSeconds
-    , ("CachingEnabled" .=) <$> _apiGatewayStageMethodSettingCachingEnabled
-    , ("DataTraceEnabled" .=) <$> _apiGatewayStageMethodSettingDataTraceEnabled
-    , ("HttpMethod" .=) <$> _apiGatewayStageMethodSettingHttpMethod
-    , ("LoggingLevel" .=) <$> _apiGatewayStageMethodSettingLoggingLevel
-    , ("MetricsEnabled" .=) <$> _apiGatewayStageMethodSettingMetricsEnabled
-    , ("ResourcePath" .=) <$> _apiGatewayStageMethodSettingResourcePath
-    , ("ThrottlingBurstLimit" .=) <$> _apiGatewayStageMethodSettingThrottlingBurstLimit
-    , ("ThrottlingRateLimit" .=) <$> _apiGatewayStageMethodSettingThrottlingRateLimit
+    [ fmap (("CacheDataEncrypted",) . toJSON . fmap Bool') _apiGatewayStageMethodSettingCacheDataEncrypted
+    , fmap (("CacheTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayStageMethodSettingCacheTtlInSeconds
+    , fmap (("CachingEnabled",) . toJSON . fmap Bool') _apiGatewayStageMethodSettingCachingEnabled
+    , fmap (("DataTraceEnabled",) . toJSON . fmap Bool') _apiGatewayStageMethodSettingDataTraceEnabled
+    , fmap (("HttpMethod",) . toJSON) _apiGatewayStageMethodSettingHttpMethod
+    , fmap (("LoggingLevel",) . toJSON) _apiGatewayStageMethodSettingLoggingLevel
+    , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayStageMethodSettingMetricsEnabled
+    , fmap (("ResourcePath",) . toJSON) _apiGatewayStageMethodSettingResourcePath
+    , fmap (("ThrottlingBurstLimit",) . toJSON . fmap Integer') _apiGatewayStageMethodSettingThrottlingBurstLimit
+    , fmap (("ThrottlingRateLimit",) . toJSON . fmap Double') _apiGatewayStageMethodSettingThrottlingRateLimit
     ]
 
 instance FromJSON ApiGatewayStageMethodSetting where
   parseJSON (Object obj) =
     ApiGatewayStageMethodSetting <$>
-      obj .:? "CacheDataEncrypted" <*>
-      obj .:? "CacheTtlInSeconds" <*>
-      obj .:? "CachingEnabled" <*>
-      obj .:? "DataTraceEnabled" <*>
-      obj .:? "HttpMethod" <*>
-      obj .:? "LoggingLevel" <*>
-      obj .:? "MetricsEnabled" <*>
-      obj .:? "ResourcePath" <*>
-      obj .:? "ThrottlingBurstLimit" <*>
-      obj .:? "ThrottlingRateLimit"
+      fmap (fmap (fmap unBool')) (obj .:? "CacheDataEncrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "CacheTtlInSeconds") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CachingEnabled") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DataTraceEnabled") <*>
+      (obj .:? "HttpMethod") <*>
+      (obj .:? "LoggingLevel") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
+      (obj .:? "ResourcePath") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ThrottlingBurstLimit") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "ThrottlingRateLimit")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayStageMethodSetting' containing required fields
@@ -80,19 +81,19 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachedataencrypted
-agsmsCacheDataEncrypted :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool'))
+agsmsCacheDataEncrypted :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool))
 agsmsCacheDataEncrypted = lens _apiGatewayStageMethodSettingCacheDataEncrypted (\s a -> s { _apiGatewayStageMethodSettingCacheDataEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachettlinseconds
-agsmsCacheTtlInSeconds :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Integer'))
+agsmsCacheTtlInSeconds :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Integer))
 agsmsCacheTtlInSeconds = lens _apiGatewayStageMethodSettingCacheTtlInSeconds (\s a -> s { _apiGatewayStageMethodSettingCacheTtlInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachingenabled
-agsmsCachingEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool'))
+agsmsCachingEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool))
 agsmsCachingEnabled = lens _apiGatewayStageMethodSettingCachingEnabled (\s a -> s { _apiGatewayStageMethodSettingCachingEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-datatraceenabled
-agsmsDataTraceEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool'))
+agsmsDataTraceEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool))
 agsmsDataTraceEnabled = lens _apiGatewayStageMethodSettingDataTraceEnabled (\s a -> s { _apiGatewayStageMethodSettingDataTraceEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-httpmethod
@@ -104,7 +105,7 @@
 agsmsLoggingLevel = lens _apiGatewayStageMethodSettingLoggingLevel (\s a -> s { _apiGatewayStageMethodSettingLoggingLevel = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-metricsenabled
-agsmsMetricsEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool'))
+agsmsMetricsEnabled :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Bool))
 agsmsMetricsEnabled = lens _apiGatewayStageMethodSettingMetricsEnabled (\s a -> s { _apiGatewayStageMethodSettingMetricsEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-resourcepath
@@ -112,9 +113,9 @@
 agsmsResourcePath = lens _apiGatewayStageMethodSettingResourcePath (\s a -> s { _apiGatewayStageMethodSettingResourcePath = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingburstlimit
-agsmsThrottlingBurstLimit :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Integer'))
+agsmsThrottlingBurstLimit :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Integer))
 agsmsThrottlingBurstLimit = lens _apiGatewayStageMethodSettingThrottlingBurstLimit (\s a -> s { _apiGatewayStageMethodSettingThrottlingBurstLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingratelimit
-agsmsThrottlingRateLimit :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Double'))
+agsmsThrottlingRateLimit :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Double))
 agsmsThrottlingRateLimit = lens _apiGatewayStageMethodSettingThrottlingRateLimit (\s a -> s { _apiGatewayStageMethodSettingThrottlingRateLimit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanApiStage.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html
 
@@ -26,15 +27,15 @@
   toJSON ApiGatewayUsagePlanApiStage{..} =
     object $
     catMaybes
-    [ ("ApiId" .=) <$> _apiGatewayUsagePlanApiStageApiId
-    , ("Stage" .=) <$> _apiGatewayUsagePlanApiStageStage
+    [ fmap (("ApiId",) . toJSON) _apiGatewayUsagePlanApiStageApiId
+    , fmap (("Stage",) . toJSON) _apiGatewayUsagePlanApiStageStage
     ]
 
 instance FromJSON ApiGatewayUsagePlanApiStage where
   parseJSON (Object obj) =
     ApiGatewayUsagePlanApiStage <$>
-      obj .:? "ApiId" <*>
-      obj .:? "Stage"
+      (obj .:? "ApiId") <*>
+      (obj .:? "Stage")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayUsagePlanApiStage' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html
 
@@ -18,8 +19,8 @@
 -- 'apiGatewayUsagePlanQuotaSettings' for a more convenient constructor.
 data ApiGatewayUsagePlanQuotaSettings =
   ApiGatewayUsagePlanQuotaSettings
-  { _apiGatewayUsagePlanQuotaSettingsLimit :: Maybe (Val Integer')
-  , _apiGatewayUsagePlanQuotaSettingsOffset :: Maybe (Val Integer')
+  { _apiGatewayUsagePlanQuotaSettingsLimit :: Maybe (Val Integer)
+  , _apiGatewayUsagePlanQuotaSettingsOffset :: Maybe (Val Integer)
   , _apiGatewayUsagePlanQuotaSettingsPeriod :: Maybe (Val Period)
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON ApiGatewayUsagePlanQuotaSettings{..} =
     object $
     catMaybes
-    [ ("Limit" .=) <$> _apiGatewayUsagePlanQuotaSettingsLimit
-    , ("Offset" .=) <$> _apiGatewayUsagePlanQuotaSettingsOffset
-    , ("Period" .=) <$> _apiGatewayUsagePlanQuotaSettingsPeriod
+    [ fmap (("Limit",) . toJSON . fmap Integer') _apiGatewayUsagePlanQuotaSettingsLimit
+    , fmap (("Offset",) . toJSON . fmap Integer') _apiGatewayUsagePlanQuotaSettingsOffset
+    , fmap (("Period",) . toJSON) _apiGatewayUsagePlanQuotaSettingsPeriod
     ]
 
 instance FromJSON ApiGatewayUsagePlanQuotaSettings where
   parseJSON (Object obj) =
     ApiGatewayUsagePlanQuotaSettings <$>
-      obj .:? "Limit" <*>
-      obj .:? "Offset" <*>
-      obj .:? "Period"
+      fmap (fmap (fmap unInteger')) (obj .:? "Limit") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Offset") <*>
+      (obj .:? "Period")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayUsagePlanQuotaSettings' containing required
@@ -52,11 +53,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-limit
-agupqsLimit :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer'))
+agupqsLimit :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer))
 agupqsLimit = lens _apiGatewayUsagePlanQuotaSettingsLimit (\s a -> s { _apiGatewayUsagePlanQuotaSettingsLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-offset
-agupqsOffset :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer'))
+agupqsOffset :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Integer))
 agupqsOffset = lens _apiGatewayUsagePlanQuotaSettingsOffset (\s a -> s { _apiGatewayUsagePlanQuotaSettingsOffset = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-period
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanThrottleSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html
 
@@ -18,23 +19,23 @@
 -- 'apiGatewayUsagePlanThrottleSettings' for a more convenient constructor.
 data ApiGatewayUsagePlanThrottleSettings =
   ApiGatewayUsagePlanThrottleSettings
-  { _apiGatewayUsagePlanThrottleSettingsBurstLimit :: Maybe (Val Integer')
-  , _apiGatewayUsagePlanThrottleSettingsRateLimit :: Maybe (Val Double')
+  { _apiGatewayUsagePlanThrottleSettingsBurstLimit :: Maybe (Val Integer)
+  , _apiGatewayUsagePlanThrottleSettingsRateLimit :: Maybe (Val Double)
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayUsagePlanThrottleSettings where
   toJSON ApiGatewayUsagePlanThrottleSettings{..} =
     object $
     catMaybes
-    [ ("BurstLimit" .=) <$> _apiGatewayUsagePlanThrottleSettingsBurstLimit
-    , ("RateLimit" .=) <$> _apiGatewayUsagePlanThrottleSettingsRateLimit
+    [ fmap (("BurstLimit",) . toJSON . fmap Integer') _apiGatewayUsagePlanThrottleSettingsBurstLimit
+    , fmap (("RateLimit",) . toJSON . fmap Double') _apiGatewayUsagePlanThrottleSettingsRateLimit
     ]
 
 instance FromJSON ApiGatewayUsagePlanThrottleSettings where
   parseJSON (Object obj) =
     ApiGatewayUsagePlanThrottleSettings <$>
-      obj .:? "BurstLimit" <*>
-      obj .:? "RateLimit"
+      fmap (fmap (fmap unInteger')) (obj .:? "BurstLimit") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "RateLimit")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayUsagePlanThrottleSettings' containing required
@@ -48,9 +49,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html#cfn-apigateway-usageplan-throttlesettings-burstlimit
-aguptsBurstLimit :: Lens' ApiGatewayUsagePlanThrottleSettings (Maybe (Val Integer'))
+aguptsBurstLimit :: Lens' ApiGatewayUsagePlanThrottleSettings (Maybe (Val Integer))
 aguptsBurstLimit = lens _apiGatewayUsagePlanThrottleSettingsBurstLimit (\s a -> s { _apiGatewayUsagePlanThrottleSettingsBurstLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html#cfn-apigateway-usageplan-throttlesettings-ratelimit
-aguptsRateLimit :: Lens' ApiGatewayUsagePlanThrottleSettings (Maybe (Val Double'))
+aguptsRateLimit :: Lens' ApiGatewayUsagePlanThrottleSettings (Maybe (Val Double))
 aguptsRateLimit = lens _apiGatewayUsagePlanThrottleSettingsRateLimit (\s a -> s { _apiGatewayUsagePlanThrottleSettingsRateLimit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html
 
@@ -31,21 +32,21 @@
   toJSON ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification{..} =
     object $
     catMaybes
-    [ ("Dimensions" .=) <$> _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationDimensions
-    , Just ("MetricName" .= _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationMetricName)
-    , Just ("Namespace" .= _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationNamespace)
-    , Just ("Statistic" .= _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationStatistic)
-    , ("Unit" .=) <$> _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationUnit
+    [ fmap (("Dimensions",) . toJSON) _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationDimensions
+    , (Just . ("MetricName",) . toJSON) _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationMetricName
+    , (Just . ("Namespace",) . toJSON) _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationNamespace
+    , (Just . ("Statistic",) . toJSON) _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationStatistic
+    , fmap (("Unit",) . toJSON) _applicationAutoScalingScalingPolicyCustomizedMetricSpecificationUnit
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification <$>
-      obj .:? "Dimensions" <*>
-      obj .: "MetricName" <*>
-      obj .: "Namespace" <*>
-      obj .: "Statistic" <*>
-      obj .:? "Unit"
+      (obj .:? "Dimensions") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Namespace") <*>
+      (obj .: "Statistic") <*>
+      (obj .:? "Unit")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html
 
@@ -28,15 +29,15 @@
   toJSON ApplicationAutoScalingScalingPolicyMetricDimension{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _applicationAutoScalingScalingPolicyMetricDimensionName)
-    , Just ("Value" .= _applicationAutoScalingScalingPolicyMetricDimensionValue)
+    [ (Just . ("Name",) . toJSON) _applicationAutoScalingScalingPolicyMetricDimensionName
+    , (Just . ("Value",) . toJSON) _applicationAutoScalingScalingPolicyMetricDimensionValue
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyMetricDimension where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyMetricDimension <$>
-      obj .: "Name" <*>
-      obj .: "Value"
+      (obj .: "Name") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApplicationAutoScalingScalingPolicyMetricDimension'
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html
 
@@ -28,15 +29,15 @@
   toJSON ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification{..} =
     object $
     catMaybes
-    [ Just ("PredefinedMetricType" .= _applicationAutoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType)
-    , ("ResourceLabel" .=) <$> _applicationAutoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel
+    [ (Just . ("PredefinedMetricType",) . toJSON) _applicationAutoScalingScalingPolicyPredefinedMetricSpecificationPredefinedMetricType
+    , fmap (("ResourceLabel",) . toJSON) _applicationAutoScalingScalingPolicyPredefinedMetricSpecificationResourceLabel
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification <$>
-      obj .: "PredefinedMetricType" <*>
-      obj .:? "ResourceLabel"
+      (obj .: "PredefinedMetricType") <*>
+      (obj .:? "ResourceLabel")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepAdjustment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html
 
@@ -20,32 +21,32 @@
 -- constructor.
 data ApplicationAutoScalingScalingPolicyStepAdjustment =
   ApplicationAutoScalingScalingPolicyStepAdjustment
-  { _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound :: Maybe (Val Double')
-  , _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound :: Maybe (Val Double')
-  , _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment :: Val Integer'
+  { _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound :: Maybe (Val Double)
+  , _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound :: Maybe (Val Double)
+  , _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON ApplicationAutoScalingScalingPolicyStepAdjustment where
   toJSON ApplicationAutoScalingScalingPolicyStepAdjustment{..} =
     object $
     catMaybes
-    [ ("MetricIntervalLowerBound" .=) <$> _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound
-    , ("MetricIntervalUpperBound" .=) <$> _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound
-    , Just ("ScalingAdjustment" .= _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment)
+    [ fmap (("MetricIntervalLowerBound",) . toJSON . fmap Double') _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound
+    , fmap (("MetricIntervalUpperBound",) . toJSON . fmap Double') _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound
+    , (Just . ("ScalingAdjustment",) . toJSON . fmap Integer') _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyStepAdjustment where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyStepAdjustment <$>
-      obj .:? "MetricIntervalLowerBound" <*>
-      obj .:? "MetricIntervalUpperBound" <*>
-      obj .: "ScalingAdjustment"
+      fmap (fmap (fmap unDouble')) (obj .:? "MetricIntervalLowerBound") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MetricIntervalUpperBound") <*>
+      fmap (fmap unInteger') (obj .: "ScalingAdjustment")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApplicationAutoScalingScalingPolicyStepAdjustment'
 -- containing required fields as arguments.
 applicationAutoScalingScalingPolicyStepAdjustment
-  :: Val Integer' -- ^ 'aasspsaScalingAdjustment'
+  :: Val Integer -- ^ 'aasspsaScalingAdjustment'
   -> ApplicationAutoScalingScalingPolicyStepAdjustment
 applicationAutoScalingScalingPolicyStepAdjustment scalingAdjustmentarg =
   ApplicationAutoScalingScalingPolicyStepAdjustment
@@ -55,13 +56,13 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-metricintervallowerbound
-aasspsaMetricIntervalLowerBound :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Maybe (Val Double'))
+aasspsaMetricIntervalLowerBound :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Maybe (Val Double))
 aasspsaMetricIntervalLowerBound = lens _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound (\s a -> s { _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-metricintervalupperbound
-aasspsaMetricIntervalUpperBound :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Maybe (Val Double'))
+aasspsaMetricIntervalUpperBound :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Maybe (Val Double))
 aasspsaMetricIntervalUpperBound = lens _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound (\s a -> s { _applicationAutoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-scalingadjustment
-aasspsaScalingAdjustment :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Val Integer')
+aasspsaScalingAdjustment :: Lens' ApplicationAutoScalingScalingPolicyStepAdjustment (Val Integer)
 aasspsaScalingAdjustment = lens _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment (\s a -> s { _applicationAutoScalingScalingPolicyStepAdjustmentScalingAdjustment = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html
 
@@ -21,9 +22,9 @@
 data ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration =
   ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
   { _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationAdjustmentType :: Maybe (Val Text)
-  , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown :: Maybe (Val Integer')
+  , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown :: Maybe (Val Integer)
   , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMetricAggregationType :: Maybe (Val Text)
-  , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude :: Maybe (Val Integer')
+  , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude :: Maybe (Val Integer)
   , _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationStepAdjustments :: Maybe [ApplicationAutoScalingScalingPolicyStepAdjustment]
   } deriving (Show, Eq)
 
@@ -31,21 +32,21 @@
   toJSON ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration{..} =
     object $
     catMaybes
-    [ ("AdjustmentType" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationAdjustmentType
-    , ("Cooldown" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown
-    , ("MetricAggregationType" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMetricAggregationType
-    , ("MinAdjustmentMagnitude" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude
-    , ("StepAdjustments" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationStepAdjustments
+    [ fmap (("AdjustmentType",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationAdjustmentType
+    , fmap (("Cooldown",) . toJSON . fmap Integer') _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown
+    , fmap (("MetricAggregationType",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMetricAggregationType
+    , fmap (("MinAdjustmentMagnitude",) . toJSON . fmap Integer') _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude
+    , fmap (("StepAdjustments",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationStepAdjustments
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration <$>
-      obj .:? "AdjustmentType" <*>
-      obj .:? "Cooldown" <*>
-      obj .:? "MetricAggregationType" <*>
-      obj .:? "MinAdjustmentMagnitude" <*>
-      obj .:? "StepAdjustments"
+      (obj .:? "AdjustmentType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Cooldown") <*>
+      (obj .:? "MetricAggregationType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinAdjustmentMagnitude") <*>
+      (obj .:? "StepAdjustments")
   parseJSON _ = mempty
 
 -- | Constructor for
@@ -67,7 +68,7 @@
 aasspsspcAdjustmentType = lens _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationAdjustmentType (\s a -> s { _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationAdjustmentType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-cooldown
-aasspsspcCooldown :: Lens' ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration (Maybe (Val Integer'))
+aasspsspcCooldown :: Lens' ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration (Maybe (Val Integer))
 aasspsspcCooldown = lens _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown (\s a -> s { _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationCooldown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-metricaggregationtype
@@ -75,7 +76,7 @@
 aasspsspcMetricAggregationType = lens _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMetricAggregationType (\s a -> s { _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMetricAggregationType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-minadjustmentmagnitude
-aasspsspcMinAdjustmentMagnitude :: Lens' ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration (Maybe (Val Integer'))
+aasspsspcMinAdjustmentMagnitude :: Lens' ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration (Maybe (Val Integer))
 aasspsspcMinAdjustmentMagnitude = lens _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude (\s a -> s { _applicationAutoScalingScalingPolicyStepScalingPolicyConfigurationMinAdjustmentMagnitude = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustments
diff --git a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html
 
@@ -24,37 +25,37 @@
   ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
   { _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecification :: Maybe ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification
   , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecification :: Maybe ApplicationAutoScalingScalingPolicyPredefinedMetricSpecification
-  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown :: Maybe (Val Integer')
-  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown :: Maybe (Val Integer')
-  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue :: Val Double'
+  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown :: Maybe (Val Integer)
+  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown :: Maybe (Val Integer)
+  , _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue :: Val Double
   } deriving (Show, Eq)
 
 instance ToJSON ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration where
   toJSON ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration{..} =
     object $
     catMaybes
-    [ ("CustomizedMetricSpecification" .=) <$> _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecification
-    , ("PredefinedMetricSpecification" .=) <$> _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecification
-    , ("ScaleInCooldown" .=) <$> _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown
-    , ("ScaleOutCooldown" .=) <$> _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown
-    , Just ("TargetValue" .= _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue)
+    [ fmap (("CustomizedMetricSpecification",) . toJSON) _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecification
+    , fmap (("PredefinedMetricSpecification",) . toJSON) _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecification
+    , fmap (("ScaleInCooldown",) . toJSON . fmap Integer') _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown
+    , fmap (("ScaleOutCooldown",) . toJSON . fmap Integer') _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown
+    , (Just . ("TargetValue",) . toJSON . fmap Double') _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration <$>
-      obj .:? "CustomizedMetricSpecification" <*>
-      obj .:? "PredefinedMetricSpecification" <*>
-      obj .:? "ScaleInCooldown" <*>
-      obj .:? "ScaleOutCooldown" <*>
-      obj .: "TargetValue"
+      (obj .:? "CustomizedMetricSpecification") <*>
+      (obj .:? "PredefinedMetricSpecification") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ScaleInCooldown") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ScaleOutCooldown") <*>
+      fmap (fmap unDouble') (obj .: "TargetValue")
   parseJSON _ = mempty
 
 -- | Constructor for
 -- 'ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration'
 -- containing required fields as arguments.
 applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
-  :: Val Double' -- ^ 'aasspttspcTargetValue'
+  :: Val Double -- ^ 'aasspttspcTargetValue'
   -> ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
 applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration targetValuearg =
   ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
@@ -74,13 +75,13 @@
 aasspttspcPredefinedMetricSpecification = lens _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecification (\s a -> s { _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleincooldown
-aasspttspcScaleInCooldown :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Maybe (Val Integer'))
+aasspttspcScaleInCooldown :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Maybe (Val Integer))
 aasspttspcScaleInCooldown = lens _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown (\s a -> s { _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleInCooldown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleoutcooldown
-aasspttspcScaleOutCooldown :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Maybe (Val Integer'))
+aasspttspcScaleOutCooldown :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Maybe (Val Integer))
 aasspttspcScaleOutCooldown = lens _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown (\s a -> s { _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationScaleOutCooldown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-targetvalue
-aasspttspcTargetValue :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Val Double')
+aasspttspcTargetValue :: Lens' ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration (Val Double)
 aasspttspcTargetValue = lens _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue (\s a -> s { _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfigurationTargetValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMetricsCollection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html
 
@@ -21,22 +22,22 @@
 data AutoScalingAutoScalingGroupMetricsCollection =
   AutoScalingAutoScalingGroupMetricsCollection
   { _autoScalingAutoScalingGroupMetricsCollectionGranularity :: Val Text
-  , _autoScalingAutoScalingGroupMetricsCollectionMetrics :: Maybe [Val Text]
+  , _autoScalingAutoScalingGroupMetricsCollectionMetrics :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON AutoScalingAutoScalingGroupMetricsCollection where
   toJSON AutoScalingAutoScalingGroupMetricsCollection{..} =
     object $
     catMaybes
-    [ Just ("Granularity" .= _autoScalingAutoScalingGroupMetricsCollectionGranularity)
-    , ("Metrics" .=) <$> _autoScalingAutoScalingGroupMetricsCollectionMetrics
+    [ (Just . ("Granularity",) . toJSON) _autoScalingAutoScalingGroupMetricsCollectionGranularity
+    , fmap (("Metrics",) . toJSON) _autoScalingAutoScalingGroupMetricsCollectionMetrics
     ]
 
 instance FromJSON AutoScalingAutoScalingGroupMetricsCollection where
   parseJSON (Object obj) =
     AutoScalingAutoScalingGroupMetricsCollection <$>
-      obj .: "Granularity" <*>
-      obj .:? "Metrics"
+      (obj .: "Granularity") <*>
+      (obj .:? "Metrics")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingAutoScalingGroupMetricsCollection' containing
@@ -55,5 +56,5 @@
 asasgmcGranularity = lens _autoScalingAutoScalingGroupMetricsCollectionGranularity (\s a -> s { _autoScalingAutoScalingGroupMetricsCollectionGranularity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html#cfn-as-metricscollection-metrics
-asasgmcMetrics :: Lens' AutoScalingAutoScalingGroupMetricsCollection (Maybe [Val Text])
+asasgmcMetrics :: Lens' AutoScalingAutoScalingGroupMetricsCollection (Maybe (ValList Text))
 asasgmcMetrics = lens _autoScalingAutoScalingGroupMetricsCollectionMetrics (\s a -> s { _autoScalingAutoScalingGroupMetricsCollectionMetrics = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupNotificationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html
 
@@ -20,7 +21,7 @@
 -- convenient constructor.
 data AutoScalingAutoScalingGroupNotificationConfiguration =
   AutoScalingAutoScalingGroupNotificationConfiguration
-  { _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes :: Maybe [Val Text]
+  { _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupNotificationConfigurationTopicARN :: Val Text
   } deriving (Show, Eq)
 
@@ -28,15 +29,15 @@
   toJSON AutoScalingAutoScalingGroupNotificationConfiguration{..} =
     object $
     catMaybes
-    [ ("NotificationTypes" .=) <$> _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes
-    , Just ("TopicARN" .= _autoScalingAutoScalingGroupNotificationConfigurationTopicARN)
+    [ fmap (("NotificationTypes",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes
+    , (Just . ("TopicARN",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurationTopicARN
     ]
 
 instance FromJSON AutoScalingAutoScalingGroupNotificationConfiguration where
   parseJSON (Object obj) =
     AutoScalingAutoScalingGroupNotificationConfiguration <$>
-      obj .:? "NotificationTypes" <*>
-      obj .: "TopicARN"
+      (obj .:? "NotificationTypes") <*>
+      (obj .: "TopicARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingAutoScalingGroupNotificationConfiguration'
@@ -51,7 +52,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html#cfn-as-group-notificationconfigurations-notificationtypes
-asasgncNotificationTypes :: Lens' AutoScalingAutoScalingGroupNotificationConfiguration (Maybe [Val Text])
+asasgncNotificationTypes :: Lens' AutoScalingAutoScalingGroupNotificationConfiguration (Maybe (ValList Text))
 asasgncNotificationTypes = lens _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes (\s a -> s { _autoScalingAutoScalingGroupNotificationConfigurationNotificationTypes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations-topicarn
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupTagProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html
 
@@ -20,7 +21,7 @@
 data AutoScalingAutoScalingGroupTagProperty =
   AutoScalingAutoScalingGroupTagProperty
   { _autoScalingAutoScalingGroupTagPropertyKey :: Val Text
-  , _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch :: Val Bool'
+  , _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch :: Val Bool
   , _autoScalingAutoScalingGroupTagPropertyValue :: Val Text
   } deriving (Show, Eq)
 
@@ -28,24 +29,24 @@
   toJSON AutoScalingAutoScalingGroupTagProperty{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _autoScalingAutoScalingGroupTagPropertyKey)
-    , Just ("PropagateAtLaunch" .= _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch)
-    , Just ("Value" .= _autoScalingAutoScalingGroupTagPropertyValue)
+    [ (Just . ("Key",) . toJSON) _autoScalingAutoScalingGroupTagPropertyKey
+    , (Just . ("PropagateAtLaunch",) . toJSON . fmap Bool') _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch
+    , (Just . ("Value",) . toJSON) _autoScalingAutoScalingGroupTagPropertyValue
     ]
 
 instance FromJSON AutoScalingAutoScalingGroupTagProperty where
   parseJSON (Object obj) =
     AutoScalingAutoScalingGroupTagProperty <$>
-      obj .: "Key" <*>
-      obj .: "PropagateAtLaunch" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      fmap (fmap unBool') (obj .: "PropagateAtLaunch") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingAutoScalingGroupTagProperty' containing
 -- required fields as arguments.
 autoScalingAutoScalingGroupTagProperty
   :: Val Text -- ^ 'asasgtpKey'
-  -> Val Bool' -- ^ 'asasgtpPropagateAtLaunch'
+  -> Val Bool -- ^ 'asasgtpPropagateAtLaunch'
   -> Val Text -- ^ 'asasgtpValue'
   -> AutoScalingAutoScalingGroupTagProperty
 autoScalingAutoScalingGroupTagProperty keyarg propagateAtLauncharg valuearg =
@@ -60,7 +61,7 @@
 asasgtpKey = lens _autoScalingAutoScalingGroupTagPropertyKey (\s a -> s { _autoScalingAutoScalingGroupTagPropertyKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html#cfn-as-tags-PropagateAtLaunch
-asasgtpPropagateAtLaunch :: Lens' AutoScalingAutoScalingGroupTagProperty (Val Bool')
+asasgtpPropagateAtLaunch :: Lens' AutoScalingAutoScalingGroupTagProperty (Val Bool)
 asasgtpPropagateAtLaunch = lens _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch (\s a -> s { _autoScalingAutoScalingGroupTagPropertyPropagateAtLaunch = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html#cfn-as-tags-Value
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html
 
@@ -19,11 +20,11 @@
 -- constructor.
 data AutoScalingLaunchConfigurationBlockDevice =
   AutoScalingLaunchConfigurationBlockDevice
-  { _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination :: Maybe (Val Bool')
-  , _autoScalingLaunchConfigurationBlockDeviceEncrypted :: Maybe (Val Bool')
-  , _autoScalingLaunchConfigurationBlockDeviceIops :: Maybe (Val Integer')
+  { _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination :: Maybe (Val Bool)
+  , _autoScalingLaunchConfigurationBlockDeviceEncrypted :: Maybe (Val Bool)
+  , _autoScalingLaunchConfigurationBlockDeviceIops :: Maybe (Val Integer)
   , _autoScalingLaunchConfigurationBlockDeviceSnapshotId :: Maybe (Val Text)
-  , _autoScalingLaunchConfigurationBlockDeviceVolumeSize :: Maybe (Val Integer')
+  , _autoScalingLaunchConfigurationBlockDeviceVolumeSize :: Maybe (Val Integer)
   , _autoScalingLaunchConfigurationBlockDeviceVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -31,23 +32,23 @@
   toJSON AutoScalingLaunchConfigurationBlockDevice{..} =
     object $
     catMaybes
-    [ ("DeleteOnTermination" .=) <$> _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination
-    , ("Encrypted" .=) <$> _autoScalingLaunchConfigurationBlockDeviceEncrypted
-    , ("Iops" .=) <$> _autoScalingLaunchConfigurationBlockDeviceIops
-    , ("SnapshotId" .=) <$> _autoScalingLaunchConfigurationBlockDeviceSnapshotId
-    , ("VolumeSize" .=) <$> _autoScalingLaunchConfigurationBlockDeviceVolumeSize
-    , ("VolumeType" .=) <$> _autoScalingLaunchConfigurationBlockDeviceVolumeType
+    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination
+    , fmap (("Encrypted",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationBlockDeviceEncrypted
+    , fmap (("Iops",) . toJSON . fmap Integer') _autoScalingLaunchConfigurationBlockDeviceIops
+    , fmap (("SnapshotId",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceSnapshotId
+    , fmap (("VolumeSize",) . toJSON . fmap Integer') _autoScalingLaunchConfigurationBlockDeviceVolumeSize
+    , fmap (("VolumeType",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceVolumeType
     ]
 
 instance FromJSON AutoScalingLaunchConfigurationBlockDevice where
   parseJSON (Object obj) =
     AutoScalingLaunchConfigurationBlockDevice <$>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Encrypted" <*>
-      obj .:? "Iops" <*>
-      obj .:? "SnapshotId" <*>
-      obj .:? "VolumeSize" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Encrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "SnapshotId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumeSize") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingLaunchConfigurationBlockDevice' containing
@@ -65,15 +66,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-deleteonterm
-aslcbdDeleteOnTermination :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Bool'))
+aslcbdDeleteOnTermination :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Bool))
 aslcbdDeleteOnTermination = lens _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-encrypted
-aslcbdEncrypted :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Bool'))
+aslcbdEncrypted :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Bool))
 aslcbdEncrypted = lens _autoScalingLaunchConfigurationBlockDeviceEncrypted (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-iops
-aslcbdIops :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Integer'))
+aslcbdIops :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Integer))
 aslcbdIops = lens _autoScalingLaunchConfigurationBlockDeviceIops (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-snapshotid
@@ -81,7 +82,7 @@
 aslcbdSnapshotId = lens _autoScalingLaunchConfigurationBlockDeviceSnapshotId (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceSnapshotId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-volumesize
-aslcbdVolumeSize :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Integer'))
+aslcbdVolumeSize :: Lens' AutoScalingLaunchConfigurationBlockDevice (Maybe (Val Integer))
 aslcbdVolumeSize = lens _autoScalingLaunchConfigurationBlockDeviceVolumeSize (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceVolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingLaunchConfigurationBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html
 
@@ -22,7 +23,7 @@
   AutoScalingLaunchConfigurationBlockDeviceMapping
   { _autoScalingLaunchConfigurationBlockDeviceMappingDeviceName :: Val Text
   , _autoScalingLaunchConfigurationBlockDeviceMappingEbs :: Maybe AutoScalingLaunchConfigurationBlockDevice
-  , _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice :: Maybe (Val Bool')
+  , _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice :: Maybe (Val Bool)
   , _autoScalingLaunchConfigurationBlockDeviceMappingVirtualName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,19 +31,19 @@
   toJSON AutoScalingLaunchConfigurationBlockDeviceMapping{..} =
     object $
     catMaybes
-    [ Just ("DeviceName" .= _autoScalingLaunchConfigurationBlockDeviceMappingDeviceName)
-    , ("Ebs" .=) <$> _autoScalingLaunchConfigurationBlockDeviceMappingEbs
-    , ("NoDevice" .=) <$> _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice
-    , ("VirtualName" .=) <$> _autoScalingLaunchConfigurationBlockDeviceMappingVirtualName
+    [ (Just . ("DeviceName",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappingDeviceName
+    , fmap (("Ebs",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappingEbs
+    , fmap (("NoDevice",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice
+    , fmap (("VirtualName",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappingVirtualName
     ]
 
 instance FromJSON AutoScalingLaunchConfigurationBlockDeviceMapping where
   parseJSON (Object obj) =
     AutoScalingLaunchConfigurationBlockDeviceMapping <$>
-      obj .: "DeviceName" <*>
-      obj .:? "Ebs" <*>
-      obj .:? "NoDevice" <*>
-      obj .:? "VirtualName"
+      (obj .: "DeviceName") <*>
+      (obj .:? "Ebs") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "NoDevice") <*>
+      (obj .:? "VirtualName")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingLaunchConfigurationBlockDeviceMapping'
@@ -67,7 +68,7 @@
 aslcbdmEbs = lens _autoScalingLaunchConfigurationBlockDeviceMappingEbs (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceMappingEbs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-nodevice
-aslcbdmNoDevice :: Lens' AutoScalingLaunchConfigurationBlockDeviceMapping (Maybe (Val Bool'))
+aslcbdmNoDevice :: Lens' AutoScalingLaunchConfigurationBlockDeviceMapping (Maybe (Val Bool))
 aslcbdmNoDevice = lens _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice (\s a -> s { _autoScalingLaunchConfigurationBlockDeviceMappingNoDevice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-virtualname
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
--- a/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingScalingPolicyStepAdjustment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html
 
@@ -19,32 +20,32 @@
 -- constructor.
 data AutoScalingScalingPolicyStepAdjustment =
   AutoScalingScalingPolicyStepAdjustment
-  { _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound :: Maybe (Val Double')
-  , _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound :: Maybe (Val Double')
-  , _autoScalingScalingPolicyStepAdjustmentScalingAdjustment :: Val Integer'
+  { _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound :: Maybe (Val Double)
+  , _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound :: Maybe (Val Double)
+  , _autoScalingScalingPolicyStepAdjustmentScalingAdjustment :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON AutoScalingScalingPolicyStepAdjustment where
   toJSON AutoScalingScalingPolicyStepAdjustment{..} =
     object $
     catMaybes
-    [ ("MetricIntervalLowerBound" .=) <$> _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound
-    , ("MetricIntervalUpperBound" .=) <$> _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound
-    , Just ("ScalingAdjustment" .= _autoScalingScalingPolicyStepAdjustmentScalingAdjustment)
+    [ fmap (("MetricIntervalLowerBound",) . toJSON . fmap Double') _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound
+    , fmap (("MetricIntervalUpperBound",) . toJSON . fmap Double') _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound
+    , (Just . ("ScalingAdjustment",) . toJSON . fmap Integer') _autoScalingScalingPolicyStepAdjustmentScalingAdjustment
     ]
 
 instance FromJSON AutoScalingScalingPolicyStepAdjustment where
   parseJSON (Object obj) =
     AutoScalingScalingPolicyStepAdjustment <$>
-      obj .:? "MetricIntervalLowerBound" <*>
-      obj .:? "MetricIntervalUpperBound" <*>
-      obj .: "ScalingAdjustment"
+      fmap (fmap (fmap unDouble')) (obj .:? "MetricIntervalLowerBound") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MetricIntervalUpperBound") <*>
+      fmap (fmap unInteger') (obj .: "ScalingAdjustment")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingScalingPolicyStepAdjustment' containing
 -- required fields as arguments.
 autoScalingScalingPolicyStepAdjustment
-  :: Val Integer' -- ^ 'asspsaScalingAdjustment'
+  :: Val Integer -- ^ 'asspsaScalingAdjustment'
   -> AutoScalingScalingPolicyStepAdjustment
 autoScalingScalingPolicyStepAdjustment scalingAdjustmentarg =
   AutoScalingScalingPolicyStepAdjustment
@@ -54,13 +55,13 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervallowerbound
-asspsaMetricIntervalLowerBound :: Lens' AutoScalingScalingPolicyStepAdjustment (Maybe (Val Double'))
+asspsaMetricIntervalLowerBound :: Lens' AutoScalingScalingPolicyStepAdjustment (Maybe (Val Double))
 asspsaMetricIntervalLowerBound = lens _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound (\s a -> s { _autoScalingScalingPolicyStepAdjustmentMetricIntervalLowerBound = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervalupperbound
-asspsaMetricIntervalUpperBound :: Lens' AutoScalingScalingPolicyStepAdjustment (Maybe (Val Double'))
+asspsaMetricIntervalUpperBound :: Lens' AutoScalingScalingPolicyStepAdjustment (Maybe (Val Double))
 asspsaMetricIntervalUpperBound = lens _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound (\s a -> s { _autoScalingScalingPolicyStepAdjustmentMetricIntervalUpperBound = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-scalingadjustment
-asspsaScalingAdjustment :: Lens' AutoScalingScalingPolicyStepAdjustment (Val Integer')
+asspsaScalingAdjustment :: Lens' AutoScalingScalingPolicyStepAdjustment (Val Integer)
 asspsaScalingAdjustment = lens _autoScalingScalingPolicyStepAdjustmentScalingAdjustment (\s a -> s { _autoScalingScalingPolicyStepAdjustmentScalingAdjustment = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs b/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
--- a/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CertificateManagerCertificateDomainValidationOption.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html
 
@@ -28,15 +29,15 @@
   toJSON CertificateManagerCertificateDomainValidationOption{..} =
     object $
     catMaybes
-    [ Just ("DomainName" .= _certificateManagerCertificateDomainValidationOptionDomainName)
-    , Just ("ValidationDomain" .= _certificateManagerCertificateDomainValidationOptionValidationDomain)
+    [ (Just . ("DomainName",) . toJSON) _certificateManagerCertificateDomainValidationOptionDomainName
+    , (Just . ("ValidationDomain",) . toJSON) _certificateManagerCertificateDomainValidationOptionValidationDomain
     ]
 
 instance FromJSON CertificateManagerCertificateDomainValidationOption where
   parseJSON (Object obj) =
     CertificateManagerCertificateDomainValidationOption <$>
-      obj .: "DomainName" <*>
-      obj .: "ValidationDomain"
+      (obj .: "DomainName") <*>
+      (obj .: "ValidationDomain")
   parseJSON _ = mempty
 
 -- | Constructor for 'CertificateManagerCertificateDomainValidationOption'
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html
 
@@ -18,17 +19,17 @@
 -- 'cloudFrontDistributionCacheBehavior' for a more convenient constructor.
 data CloudFrontDistributionCacheBehavior =
   CloudFrontDistributionCacheBehavior
-  { _cloudFrontDistributionCacheBehaviorAllowedMethods :: Maybe [Val Text]
-  , _cloudFrontDistributionCacheBehaviorCachedMethods :: Maybe [Val Text]
-  , _cloudFrontDistributionCacheBehaviorCompress :: Maybe (Val Bool')
-  , _cloudFrontDistributionCacheBehaviorDefaultTTL :: Maybe (Val Integer')
+  { _cloudFrontDistributionCacheBehaviorAllowedMethods :: Maybe (ValList Text)
+  , _cloudFrontDistributionCacheBehaviorCachedMethods :: Maybe (ValList Text)
+  , _cloudFrontDistributionCacheBehaviorCompress :: Maybe (Val Bool)
+  , _cloudFrontDistributionCacheBehaviorDefaultTTL :: Maybe (Val Integer)
   , _cloudFrontDistributionCacheBehaviorForwardedValues :: CloudFrontDistributionForwardedValues
-  , _cloudFrontDistributionCacheBehaviorMaxTTL :: Maybe (Val Integer')
-  , _cloudFrontDistributionCacheBehaviorMinTTL :: Maybe (Val Integer')
+  , _cloudFrontDistributionCacheBehaviorMaxTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionCacheBehaviorMinTTL :: Maybe (Val Integer)
   , _cloudFrontDistributionCacheBehaviorPathPattern :: Val Text
-  , _cloudFrontDistributionCacheBehaviorSmoothStreaming :: Maybe (Val Bool')
+  , _cloudFrontDistributionCacheBehaviorSmoothStreaming :: Maybe (Val Bool)
   , _cloudFrontDistributionCacheBehaviorTargetOriginId :: Val Text
-  , _cloudFrontDistributionCacheBehaviorTrustedSigners :: Maybe [Val Text]
+  , _cloudFrontDistributionCacheBehaviorTrustedSigners :: Maybe (ValList Text)
   , _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy :: Val Text
   } deriving (Show, Eq)
 
@@ -36,35 +37,35 @@
   toJSON CloudFrontDistributionCacheBehavior{..} =
     object $
     catMaybes
-    [ ("AllowedMethods" .=) <$> _cloudFrontDistributionCacheBehaviorAllowedMethods
-    , ("CachedMethods" .=) <$> _cloudFrontDistributionCacheBehaviorCachedMethods
-    , ("Compress" .=) <$> _cloudFrontDistributionCacheBehaviorCompress
-    , ("DefaultTTL" .=) <$> _cloudFrontDistributionCacheBehaviorDefaultTTL
-    , Just ("ForwardedValues" .= _cloudFrontDistributionCacheBehaviorForwardedValues)
-    , ("MaxTTL" .=) <$> _cloudFrontDistributionCacheBehaviorMaxTTL
-    , ("MinTTL" .=) <$> _cloudFrontDistributionCacheBehaviorMinTTL
-    , Just ("PathPattern" .= _cloudFrontDistributionCacheBehaviorPathPattern)
-    , ("SmoothStreaming" .=) <$> _cloudFrontDistributionCacheBehaviorSmoothStreaming
-    , Just ("TargetOriginId" .= _cloudFrontDistributionCacheBehaviorTargetOriginId)
-    , ("TrustedSigners" .=) <$> _cloudFrontDistributionCacheBehaviorTrustedSigners
-    , Just ("ViewerProtocolPolicy" .= _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy)
+    [ fmap (("AllowedMethods",) . toJSON) _cloudFrontDistributionCacheBehaviorAllowedMethods
+    , fmap (("CachedMethods",) . toJSON) _cloudFrontDistributionCacheBehaviorCachedMethods
+    , fmap (("Compress",) . toJSON . fmap Bool') _cloudFrontDistributionCacheBehaviorCompress
+    , fmap (("DefaultTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorDefaultTTL
+    , (Just . ("ForwardedValues",) . toJSON) _cloudFrontDistributionCacheBehaviorForwardedValues
+    , fmap (("MaxTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorMaxTTL
+    , fmap (("MinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorMinTTL
+    , (Just . ("PathPattern",) . toJSON) _cloudFrontDistributionCacheBehaviorPathPattern
+    , fmap (("SmoothStreaming",) . toJSON . fmap Bool') _cloudFrontDistributionCacheBehaviorSmoothStreaming
+    , (Just . ("TargetOriginId",) . toJSON) _cloudFrontDistributionCacheBehaviorTargetOriginId
+    , fmap (("TrustedSigners",) . toJSON) _cloudFrontDistributionCacheBehaviorTrustedSigners
+    , (Just . ("ViewerProtocolPolicy",) . toJSON) _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy
     ]
 
 instance FromJSON CloudFrontDistributionCacheBehavior where
   parseJSON (Object obj) =
     CloudFrontDistributionCacheBehavior <$>
-      obj .:? "AllowedMethods" <*>
-      obj .:? "CachedMethods" <*>
-      obj .:? "Compress" <*>
-      obj .:? "DefaultTTL" <*>
-      obj .: "ForwardedValues" <*>
-      obj .:? "MaxTTL" <*>
-      obj .:? "MinTTL" <*>
-      obj .: "PathPattern" <*>
-      obj .:? "SmoothStreaming" <*>
-      obj .: "TargetOriginId" <*>
-      obj .:? "TrustedSigners" <*>
-      obj .: "ViewerProtocolPolicy"
+      (obj .:? "AllowedMethods") <*>
+      (obj .:? "CachedMethods") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Compress") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DefaultTTL") <*>
+      (obj .: "ForwardedValues") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxTTL") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinTTL") <*>
+      (obj .: "PathPattern") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "SmoothStreaming") <*>
+      (obj .: "TargetOriginId") <*>
+      (obj .:? "TrustedSigners") <*>
+      (obj .: "ViewerProtocolPolicy")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionCacheBehavior' containing required
@@ -92,19 +93,19 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-allowedmethods
-cfdcbAllowedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe [Val Text])
+cfdcbAllowedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbAllowedMethods = lens _cloudFrontDistributionCacheBehaviorAllowedMethods (\s a -> s { _cloudFrontDistributionCacheBehaviorAllowedMethods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-cachedmethods
-cfdcbCachedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe [Val Text])
+cfdcbCachedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbCachedMethods = lens _cloudFrontDistributionCacheBehaviorCachedMethods (\s a -> s { _cloudFrontDistributionCacheBehaviorCachedMethods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-compress
-cfdcbCompress :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool'))
+cfdcbCompress :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool))
 cfdcbCompress = lens _cloudFrontDistributionCacheBehaviorCompress (\s a -> s { _cloudFrontDistributionCacheBehaviorCompress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-defaultttl
-cfdcbDefaultTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer'))
+cfdcbDefaultTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
 cfdcbDefaultTTL = lens _cloudFrontDistributionCacheBehaviorDefaultTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorDefaultTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-forwardedvalues
@@ -112,11 +113,11 @@
 cfdcbForwardedValues = lens _cloudFrontDistributionCacheBehaviorForwardedValues (\s a -> s { _cloudFrontDistributionCacheBehaviorForwardedValues = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-maxttl
-cfdcbMaxTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer'))
+cfdcbMaxTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
 cfdcbMaxTTL = lens _cloudFrontDistributionCacheBehaviorMaxTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorMaxTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-minttl
-cfdcbMinTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer'))
+cfdcbMinTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
 cfdcbMinTTL = lens _cloudFrontDistributionCacheBehaviorMinTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorMinTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-pathpattern
@@ -124,7 +125,7 @@
 cfdcbPathPattern = lens _cloudFrontDistributionCacheBehaviorPathPattern (\s a -> s { _cloudFrontDistributionCacheBehaviorPathPattern = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-smoothstreaming
-cfdcbSmoothStreaming :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool'))
+cfdcbSmoothStreaming :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool))
 cfdcbSmoothStreaming = lens _cloudFrontDistributionCacheBehaviorSmoothStreaming (\s a -> s { _cloudFrontDistributionCacheBehaviorSmoothStreaming = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-targetoriginid
@@ -132,7 +133,7 @@
 cfdcbTargetOriginId = lens _cloudFrontDistributionCacheBehaviorTargetOriginId (\s a -> s { _cloudFrontDistributionCacheBehaviorTargetOriginId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-trustedsigners
-cfdcbTrustedSigners :: Lens' CloudFrontDistributionCacheBehavior (Maybe [Val Text])
+cfdcbTrustedSigners :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbTrustedSigners = lens _cloudFrontDistributionCacheBehaviorTrustedSigners (\s a -> s { _cloudFrontDistributionCacheBehaviorTrustedSigners = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-viewerprotocolpolicy
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html
 
@@ -19,22 +20,22 @@
 data CloudFrontDistributionCookies =
   CloudFrontDistributionCookies
   { _cloudFrontDistributionCookiesForward :: Val Text
-  , _cloudFrontDistributionCookiesWhitelistedNames :: Maybe [Val Text]
+  , _cloudFrontDistributionCookiesWhitelistedNames :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON CloudFrontDistributionCookies where
   toJSON CloudFrontDistributionCookies{..} =
     object $
     catMaybes
-    [ Just ("Forward" .= _cloudFrontDistributionCookiesForward)
-    , ("WhitelistedNames" .=) <$> _cloudFrontDistributionCookiesWhitelistedNames
+    [ (Just . ("Forward",) . toJSON) _cloudFrontDistributionCookiesForward
+    , fmap (("WhitelistedNames",) . toJSON) _cloudFrontDistributionCookiesWhitelistedNames
     ]
 
 instance FromJSON CloudFrontDistributionCookies where
   parseJSON (Object obj) =
     CloudFrontDistributionCookies <$>
-      obj .: "Forward" <*>
-      obj .:? "WhitelistedNames"
+      (obj .: "Forward") <*>
+      (obj .:? "WhitelistedNames")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionCookies' containing required
@@ -53,5 +54,5 @@
 cfdcForward = lens _cloudFrontDistributionCookiesForward (\s a -> s { _cloudFrontDistributionCookiesForward = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html#cfn-cloudfront-forwardedvalues-cookies-whitelistednames
-cfdcWhitelistedNames :: Lens' CloudFrontDistributionCookies (Maybe [Val Text])
+cfdcWhitelistedNames :: Lens' CloudFrontDistributionCookies (Maybe (ValList Text))
 cfdcWhitelistedNames = lens _cloudFrontDistributionCookiesWhitelistedNames (\s a -> s { _cloudFrontDistributionCookiesWhitelistedNames = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html
 
@@ -19,9 +20,9 @@
 -- constructor.
 data CloudFrontDistributionCustomErrorResponse =
   CloudFrontDistributionCustomErrorResponse
-  { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL :: Maybe (Val Integer')
-  , _cloudFrontDistributionCustomErrorResponseErrorCode :: Val Integer'
-  , _cloudFrontDistributionCustomErrorResponseResponseCode :: Maybe (Val Integer')
+  { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionCustomErrorResponseErrorCode :: Val Integer
+  , _cloudFrontDistributionCustomErrorResponseResponseCode :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomErrorResponseResponsePagePath :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -29,25 +30,25 @@
   toJSON CloudFrontDistributionCustomErrorResponse{..} =
     object $
     catMaybes
-    [ ("ErrorCachingMinTTL" .=) <$> _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL
-    , Just ("ErrorCode" .= _cloudFrontDistributionCustomErrorResponseErrorCode)
-    , ("ResponseCode" .=) <$> _cloudFrontDistributionCustomErrorResponseResponseCode
-    , ("ResponsePagePath" .=) <$> _cloudFrontDistributionCustomErrorResponseResponsePagePath
+    [ fmap (("ErrorCachingMinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL
+    , (Just . ("ErrorCode",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseErrorCode
+    , fmap (("ResponseCode",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseResponseCode
+    , fmap (("ResponsePagePath",) . toJSON) _cloudFrontDistributionCustomErrorResponseResponsePagePath
     ]
 
 instance FromJSON CloudFrontDistributionCustomErrorResponse where
   parseJSON (Object obj) =
     CloudFrontDistributionCustomErrorResponse <$>
-      obj .:? "ErrorCachingMinTTL" <*>
-      obj .: "ErrorCode" <*>
-      obj .:? "ResponseCode" <*>
-      obj .:? "ResponsePagePath"
+      fmap (fmap (fmap unInteger')) (obj .:? "ErrorCachingMinTTL") <*>
+      fmap (fmap unInteger') (obj .: "ErrorCode") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ResponseCode") <*>
+      (obj .:? "ResponsePagePath")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionCustomErrorResponse' containing
 -- required fields as arguments.
 cloudFrontDistributionCustomErrorResponse
-  :: Val Integer' -- ^ 'cfdcerErrorCode'
+  :: Val Integer -- ^ 'cfdcerErrorCode'
   -> CloudFrontDistributionCustomErrorResponse
 cloudFrontDistributionCustomErrorResponse errorCodearg =
   CloudFrontDistributionCustomErrorResponse
@@ -58,15 +59,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcachingminttl
-cfdcerErrorCachingMinTTL :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer'))
+cfdcerErrorCachingMinTTL :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer))
 cfdcerErrorCachingMinTTL = lens _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL (\s a -> s { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcode
-cfdcerErrorCode :: Lens' CloudFrontDistributionCustomErrorResponse (Val Integer')
+cfdcerErrorCode :: Lens' CloudFrontDistributionCustomErrorResponse (Val Integer)
 cfdcerErrorCode = lens _cloudFrontDistributionCustomErrorResponseErrorCode (\s a -> s { _cloudFrontDistributionCustomErrorResponseErrorCode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsecode
-cfdcerResponseCode :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer'))
+cfdcerResponseCode :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer))
 cfdcerResponseCode = lens _cloudFrontDistributionCustomErrorResponseResponseCode (\s a -> s { _cloudFrontDistributionCustomErrorResponseResponseCode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsepagepath
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html
 
@@ -19,29 +20,29 @@
 -- constructor.
 data CloudFrontDistributionCustomOriginConfig =
   CloudFrontDistributionCustomOriginConfig
-  { _cloudFrontDistributionCustomOriginConfigHTTPPort :: Maybe (Val Integer')
-  , _cloudFrontDistributionCustomOriginConfigHTTPSPort :: Maybe (Val Integer')
+  { _cloudFrontDistributionCustomOriginConfigHTTPPort :: Maybe (Val Integer)
+  , _cloudFrontDistributionCustomOriginConfigHTTPSPort :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy :: Val Text
-  , _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols :: Maybe [Val Text]
+  , _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON CloudFrontDistributionCustomOriginConfig where
   toJSON CloudFrontDistributionCustomOriginConfig{..} =
     object $
     catMaybes
-    [ ("HTTPPort" .=) <$> _cloudFrontDistributionCustomOriginConfigHTTPPort
-    , ("HTTPSPort" .=) <$> _cloudFrontDistributionCustomOriginConfigHTTPSPort
-    , Just ("OriginProtocolPolicy" .= _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy)
-    , ("OriginSSLProtocols" .=) <$> _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols
+    [ fmap (("HTTPPort",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigHTTPPort
+    , fmap (("HTTPSPort",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigHTTPSPort
+    , (Just . ("OriginProtocolPolicy",) . toJSON) _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy
+    , fmap (("OriginSSLProtocols",) . toJSON) _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols
     ]
 
 instance FromJSON CloudFrontDistributionCustomOriginConfig where
   parseJSON (Object obj) =
     CloudFrontDistributionCustomOriginConfig <$>
-      obj .:? "HTTPPort" <*>
-      obj .:? "HTTPSPort" <*>
-      obj .: "OriginProtocolPolicy" <*>
-      obj .:? "OriginSSLProtocols"
+      fmap (fmap (fmap unInteger')) (obj .:? "HTTPPort") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HTTPSPort") <*>
+      (obj .: "OriginProtocolPolicy") <*>
+      (obj .:? "OriginSSLProtocols")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionCustomOriginConfig' containing
@@ -58,11 +59,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpport
-cfdcocHTTPPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer'))
+cfdcocHTTPPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
 cfdcocHTTPPort = lens _cloudFrontDistributionCustomOriginConfigHTTPPort (\s a -> s { _cloudFrontDistributionCustomOriginConfigHTTPPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpsport
-cfdcocHTTPSPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer'))
+cfdcocHTTPSPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
 cfdcocHTTPSPort = lens _cloudFrontDistributionCustomOriginConfigHTTPSPort (\s a -> s { _cloudFrontDistributionCustomOriginConfigHTTPSPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originprotocolpolicy
@@ -70,5 +71,5 @@
 cfdcocOriginProtocolPolicy = lens _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originsslprotocols
-cfdcocOriginSSLProtocols :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe [Val Text])
+cfdcocOriginSSLProtocols :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (ValList Text))
 cfdcocOriginSSLProtocols = lens _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html
 
@@ -19,16 +20,16 @@
 -- constructor.
 data CloudFrontDistributionDefaultCacheBehavior =
   CloudFrontDistributionDefaultCacheBehavior
-  { _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods :: Maybe [Val Text]
-  , _cloudFrontDistributionDefaultCacheBehaviorCachedMethods :: Maybe [Val Text]
-  , _cloudFrontDistributionDefaultCacheBehaviorCompress :: Maybe (Val Bool')
-  , _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL :: Maybe (Val Integer')
+  { _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods :: Maybe (ValList Text)
+  , _cloudFrontDistributionDefaultCacheBehaviorCachedMethods :: Maybe (ValList Text)
+  , _cloudFrontDistributionDefaultCacheBehaviorCompress :: Maybe (Val Bool)
+  , _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL :: Maybe (Val Integer)
   , _cloudFrontDistributionDefaultCacheBehaviorForwardedValues :: CloudFrontDistributionForwardedValues
-  , _cloudFrontDistributionDefaultCacheBehaviorMaxTTL :: Maybe (Val Integer')
-  , _cloudFrontDistributionDefaultCacheBehaviorMinTTL :: Maybe (Val Integer')
-  , _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming :: Maybe (Val Bool')
+  , _cloudFrontDistributionDefaultCacheBehaviorMaxTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionDefaultCacheBehaviorMinTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming :: Maybe (Val Bool)
   , _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId :: Val Text
-  , _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners :: Maybe [Val Text]
+  , _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners :: Maybe (ValList Text)
   , _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy :: Val Text
   } deriving (Show, Eq)
 
@@ -36,33 +37,33 @@
   toJSON CloudFrontDistributionDefaultCacheBehavior{..} =
     object $
     catMaybes
-    [ ("AllowedMethods" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods
-    , ("CachedMethods" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorCachedMethods
-    , ("Compress" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorCompress
-    , ("DefaultTTL" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL
-    , Just ("ForwardedValues" .= _cloudFrontDistributionDefaultCacheBehaviorForwardedValues)
-    , ("MaxTTL" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorMaxTTL
-    , ("MinTTL" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorMinTTL
-    , ("SmoothStreaming" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming
-    , Just ("TargetOriginId" .= _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId)
-    , ("TrustedSigners" .=) <$> _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners
-    , Just ("ViewerProtocolPolicy" .= _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy)
+    [ fmap (("AllowedMethods",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods
+    , fmap (("CachedMethods",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorCachedMethods
+    , fmap (("Compress",) . toJSON . fmap Bool') _cloudFrontDistributionDefaultCacheBehaviorCompress
+    , fmap (("DefaultTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL
+    , (Just . ("ForwardedValues",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorForwardedValues
+    , fmap (("MaxTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorMaxTTL
+    , fmap (("MinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorMinTTL
+    , fmap (("SmoothStreaming",) . toJSON . fmap Bool') _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming
+    , (Just . ("TargetOriginId",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId
+    , fmap (("TrustedSigners",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners
+    , (Just . ("ViewerProtocolPolicy",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy
     ]
 
 instance FromJSON CloudFrontDistributionDefaultCacheBehavior where
   parseJSON (Object obj) =
     CloudFrontDistributionDefaultCacheBehavior <$>
-      obj .:? "AllowedMethods" <*>
-      obj .:? "CachedMethods" <*>
-      obj .:? "Compress" <*>
-      obj .:? "DefaultTTL" <*>
-      obj .: "ForwardedValues" <*>
-      obj .:? "MaxTTL" <*>
-      obj .:? "MinTTL" <*>
-      obj .:? "SmoothStreaming" <*>
-      obj .: "TargetOriginId" <*>
-      obj .:? "TrustedSigners" <*>
-      obj .: "ViewerProtocolPolicy"
+      (obj .:? "AllowedMethods") <*>
+      (obj .:? "CachedMethods") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Compress") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DefaultTTL") <*>
+      (obj .: "ForwardedValues") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxTTL") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinTTL") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "SmoothStreaming") <*>
+      (obj .: "TargetOriginId") <*>
+      (obj .:? "TrustedSigners") <*>
+      (obj .: "ViewerProtocolPolicy")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionDefaultCacheBehavior' containing
@@ -88,19 +89,19 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-allowedmethods
-cfddcbAllowedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe [Val Text])
+cfddcbAllowedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbAllowedMethods = lens _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-cachedmethods
-cfddcbCachedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe [Val Text])
+cfddcbCachedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbCachedMethods = lens _cloudFrontDistributionDefaultCacheBehaviorCachedMethods (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorCachedMethods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-compress
-cfddcbCompress :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool'))
+cfddcbCompress :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool))
 cfddcbCompress = lens _cloudFrontDistributionDefaultCacheBehaviorCompress (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorCompress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-defaultttl
-cfddcbDefaultTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer'))
+cfddcbDefaultTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
 cfddcbDefaultTTL = lens _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-forwardedvalues
@@ -108,15 +109,15 @@
 cfddcbForwardedValues = lens _cloudFrontDistributionDefaultCacheBehaviorForwardedValues (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorForwardedValues = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-maxttl
-cfddcbMaxTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer'))
+cfddcbMaxTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
 cfddcbMaxTTL = lens _cloudFrontDistributionDefaultCacheBehaviorMaxTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorMaxTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-minttl
-cfddcbMinTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer'))
+cfddcbMinTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
 cfddcbMinTTL = lens _cloudFrontDistributionDefaultCacheBehaviorMinTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorMinTTL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-smoothstreaming
-cfddcbSmoothStreaming :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool'))
+cfddcbSmoothStreaming :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool))
 cfddcbSmoothStreaming = lens _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-targetoriginid
@@ -124,7 +125,7 @@
 cfddcbTargetOriginId = lens _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-trustedsigners
-cfddcbTrustedSigners :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe [Val Text])
+cfddcbTrustedSigners :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbTrustedSigners = lens _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-viewerprotocolpolicy
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html
 
@@ -25,13 +26,13 @@
 -- constructor.
 data CloudFrontDistributionDistributionConfig =
   CloudFrontDistributionDistributionConfig
-  { _cloudFrontDistributionDistributionConfigAliases :: Maybe [Val Text]
+  { _cloudFrontDistributionDistributionConfigAliases :: Maybe (ValList Text)
   , _cloudFrontDistributionDistributionConfigCacheBehaviors :: Maybe [CloudFrontDistributionCacheBehavior]
   , _cloudFrontDistributionDistributionConfigComment :: Maybe (Val Text)
   , _cloudFrontDistributionDistributionConfigCustomErrorResponses :: Maybe [CloudFrontDistributionCustomErrorResponse]
   , _cloudFrontDistributionDistributionConfigDefaultCacheBehavior :: CloudFrontDistributionDefaultCacheBehavior
   , _cloudFrontDistributionDistributionConfigDefaultRootObject :: Maybe (Val Text)
-  , _cloudFrontDistributionDistributionConfigEnabled :: Val Bool'
+  , _cloudFrontDistributionDistributionConfigEnabled :: Val Bool
   , _cloudFrontDistributionDistributionConfigHttpVersion :: Maybe (Val Text)
   , _cloudFrontDistributionDistributionConfigLogging :: Maybe CloudFrontDistributionLogging
   , _cloudFrontDistributionDistributionConfigOrigins :: [CloudFrontDistributionOrigin]
@@ -45,46 +46,46 @@
   toJSON CloudFrontDistributionDistributionConfig{..} =
     object $
     catMaybes
-    [ ("Aliases" .=) <$> _cloudFrontDistributionDistributionConfigAliases
-    , ("CacheBehaviors" .=) <$> _cloudFrontDistributionDistributionConfigCacheBehaviors
-    , ("Comment" .=) <$> _cloudFrontDistributionDistributionConfigComment
-    , ("CustomErrorResponses" .=) <$> _cloudFrontDistributionDistributionConfigCustomErrorResponses
-    , Just ("DefaultCacheBehavior" .= _cloudFrontDistributionDistributionConfigDefaultCacheBehavior)
-    , ("DefaultRootObject" .=) <$> _cloudFrontDistributionDistributionConfigDefaultRootObject
-    , Just ("Enabled" .= _cloudFrontDistributionDistributionConfigEnabled)
-    , ("HttpVersion" .=) <$> _cloudFrontDistributionDistributionConfigHttpVersion
-    , ("Logging" .=) <$> _cloudFrontDistributionDistributionConfigLogging
-    , Just ("Origins" .= _cloudFrontDistributionDistributionConfigOrigins)
-    , ("PriceClass" .=) <$> _cloudFrontDistributionDistributionConfigPriceClass
-    , ("Restrictions" .=) <$> _cloudFrontDistributionDistributionConfigRestrictions
-    , ("ViewerCertificate" .=) <$> _cloudFrontDistributionDistributionConfigViewerCertificate
-    , ("WebACLId" .=) <$> _cloudFrontDistributionDistributionConfigWebACLId
+    [ fmap (("Aliases",) . toJSON) _cloudFrontDistributionDistributionConfigAliases
+    , fmap (("CacheBehaviors",) . toJSON) _cloudFrontDistributionDistributionConfigCacheBehaviors
+    , fmap (("Comment",) . toJSON) _cloudFrontDistributionDistributionConfigComment
+    , fmap (("CustomErrorResponses",) . toJSON) _cloudFrontDistributionDistributionConfigCustomErrorResponses
+    , (Just . ("DefaultCacheBehavior",) . toJSON) _cloudFrontDistributionDistributionConfigDefaultCacheBehavior
+    , fmap (("DefaultRootObject",) . toJSON) _cloudFrontDistributionDistributionConfigDefaultRootObject
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _cloudFrontDistributionDistributionConfigEnabled
+    , fmap (("HttpVersion",) . toJSON) _cloudFrontDistributionDistributionConfigHttpVersion
+    , fmap (("Logging",) . toJSON) _cloudFrontDistributionDistributionConfigLogging
+    , (Just . ("Origins",) . toJSON) _cloudFrontDistributionDistributionConfigOrigins
+    , fmap (("PriceClass",) . toJSON) _cloudFrontDistributionDistributionConfigPriceClass
+    , fmap (("Restrictions",) . toJSON) _cloudFrontDistributionDistributionConfigRestrictions
+    , fmap (("ViewerCertificate",) . toJSON) _cloudFrontDistributionDistributionConfigViewerCertificate
+    , fmap (("WebACLId",) . toJSON) _cloudFrontDistributionDistributionConfigWebACLId
     ]
 
 instance FromJSON CloudFrontDistributionDistributionConfig where
   parseJSON (Object obj) =
     CloudFrontDistributionDistributionConfig <$>
-      obj .:? "Aliases" <*>
-      obj .:? "CacheBehaviors" <*>
-      obj .:? "Comment" <*>
-      obj .:? "CustomErrorResponses" <*>
-      obj .: "DefaultCacheBehavior" <*>
-      obj .:? "DefaultRootObject" <*>
-      obj .: "Enabled" <*>
-      obj .:? "HttpVersion" <*>
-      obj .:? "Logging" <*>
-      obj .: "Origins" <*>
-      obj .:? "PriceClass" <*>
-      obj .:? "Restrictions" <*>
-      obj .:? "ViewerCertificate" <*>
-      obj .:? "WebACLId"
+      (obj .:? "Aliases") <*>
+      (obj .:? "CacheBehaviors") <*>
+      (obj .:? "Comment") <*>
+      (obj .:? "CustomErrorResponses") <*>
+      (obj .: "DefaultCacheBehavior") <*>
+      (obj .:? "DefaultRootObject") <*>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .:? "HttpVersion") <*>
+      (obj .:? "Logging") <*>
+      (obj .: "Origins") <*>
+      (obj .:? "PriceClass") <*>
+      (obj .:? "Restrictions") <*>
+      (obj .:? "ViewerCertificate") <*>
+      (obj .:? "WebACLId")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionDistributionConfig' containing
 -- required fields as arguments.
 cloudFrontDistributionDistributionConfig
   :: CloudFrontDistributionDefaultCacheBehavior -- ^ 'cfddcDefaultCacheBehavior'
-  -> Val Bool' -- ^ 'cfddcEnabled'
+  -> Val Bool -- ^ 'cfddcEnabled'
   -> [CloudFrontDistributionOrigin] -- ^ 'cfddcOrigins'
   -> CloudFrontDistributionDistributionConfig
 cloudFrontDistributionDistributionConfig defaultCacheBehaviorarg enabledarg originsarg =
@@ -106,7 +107,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-aliases
-cfddcAliases :: Lens' CloudFrontDistributionDistributionConfig (Maybe [Val Text])
+cfddcAliases :: Lens' CloudFrontDistributionDistributionConfig (Maybe (ValList Text))
 cfddcAliases = lens _cloudFrontDistributionDistributionConfigAliases (\s a -> s { _cloudFrontDistributionDistributionConfigAliases = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-cachebehaviors
@@ -130,7 +131,7 @@
 cfddcDefaultRootObject = lens _cloudFrontDistributionDistributionConfigDefaultRootObject (\s a -> s { _cloudFrontDistributionDistributionConfigDefaultRootObject = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-enabled
-cfddcEnabled :: Lens' CloudFrontDistributionDistributionConfig (Val Bool')
+cfddcEnabled :: Lens' CloudFrontDistributionDistributionConfig (Val Bool)
 cfddcEnabled = lens _cloudFrontDistributionDistributionConfigEnabled (\s a -> s { _cloudFrontDistributionDistributionConfigEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-httpversion
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html
 
@@ -20,34 +21,34 @@
 data CloudFrontDistributionForwardedValues =
   CloudFrontDistributionForwardedValues
   { _cloudFrontDistributionForwardedValuesCookies :: Maybe CloudFrontDistributionCookies
-  , _cloudFrontDistributionForwardedValuesHeaders :: Maybe [Val Text]
-  , _cloudFrontDistributionForwardedValuesQueryString :: Val Bool'
-  , _cloudFrontDistributionForwardedValuesQueryStringCacheKeys :: Maybe [Val Text]
+  , _cloudFrontDistributionForwardedValuesHeaders :: Maybe (ValList Text)
+  , _cloudFrontDistributionForwardedValuesQueryString :: Val Bool
+  , _cloudFrontDistributionForwardedValuesQueryStringCacheKeys :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON CloudFrontDistributionForwardedValues where
   toJSON CloudFrontDistributionForwardedValues{..} =
     object $
     catMaybes
-    [ ("Cookies" .=) <$> _cloudFrontDistributionForwardedValuesCookies
-    , ("Headers" .=) <$> _cloudFrontDistributionForwardedValuesHeaders
-    , Just ("QueryString" .= _cloudFrontDistributionForwardedValuesQueryString)
-    , ("QueryStringCacheKeys" .=) <$> _cloudFrontDistributionForwardedValuesQueryStringCacheKeys
+    [ fmap (("Cookies",) . toJSON) _cloudFrontDistributionForwardedValuesCookies
+    , fmap (("Headers",) . toJSON) _cloudFrontDistributionForwardedValuesHeaders
+    , (Just . ("QueryString",) . toJSON . fmap Bool') _cloudFrontDistributionForwardedValuesQueryString
+    , fmap (("QueryStringCacheKeys",) . toJSON) _cloudFrontDistributionForwardedValuesQueryStringCacheKeys
     ]
 
 instance FromJSON CloudFrontDistributionForwardedValues where
   parseJSON (Object obj) =
     CloudFrontDistributionForwardedValues <$>
-      obj .:? "Cookies" <*>
-      obj .:? "Headers" <*>
-      obj .: "QueryString" <*>
-      obj .:? "QueryStringCacheKeys"
+      (obj .:? "Cookies") <*>
+      (obj .:? "Headers") <*>
+      fmap (fmap unBool') (obj .: "QueryString") <*>
+      (obj .:? "QueryStringCacheKeys")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionForwardedValues' containing
 -- required fields as arguments.
 cloudFrontDistributionForwardedValues
-  :: Val Bool' -- ^ 'cfdfvQueryString'
+  :: Val Bool -- ^ 'cfdfvQueryString'
   -> CloudFrontDistributionForwardedValues
 cloudFrontDistributionForwardedValues queryStringarg =
   CloudFrontDistributionForwardedValues
@@ -62,13 +63,13 @@
 cfdfvCookies = lens _cloudFrontDistributionForwardedValuesCookies (\s a -> s { _cloudFrontDistributionForwardedValuesCookies = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-headers
-cfdfvHeaders :: Lens' CloudFrontDistributionForwardedValues (Maybe [Val Text])
+cfdfvHeaders :: Lens' CloudFrontDistributionForwardedValues (Maybe (ValList Text))
 cfdfvHeaders = lens _cloudFrontDistributionForwardedValuesHeaders (\s a -> s { _cloudFrontDistributionForwardedValuesHeaders = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystring
-cfdfvQueryString :: Lens' CloudFrontDistributionForwardedValues (Val Bool')
+cfdfvQueryString :: Lens' CloudFrontDistributionForwardedValues (Val Bool)
 cfdfvQueryString = lens _cloudFrontDistributionForwardedValuesQueryString (\s a -> s { _cloudFrontDistributionForwardedValuesQueryString = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystringcachekeys
-cfdfvQueryStringCacheKeys :: Lens' CloudFrontDistributionForwardedValues (Maybe [Val Text])
+cfdfvQueryStringCacheKeys :: Lens' CloudFrontDistributionForwardedValues (Maybe (ValList Text))
 cfdfvQueryStringCacheKeys = lens _cloudFrontDistributionForwardedValuesQueryStringCacheKeys (\s a -> s { _cloudFrontDistributionForwardedValuesQueryStringCacheKeys = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html
 
@@ -18,7 +19,7 @@
 -- 'cloudFrontDistributionGeoRestriction' for a more convenient constructor.
 data CloudFrontDistributionGeoRestriction =
   CloudFrontDistributionGeoRestriction
-  { _cloudFrontDistributionGeoRestrictionLocations :: Maybe [Val Text]
+  { _cloudFrontDistributionGeoRestrictionLocations :: Maybe (ValList Text)
   , _cloudFrontDistributionGeoRestrictionRestrictionType :: Val Text
   } deriving (Show, Eq)
 
@@ -26,15 +27,15 @@
   toJSON CloudFrontDistributionGeoRestriction{..} =
     object $
     catMaybes
-    [ ("Locations" .=) <$> _cloudFrontDistributionGeoRestrictionLocations
-    , Just ("RestrictionType" .= _cloudFrontDistributionGeoRestrictionRestrictionType)
+    [ fmap (("Locations",) . toJSON) _cloudFrontDistributionGeoRestrictionLocations
+    , (Just . ("RestrictionType",) . toJSON) _cloudFrontDistributionGeoRestrictionRestrictionType
     ]
 
 instance FromJSON CloudFrontDistributionGeoRestriction where
   parseJSON (Object obj) =
     CloudFrontDistributionGeoRestriction <$>
-      obj .:? "Locations" <*>
-      obj .: "RestrictionType"
+      (obj .:? "Locations") <*>
+      (obj .: "RestrictionType")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionGeoRestriction' containing
@@ -49,7 +50,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-locations
-cfdgrLocations :: Lens' CloudFrontDistributionGeoRestriction (Maybe [Val Text])
+cfdgrLocations :: Lens' CloudFrontDistributionGeoRestriction (Maybe (ValList Text))
 cfdgrLocations = lens _cloudFrontDistributionGeoRestrictionLocations (\s a -> s { _cloudFrontDistributionGeoRestrictionLocations = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-restrictiontype
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html
 
@@ -19,7 +20,7 @@
 data CloudFrontDistributionLogging =
   CloudFrontDistributionLogging
   { _cloudFrontDistributionLoggingBucket :: Val Text
-  , _cloudFrontDistributionLoggingIncludeCookies :: Maybe (Val Bool')
+  , _cloudFrontDistributionLoggingIncludeCookies :: Maybe (Val Bool)
   , _cloudFrontDistributionLoggingPrefix :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON CloudFrontDistributionLogging{..} =
     object $
     catMaybes
-    [ Just ("Bucket" .= _cloudFrontDistributionLoggingBucket)
-    , ("IncludeCookies" .=) <$> _cloudFrontDistributionLoggingIncludeCookies
-    , ("Prefix" .=) <$> _cloudFrontDistributionLoggingPrefix
+    [ (Just . ("Bucket",) . toJSON) _cloudFrontDistributionLoggingBucket
+    , fmap (("IncludeCookies",) . toJSON . fmap Bool') _cloudFrontDistributionLoggingIncludeCookies
+    , fmap (("Prefix",) . toJSON) _cloudFrontDistributionLoggingPrefix
     ]
 
 instance FromJSON CloudFrontDistributionLogging where
   parseJSON (Object obj) =
     CloudFrontDistributionLogging <$>
-      obj .: "Bucket" <*>
-      obj .:? "IncludeCookies" <*>
-      obj .:? "Prefix"
+      (obj .: "Bucket") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeCookies") <*>
+      (obj .:? "Prefix")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionLogging' containing required
@@ -57,7 +58,7 @@
 cfdlBucket = lens _cloudFrontDistributionLoggingBucket (\s a -> s { _cloudFrontDistributionLoggingBucket = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-includecookies
-cfdlIncludeCookies :: Lens' CloudFrontDistributionLogging (Maybe (Val Bool'))
+cfdlIncludeCookies :: Lens' CloudFrontDistributionLogging (Maybe (Val Bool))
 cfdlIncludeCookies = lens _cloudFrontDistributionLoggingIncludeCookies (\s a -> s { _cloudFrontDistributionLoggingIncludeCookies = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-prefix
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html
 
@@ -32,23 +33,23 @@
   toJSON CloudFrontDistributionOrigin{..} =
     object $
     catMaybes
-    [ ("CustomOriginConfig" .=) <$> _cloudFrontDistributionOriginCustomOriginConfig
-    , Just ("DomainName" .= _cloudFrontDistributionOriginDomainName)
-    , Just ("Id" .= _cloudFrontDistributionOriginId)
-    , ("OriginCustomHeaders" .=) <$> _cloudFrontDistributionOriginOriginCustomHeaders
-    , ("OriginPath" .=) <$> _cloudFrontDistributionOriginOriginPath
-    , ("S3OriginConfig" .=) <$> _cloudFrontDistributionOriginS3OriginConfig
+    [ fmap (("CustomOriginConfig",) . toJSON) _cloudFrontDistributionOriginCustomOriginConfig
+    , (Just . ("DomainName",) . toJSON) _cloudFrontDistributionOriginDomainName
+    , (Just . ("Id",) . toJSON) _cloudFrontDistributionOriginId
+    , fmap (("OriginCustomHeaders",) . toJSON) _cloudFrontDistributionOriginOriginCustomHeaders
+    , fmap (("OriginPath",) . toJSON) _cloudFrontDistributionOriginOriginPath
+    , fmap (("S3OriginConfig",) . toJSON) _cloudFrontDistributionOriginS3OriginConfig
     ]
 
 instance FromJSON CloudFrontDistributionOrigin where
   parseJSON (Object obj) =
     CloudFrontDistributionOrigin <$>
-      obj .:? "CustomOriginConfig" <*>
-      obj .: "DomainName" <*>
-      obj .: "Id" <*>
-      obj .:? "OriginCustomHeaders" <*>
-      obj .:? "OriginPath" <*>
-      obj .:? "S3OriginConfig"
+      (obj .:? "CustomOriginConfig") <*>
+      (obj .: "DomainName") <*>
+      (obj .: "Id") <*>
+      (obj .:? "OriginCustomHeaders") <*>
+      (obj .:? "OriginPath") <*>
+      (obj .:? "S3OriginConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionOrigin' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html
 
@@ -27,15 +28,15 @@
   toJSON CloudFrontDistributionOriginCustomHeader{..} =
     object $
     catMaybes
-    [ Just ("HeaderName" .= _cloudFrontDistributionOriginCustomHeaderHeaderName)
-    , Just ("HeaderValue" .= _cloudFrontDistributionOriginCustomHeaderHeaderValue)
+    [ (Just . ("HeaderName",) . toJSON) _cloudFrontDistributionOriginCustomHeaderHeaderName
+    , (Just . ("HeaderValue",) . toJSON) _cloudFrontDistributionOriginCustomHeaderHeaderValue
     ]
 
 instance FromJSON CloudFrontDistributionOriginCustomHeader where
   parseJSON (Object obj) =
     CloudFrontDistributionOriginCustomHeader <$>
-      obj .: "HeaderName" <*>
-      obj .: "HeaderValue"
+      (obj .: "HeaderName") <*>
+      (obj .: "HeaderValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionOriginCustomHeader' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions.html
 
@@ -25,13 +26,13 @@
   toJSON CloudFrontDistributionRestrictions{..} =
     object $
     catMaybes
-    [ Just ("GeoRestriction" .= _cloudFrontDistributionRestrictionsGeoRestriction)
+    [ (Just . ("GeoRestriction",) . toJSON) _cloudFrontDistributionRestrictionsGeoRestriction
     ]
 
 instance FromJSON CloudFrontDistributionRestrictions where
   parseJSON (Object obj) =
     CloudFrontDistributionRestrictions <$>
-      obj .: "GeoRestriction"
+      (obj .: "GeoRestriction")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionRestrictions' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-s3origin.html
 
@@ -25,13 +26,13 @@
   toJSON CloudFrontDistributionS3OriginConfig{..} =
     object $
     catMaybes
-    [ ("OriginAccessIdentity" .=) <$> _cloudFrontDistributionS3OriginConfigOriginAccessIdentity
+    [ fmap (("OriginAccessIdentity",) . toJSON) _cloudFrontDistributionS3OriginConfigOriginAccessIdentity
     ]
 
 instance FromJSON CloudFrontDistributionS3OriginConfig where
   parseJSON (Object obj) =
     CloudFrontDistributionS3OriginConfig <$>
-      obj .:? "OriginAccessIdentity"
+      (obj .:? "OriginAccessIdentity")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionS3OriginConfig' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html
 
@@ -20,7 +21,7 @@
 data CloudFrontDistributionViewerCertificate =
   CloudFrontDistributionViewerCertificate
   { _cloudFrontDistributionViewerCertificateAcmCertificateArn :: Maybe (Val Text)
-  , _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate :: Maybe (Val Bool')
+  , _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate :: Maybe (Val Bool)
   , _cloudFrontDistributionViewerCertificateIamCertificateId :: Maybe (Val Text)
   , _cloudFrontDistributionViewerCertificateMinimumProtocolVersion :: Maybe (Val Text)
   , _cloudFrontDistributionViewerCertificateSslSupportMethod :: Maybe (Val Text)
@@ -30,21 +31,21 @@
   toJSON CloudFrontDistributionViewerCertificate{..} =
     object $
     catMaybes
-    [ ("AcmCertificateArn" .=) <$> _cloudFrontDistributionViewerCertificateAcmCertificateArn
-    , ("CloudFrontDefaultCertificate" .=) <$> _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate
-    , ("IamCertificateId" .=) <$> _cloudFrontDistributionViewerCertificateIamCertificateId
-    , ("MinimumProtocolVersion" .=) <$> _cloudFrontDistributionViewerCertificateMinimumProtocolVersion
-    , ("SslSupportMethod" .=) <$> _cloudFrontDistributionViewerCertificateSslSupportMethod
+    [ fmap (("AcmCertificateArn",) . toJSON) _cloudFrontDistributionViewerCertificateAcmCertificateArn
+    , fmap (("CloudFrontDefaultCertificate",) . toJSON . fmap Bool') _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate
+    , fmap (("IamCertificateId",) . toJSON) _cloudFrontDistributionViewerCertificateIamCertificateId
+    , fmap (("MinimumProtocolVersion",) . toJSON) _cloudFrontDistributionViewerCertificateMinimumProtocolVersion
+    , fmap (("SslSupportMethod",) . toJSON) _cloudFrontDistributionViewerCertificateSslSupportMethod
     ]
 
 instance FromJSON CloudFrontDistributionViewerCertificate where
   parseJSON (Object obj) =
     CloudFrontDistributionViewerCertificate <$>
-      obj .:? "AcmCertificateArn" <*>
-      obj .:? "CloudFrontDefaultCertificate" <*>
-      obj .:? "IamCertificateId" <*>
-      obj .:? "MinimumProtocolVersion" <*>
-      obj .:? "SslSupportMethod"
+      (obj .:? "AcmCertificateArn") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CloudFrontDefaultCertificate") <*>
+      (obj .:? "IamCertificateId") <*>
+      (obj .:? "MinimumProtocolVersion") <*>
+      (obj .:? "SslSupportMethod")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistributionViewerCertificate' containing
@@ -65,7 +66,7 @@
 cfdvcAcmCertificateArn = lens _cloudFrontDistributionViewerCertificateAcmCertificateArn (\s a -> s { _cloudFrontDistributionViewerCertificateAcmCertificateArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-cloudfrontdefaultcertificate
-cfdvcCloudFrontDefaultCertificate :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Bool'))
+cfdvcCloudFrontDefaultCertificate :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Bool))
 cfdvcCloudFrontDefaultCertificate = lens _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate (\s a -> s { _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-iamcertificateid
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudWatchAlarmDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html
 
@@ -26,15 +27,15 @@
   toJSON CloudWatchAlarmDimension{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _cloudWatchAlarmDimensionName)
-    , Just ("Value" .= _cloudWatchAlarmDimensionValue)
+    [ (Just . ("Name",) . toJSON) _cloudWatchAlarmDimensionName
+    , (Just . ("Value",) . toJSON) _cloudWatchAlarmDimensionValue
     ]
 
 instance FromJSON CloudWatchAlarmDimension where
   parseJSON (Object obj) =
     CloudWatchAlarmDimension <$>
-      obj .: "Name" <*>
-      obj .: "Value"
+      (obj .: "Name") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudWatchAlarmDimension' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectArtifacts.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html
 
@@ -30,23 +31,23 @@
   toJSON CodeBuildProjectArtifacts{..} =
     object $
     catMaybes
-    [ ("Location" .=) <$> _codeBuildProjectArtifactsLocation
-    , ("Name" .=) <$> _codeBuildProjectArtifactsName
-    , ("NamespaceType" .=) <$> _codeBuildProjectArtifactsNamespaceType
-    , ("Packaging" .=) <$> _codeBuildProjectArtifactsPackaging
-    , ("Path" .=) <$> _codeBuildProjectArtifactsPath
-    , Just ("Type" .= _codeBuildProjectArtifactsType)
+    [ fmap (("Location",) . toJSON) _codeBuildProjectArtifactsLocation
+    , fmap (("Name",) . toJSON) _codeBuildProjectArtifactsName
+    , fmap (("NamespaceType",) . toJSON) _codeBuildProjectArtifactsNamespaceType
+    , fmap (("Packaging",) . toJSON) _codeBuildProjectArtifactsPackaging
+    , fmap (("Path",) . toJSON) _codeBuildProjectArtifactsPath
+    , (Just . ("Type",) . toJSON) _codeBuildProjectArtifactsType
     ]
 
 instance FromJSON CodeBuildProjectArtifacts where
   parseJSON (Object obj) =
     CodeBuildProjectArtifacts <$>
-      obj .:? "Location" <*>
-      obj .:? "Name" <*>
-      obj .:? "NamespaceType" <*>
-      obj .:? "Packaging" <*>
-      obj .:? "Path" <*>
-      obj .: "Type"
+      (obj .:? "Location") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "NamespaceType") <*>
+      (obj .:? "Packaging") <*>
+      (obj .:? "Path") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProjectArtifacts' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html
 
@@ -21,7 +22,7 @@
   { _codeBuildProjectEnvironmentComputeType :: Val Text
   , _codeBuildProjectEnvironmentEnvironmentVariables :: Maybe [CodeBuildProjectEnvironmentVariable]
   , _codeBuildProjectEnvironmentImage :: Val Text
-  , _codeBuildProjectEnvironmentPrivilegedMode :: Maybe (Val Bool')
+  , _codeBuildProjectEnvironmentPrivilegedMode :: Maybe (Val Bool)
   , _codeBuildProjectEnvironmentType :: Val Text
   } deriving (Show, Eq)
 
@@ -29,21 +30,21 @@
   toJSON CodeBuildProjectEnvironment{..} =
     object $
     catMaybes
-    [ Just ("ComputeType" .= _codeBuildProjectEnvironmentComputeType)
-    , ("EnvironmentVariables" .=) <$> _codeBuildProjectEnvironmentEnvironmentVariables
-    , Just ("Image" .= _codeBuildProjectEnvironmentImage)
-    , ("PrivilegedMode" .=) <$> _codeBuildProjectEnvironmentPrivilegedMode
-    , Just ("Type" .= _codeBuildProjectEnvironmentType)
+    [ (Just . ("ComputeType",) . toJSON) _codeBuildProjectEnvironmentComputeType
+    , fmap (("EnvironmentVariables",) . toJSON) _codeBuildProjectEnvironmentEnvironmentVariables
+    , (Just . ("Image",) . toJSON) _codeBuildProjectEnvironmentImage
+    , fmap (("PrivilegedMode",) . toJSON . fmap Bool') _codeBuildProjectEnvironmentPrivilegedMode
+    , (Just . ("Type",) . toJSON) _codeBuildProjectEnvironmentType
     ]
 
 instance FromJSON CodeBuildProjectEnvironment where
   parseJSON (Object obj) =
     CodeBuildProjectEnvironment <$>
-      obj .: "ComputeType" <*>
-      obj .:? "EnvironmentVariables" <*>
-      obj .: "Image" <*>
-      obj .:? "PrivilegedMode" <*>
-      obj .: "Type"
+      (obj .: "ComputeType") <*>
+      (obj .:? "EnvironmentVariables") <*>
+      (obj .: "Image") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "PrivilegedMode") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProjectEnvironment' containing required fields
@@ -75,7 +76,7 @@
 cbpeImage = lens _codeBuildProjectEnvironmentImage (\s a -> s { _codeBuildProjectEnvironmentImage = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-privilegedmode
-cbpePrivilegedMode :: Lens' CodeBuildProjectEnvironment (Maybe (Val Bool'))
+cbpePrivilegedMode :: Lens' CodeBuildProjectEnvironment (Maybe (Val Bool))
 cbpePrivilegedMode = lens _codeBuildProjectEnvironmentPrivilegedMode (\s a -> s { _codeBuildProjectEnvironmentPrivilegedMode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-type
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html
 
@@ -26,15 +27,15 @@
   toJSON CodeBuildProjectEnvironmentVariable{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _codeBuildProjectEnvironmentVariableName)
-    , Just ("Value" .= _codeBuildProjectEnvironmentVariableValue)
+    [ (Just . ("Name",) . toJSON) _codeBuildProjectEnvironmentVariableName
+    , (Just . ("Value",) . toJSON) _codeBuildProjectEnvironmentVariableValue
     ]
 
 instance FromJSON CodeBuildProjectEnvironmentVariable where
   parseJSON (Object obj) =
     CodeBuildProjectEnvironmentVariable <$>
-      obj .: "Name" <*>
-      obj .: "Value"
+      (obj .: "Name") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProjectEnvironmentVariable' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html
 
@@ -28,19 +29,19 @@
   toJSON CodeBuildProjectSource{..} =
     object $
     catMaybes
-    [ ("Auth" .=) <$> _codeBuildProjectSourceAuth
-    , ("BuildSpec" .=) <$> _codeBuildProjectSourceBuildSpec
-    , ("Location" .=) <$> _codeBuildProjectSourceLocation
-    , Just ("Type" .= _codeBuildProjectSourceType)
+    [ fmap (("Auth",) . toJSON) _codeBuildProjectSourceAuth
+    , fmap (("BuildSpec",) . toJSON) _codeBuildProjectSourceBuildSpec
+    , fmap (("Location",) . toJSON) _codeBuildProjectSourceLocation
+    , (Just . ("Type",) . toJSON) _codeBuildProjectSourceType
     ]
 
 instance FromJSON CodeBuildProjectSource where
   parseJSON (Object obj) =
     CodeBuildProjectSource <$>
-      obj .:? "Auth" <*>
-      obj .:? "BuildSpec" <*>
-      obj .:? "Location" <*>
-      obj .: "Type"
+      (obj .:? "Auth") <*>
+      (obj .:? "BuildSpec") <*>
+      (obj .:? "Location") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProjectSource' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSourceAuth.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html
 
@@ -26,15 +27,15 @@
   toJSON CodeBuildProjectSourceAuth{..} =
     object $
     catMaybes
-    [ ("Resource" .=) <$> _codeBuildProjectSourceAuthResource
-    , ("Type" .=) <$> _codeBuildProjectSourceAuthType
+    [ fmap (("Resource",) . toJSON) _codeBuildProjectSourceAuthResource
+    , fmap (("Type",) . toJSON) _codeBuildProjectSourceAuthType
     ]
 
 instance FromJSON CodeBuildProjectSourceAuth where
   parseJSON (Object obj) =
     CodeBuildProjectSourceAuth <$>
-      obj .:? "Resource" <*>
-      obj .:? "Type"
+      (obj .:? "Resource") <*>
+      (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProjectSourceAuth' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs b/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeCommitRepositoryRepositoryTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html
 
@@ -19,10 +20,10 @@
 -- constructor.
 data CodeCommitRepositoryRepositoryTrigger =
   CodeCommitRepositoryRepositoryTrigger
-  { _codeCommitRepositoryRepositoryTriggerBranches :: Maybe [Val Text]
+  { _codeCommitRepositoryRepositoryTriggerBranches :: Maybe (ValList Text)
   , _codeCommitRepositoryRepositoryTriggerCustomData :: Maybe (Val Text)
   , _codeCommitRepositoryRepositoryTriggerDestinationArn :: Maybe (Val Text)
-  , _codeCommitRepositoryRepositoryTriggerEvents :: Maybe [Val Text]
+  , _codeCommitRepositoryRepositoryTriggerEvents :: Maybe (ValList Text)
   , _codeCommitRepositoryRepositoryTriggerName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,21 +31,21 @@
   toJSON CodeCommitRepositoryRepositoryTrigger{..} =
     object $
     catMaybes
-    [ ("Branches" .=) <$> _codeCommitRepositoryRepositoryTriggerBranches
-    , ("CustomData" .=) <$> _codeCommitRepositoryRepositoryTriggerCustomData
-    , ("DestinationArn" .=) <$> _codeCommitRepositoryRepositoryTriggerDestinationArn
-    , ("Events" .=) <$> _codeCommitRepositoryRepositoryTriggerEvents
-    , ("Name" .=) <$> _codeCommitRepositoryRepositoryTriggerName
+    [ fmap (("Branches",) . toJSON) _codeCommitRepositoryRepositoryTriggerBranches
+    , fmap (("CustomData",) . toJSON) _codeCommitRepositoryRepositoryTriggerCustomData
+    , fmap (("DestinationArn",) . toJSON) _codeCommitRepositoryRepositoryTriggerDestinationArn
+    , fmap (("Events",) . toJSON) _codeCommitRepositoryRepositoryTriggerEvents
+    , fmap (("Name",) . toJSON) _codeCommitRepositoryRepositoryTriggerName
     ]
 
 instance FromJSON CodeCommitRepositoryRepositoryTrigger where
   parseJSON (Object obj) =
     CodeCommitRepositoryRepositoryTrigger <$>
-      obj .:? "Branches" <*>
-      obj .:? "CustomData" <*>
-      obj .:? "DestinationArn" <*>
-      obj .:? "Events" <*>
-      obj .:? "Name"
+      (obj .:? "Branches") <*>
+      (obj .:? "CustomData") <*>
+      (obj .:? "DestinationArn") <*>
+      (obj .:? "Events") <*>
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeCommitRepositoryRepositoryTrigger' containing
@@ -61,7 +62,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-branches
-ccrrtBranches :: Lens' CodeCommitRepositoryRepositoryTrigger (Maybe [Val Text])
+ccrrtBranches :: Lens' CodeCommitRepositoryRepositoryTrigger (Maybe (ValList Text))
 ccrrtBranches = lens _codeCommitRepositoryRepositoryTriggerBranches (\s a -> s { _codeCommitRepositoryRepositoryTriggerBranches = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-customdata
@@ -73,7 +74,7 @@
 ccrrtDestinationArn = lens _codeCommitRepositoryRepositoryTriggerDestinationArn (\s a -> s { _codeCommitRepositoryRepositoryTriggerDestinationArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-events
-ccrrtEvents :: Lens' CodeCommitRepositoryRepositoryTrigger (Maybe [Val Text])
+ccrrtEvents :: Lens' CodeCommitRepositoryRepositoryTrigger (Maybe (ValList Text))
 ccrrtEvents = lens _codeCommitRepositoryRepositoryTriggerEvents (\s a -> s { _codeCommitRepositoryRepositoryTriggerEvents = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-name
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentConfigMinimumHealthyHosts.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html
 
@@ -21,29 +22,29 @@
 data CodeDeployDeploymentConfigMinimumHealthyHosts =
   CodeDeployDeploymentConfigMinimumHealthyHosts
   { _codeDeployDeploymentConfigMinimumHealthyHostsType :: Val Text
-  , _codeDeployDeploymentConfigMinimumHealthyHostsValue :: Val Integer'
+  , _codeDeployDeploymentConfigMinimumHealthyHostsValue :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON CodeDeployDeploymentConfigMinimumHealthyHosts where
   toJSON CodeDeployDeploymentConfigMinimumHealthyHosts{..} =
     object $
     catMaybes
-    [ Just ("Type" .= _codeDeployDeploymentConfigMinimumHealthyHostsType)
-    , Just ("Value" .= _codeDeployDeploymentConfigMinimumHealthyHostsValue)
+    [ (Just . ("Type",) . toJSON) _codeDeployDeploymentConfigMinimumHealthyHostsType
+    , (Just . ("Value",) . toJSON . fmap Integer') _codeDeployDeploymentConfigMinimumHealthyHostsValue
     ]
 
 instance FromJSON CodeDeployDeploymentConfigMinimumHealthyHosts where
   parseJSON (Object obj) =
     CodeDeployDeploymentConfigMinimumHealthyHosts <$>
-      obj .: "Type" <*>
-      obj .: "Value"
+      (obj .: "Type") <*>
+      fmap (fmap unInteger') (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentConfigMinimumHealthyHosts'
 -- containing required fields as arguments.
 codeDeployDeploymentConfigMinimumHealthyHosts
   :: Val Text -- ^ 'cddcmhhType'
-  -> Val Integer' -- ^ 'cddcmhhValue'
+  -> Val Integer -- ^ 'cddcmhhValue'
   -> CodeDeployDeploymentConfigMinimumHealthyHosts
 codeDeployDeploymentConfigMinimumHealthyHosts typearg valuearg =
   CodeDeployDeploymentConfigMinimumHealthyHosts
@@ -56,5 +57,5 @@
 cddcmhhType = lens _codeDeployDeploymentConfigMinimumHealthyHostsType (\s a -> s { _codeDeployDeploymentConfigMinimumHealthyHostsType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts-value
-cddcmhhValue :: Lens' CodeDeployDeploymentConfigMinimumHealthyHosts (Val Integer')
+cddcmhhValue :: Lens' CodeDeployDeploymentConfigMinimumHealthyHosts (Val Integer)
 cddcmhhValue = lens _codeDeployDeploymentConfigMinimumHealthyHostsValue (\s a -> s { _codeDeployDeploymentConfigMinimumHealthyHostsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarm.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html
 
@@ -25,13 +26,13 @@
   toJSON CodeDeployDeploymentGroupAlarm{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _codeDeployDeploymentGroupAlarmName
+    [ fmap (("Name",) . toJSON) _codeDeployDeploymentGroupAlarmName
     ]
 
 instance FromJSON CodeDeployDeploymentGroupAlarm where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupAlarm <$>
-      obj .:? "Name"
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupAlarm' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupAlarmConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html
 
@@ -21,25 +22,25 @@
 data CodeDeployDeploymentGroupAlarmConfiguration =
   CodeDeployDeploymentGroupAlarmConfiguration
   { _codeDeployDeploymentGroupAlarmConfigurationAlarms :: Maybe [CodeDeployDeploymentGroupAlarm]
-  , _codeDeployDeploymentGroupAlarmConfigurationEnabled :: Maybe (Val Bool')
-  , _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure :: Maybe (Val Bool')
+  , _codeDeployDeploymentGroupAlarmConfigurationEnabled :: Maybe (Val Bool)
+  , _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON CodeDeployDeploymentGroupAlarmConfiguration where
   toJSON CodeDeployDeploymentGroupAlarmConfiguration{..} =
     object $
     catMaybes
-    [ ("Alarms" .=) <$> _codeDeployDeploymentGroupAlarmConfigurationAlarms
-    , ("Enabled" .=) <$> _codeDeployDeploymentGroupAlarmConfigurationEnabled
-    , ("IgnorePollAlarmFailure" .=) <$> _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure
+    [ fmap (("Alarms",) . toJSON) _codeDeployDeploymentGroupAlarmConfigurationAlarms
+    , fmap (("Enabled",) . toJSON . fmap Bool') _codeDeployDeploymentGroupAlarmConfigurationEnabled
+    , fmap (("IgnorePollAlarmFailure",) . toJSON . fmap Bool') _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure
     ]
 
 instance FromJSON CodeDeployDeploymentGroupAlarmConfiguration where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupAlarmConfiguration <$>
-      obj .:? "Alarms" <*>
-      obj .:? "Enabled" <*>
-      obj .:? "IgnorePollAlarmFailure"
+      (obj .:? "Alarms") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IgnorePollAlarmFailure")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupAlarmConfiguration' containing
@@ -58,9 +59,9 @@
 cddgacAlarms = lens _codeDeployDeploymentGroupAlarmConfigurationAlarms (\s a -> s { _codeDeployDeploymentGroupAlarmConfigurationAlarms = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-enabled
-cddgacEnabled :: Lens' CodeDeployDeploymentGroupAlarmConfiguration (Maybe (Val Bool'))
+cddgacEnabled :: Lens' CodeDeployDeploymentGroupAlarmConfiguration (Maybe (Val Bool))
 cddgacEnabled = lens _codeDeployDeploymentGroupAlarmConfigurationEnabled (\s a -> s { _codeDeployDeploymentGroupAlarmConfigurationEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-ignorepollalarmfailure
-cddgacIgnorePollAlarmFailure :: Lens' CodeDeployDeploymentGroupAlarmConfiguration (Maybe (Val Bool'))
+cddgacIgnorePollAlarmFailure :: Lens' CodeDeployDeploymentGroupAlarmConfiguration (Maybe (Val Bool))
 cddgacIgnorePollAlarmFailure = lens _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure (\s a -> s { _codeDeployDeploymentGroupAlarmConfigurationIgnorePollAlarmFailure = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupDeployment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html
 
@@ -19,7 +20,7 @@
 data CodeDeployDeploymentGroupDeployment =
   CodeDeployDeploymentGroupDeployment
   { _codeDeployDeploymentGroupDeploymentDescription :: Maybe (Val Text)
-  , _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures :: Maybe (Val Bool')
+  , _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures :: Maybe (Val Bool)
   , _codeDeployDeploymentGroupDeploymentRevision :: CodeDeployDeploymentGroupRevisionLocation
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON CodeDeployDeploymentGroupDeployment{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _codeDeployDeploymentGroupDeploymentDescription
-    , ("IgnoreApplicationStopFailures" .=) <$> _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures
-    , Just ("Revision" .= _codeDeployDeploymentGroupDeploymentRevision)
+    [ fmap (("Description",) . toJSON) _codeDeployDeploymentGroupDeploymentDescription
+    , fmap (("IgnoreApplicationStopFailures",) . toJSON . fmap Bool') _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures
+    , (Just . ("Revision",) . toJSON) _codeDeployDeploymentGroupDeploymentRevision
     ]
 
 instance FromJSON CodeDeployDeploymentGroupDeployment where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupDeployment <$>
-      obj .:? "Description" <*>
-      obj .:? "IgnoreApplicationStopFailures" <*>
-      obj .: "Revision"
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IgnoreApplicationStopFailures") <*>
+      (obj .: "Revision")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupDeployment' containing required
@@ -57,7 +58,7 @@
 cddgdDescription = lens _codeDeployDeploymentGroupDeploymentDescription (\s a -> s { _codeDeployDeploymentGroupDeploymentDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-ignoreapplicationstopfailures
-cddgdIgnoreApplicationStopFailures :: Lens' CodeDeployDeploymentGroupDeployment (Maybe (Val Bool'))
+cddgdIgnoreApplicationStopFailures :: Lens' CodeDeployDeploymentGroupDeployment (Maybe (Val Bool))
 cddgdIgnoreApplicationStopFailures = lens _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures (\s a -> s { _codeDeployDeploymentGroupDeploymentIgnoreApplicationStopFailures = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupEC2TagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilters.html
 
@@ -28,17 +29,17 @@
   toJSON CodeDeployDeploymentGroupEC2TagFilter{..} =
     object $
     catMaybes
-    [ ("Key" .=) <$> _codeDeployDeploymentGroupEC2TagFilterKey
-    , ("Type" .=) <$> _codeDeployDeploymentGroupEC2TagFilterType
-    , ("Value" .=) <$> _codeDeployDeploymentGroupEC2TagFilterValue
+    [ fmap (("Key",) . toJSON) _codeDeployDeploymentGroupEC2TagFilterKey
+    , fmap (("Type",) . toJSON) _codeDeployDeploymentGroupEC2TagFilterType
+    , fmap (("Value",) . toJSON) _codeDeployDeploymentGroupEC2TagFilterValue
     ]
 
 instance FromJSON CodeDeployDeploymentGroupEC2TagFilter where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupEC2TagFilter <$>
-      obj .:? "Key" <*>
-      obj .:? "Type" <*>
-      obj .:? "Value"
+      (obj .:? "Key") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupEC2TagFilter' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupGitHubLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html
 
@@ -27,15 +28,15 @@
   toJSON CodeDeployDeploymentGroupGitHubLocation{..} =
     object $
     catMaybes
-    [ Just ("CommitId" .= _codeDeployDeploymentGroupGitHubLocationCommitId)
-    , Just ("Repository" .= _codeDeployDeploymentGroupGitHubLocationRepository)
+    [ (Just . ("CommitId",) . toJSON) _codeDeployDeploymentGroupGitHubLocationCommitId
+    , (Just . ("Repository",) . toJSON) _codeDeployDeploymentGroupGitHubLocationRepository
     ]
 
 instance FromJSON CodeDeployDeploymentGroupGitHubLocation where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupGitHubLocation <$>
-      obj .: "CommitId" <*>
-      obj .: "Repository"
+      (obj .: "CommitId") <*>
+      (obj .: "Repository")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupGitHubLocation' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupRevisionLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html
 
@@ -29,17 +30,17 @@
   toJSON CodeDeployDeploymentGroupRevisionLocation{..} =
     object $
     catMaybes
-    [ ("GitHubLocation" .=) <$> _codeDeployDeploymentGroupRevisionLocationGitHubLocation
-    , ("RevisionType" .=) <$> _codeDeployDeploymentGroupRevisionLocationRevisionType
-    , ("S3Location" .=) <$> _codeDeployDeploymentGroupRevisionLocationS3Location
+    [ fmap (("GitHubLocation",) . toJSON) _codeDeployDeploymentGroupRevisionLocationGitHubLocation
+    , fmap (("RevisionType",) . toJSON) _codeDeployDeploymentGroupRevisionLocationRevisionType
+    , fmap (("S3Location",) . toJSON) _codeDeployDeploymentGroupRevisionLocationS3Location
     ]
 
 instance FromJSON CodeDeployDeploymentGroupRevisionLocation where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupRevisionLocation <$>
-      obj .:? "GitHubLocation" <*>
-      obj .:? "RevisionType" <*>
-      obj .:? "S3Location"
+      (obj .:? "GitHubLocation") <*>
+      (obj .:? "RevisionType") <*>
+      (obj .:? "S3Location")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupRevisionLocation' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html
 
@@ -29,21 +30,21 @@
   toJSON CodeDeployDeploymentGroupS3Location{..} =
     object $
     catMaybes
-    [ Just ("Bucket" .= _codeDeployDeploymentGroupS3LocationBucket)
-    , ("BundleType" .=) <$> _codeDeployDeploymentGroupS3LocationBundleType
-    , ("ETag" .=) <$> _codeDeployDeploymentGroupS3LocationETag
-    , Just ("Key" .= _codeDeployDeploymentGroupS3LocationKey)
-    , ("Version" .=) <$> _codeDeployDeploymentGroupS3LocationVersion
+    [ (Just . ("Bucket",) . toJSON) _codeDeployDeploymentGroupS3LocationBucket
+    , fmap (("BundleType",) . toJSON) _codeDeployDeploymentGroupS3LocationBundleType
+    , fmap (("ETag",) . toJSON) _codeDeployDeploymentGroupS3LocationETag
+    , (Just . ("Key",) . toJSON) _codeDeployDeploymentGroupS3LocationKey
+    , fmap (("Version",) . toJSON) _codeDeployDeploymentGroupS3LocationVersion
     ]
 
 instance FromJSON CodeDeployDeploymentGroupS3Location where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupS3Location <$>
-      obj .: "Bucket" <*>
-      obj .:? "BundleType" <*>
-      obj .:? "ETag" <*>
-      obj .: "Key" <*>
-      obj .:? "Version"
+      (obj .: "Bucket") <*>
+      (obj .:? "BundleType") <*>
+      (obj .:? "ETag") <*>
+      (obj .: "Key") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupS3Location' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTagFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters.html
 
@@ -27,17 +28,17 @@
   toJSON CodeDeployDeploymentGroupTagFilter{..} =
     object $
     catMaybes
-    [ ("Key" .=) <$> _codeDeployDeploymentGroupTagFilterKey
-    , ("Type" .=) <$> _codeDeployDeploymentGroupTagFilterType
-    , ("Value" .=) <$> _codeDeployDeploymentGroupTagFilterValue
+    [ fmap (("Key",) . toJSON) _codeDeployDeploymentGroupTagFilterKey
+    , fmap (("Type",) . toJSON) _codeDeployDeploymentGroupTagFilterType
+    , fmap (("Value",) . toJSON) _codeDeployDeploymentGroupTagFilterValue
     ]
 
 instance FromJSON CodeDeployDeploymentGroupTagFilter where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupTagFilter <$>
-      obj .:? "Key" <*>
-      obj .:? "Type" <*>
-      obj .:? "Value"
+      (obj .:? "Key") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupTagFilter' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTriggerConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html
 
@@ -19,7 +20,7 @@
 -- constructor.
 data CodeDeployDeploymentGroupTriggerConfig =
   CodeDeployDeploymentGroupTriggerConfig
-  { _codeDeployDeploymentGroupTriggerConfigTriggerEvents :: Maybe [Val Text]
+  { _codeDeployDeploymentGroupTriggerConfigTriggerEvents :: Maybe (ValList Text)
   , _codeDeployDeploymentGroupTriggerConfigTriggerName :: Maybe (Val Text)
   , _codeDeployDeploymentGroupTriggerConfigTriggerTargetArn :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -28,17 +29,17 @@
   toJSON CodeDeployDeploymentGroupTriggerConfig{..} =
     object $
     catMaybes
-    [ ("TriggerEvents" .=) <$> _codeDeployDeploymentGroupTriggerConfigTriggerEvents
-    , ("TriggerName" .=) <$> _codeDeployDeploymentGroupTriggerConfigTriggerName
-    , ("TriggerTargetArn" .=) <$> _codeDeployDeploymentGroupTriggerConfigTriggerTargetArn
+    [ fmap (("TriggerEvents",) . toJSON) _codeDeployDeploymentGroupTriggerConfigTriggerEvents
+    , fmap (("TriggerName",) . toJSON) _codeDeployDeploymentGroupTriggerConfigTriggerName
+    , fmap (("TriggerTargetArn",) . toJSON) _codeDeployDeploymentGroupTriggerConfigTriggerTargetArn
     ]
 
 instance FromJSON CodeDeployDeploymentGroupTriggerConfig where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupTriggerConfig <$>
-      obj .:? "TriggerEvents" <*>
-      obj .:? "TriggerName" <*>
-      obj .:? "TriggerTargetArn"
+      (obj .:? "TriggerEvents") <*>
+      (obj .:? "TriggerName") <*>
+      (obj .:? "TriggerTargetArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupTriggerConfig' containing
@@ -53,7 +54,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggerevents
-cddgtcTriggerEvents :: Lens' CodeDeployDeploymentGroupTriggerConfig (Maybe [Val Text])
+cddgtcTriggerEvents :: Lens' CodeDeployDeploymentGroupTriggerConfig (Maybe (ValList Text))
 cddgtcTriggerEvents = lens _codeDeployDeploymentGroupTriggerConfigTriggerEvents (\s a -> s { _codeDeployDeploymentGroupTriggerConfigTriggerEvents = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggername
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeArtifactDetails.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html
 
@@ -20,30 +21,30 @@
 -- constructor.
 data CodePipelineCustomActionTypeArtifactDetails =
   CodePipelineCustomActionTypeArtifactDetails
-  { _codePipelineCustomActionTypeArtifactDetailsMaximumCount :: Val Integer'
-  , _codePipelineCustomActionTypeArtifactDetailsMinimumCount :: Val Integer'
+  { _codePipelineCustomActionTypeArtifactDetailsMaximumCount :: Val Integer
+  , _codePipelineCustomActionTypeArtifactDetailsMinimumCount :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON CodePipelineCustomActionTypeArtifactDetails where
   toJSON CodePipelineCustomActionTypeArtifactDetails{..} =
     object $
     catMaybes
-    [ Just ("MaximumCount" .= _codePipelineCustomActionTypeArtifactDetailsMaximumCount)
-    , Just ("MinimumCount" .= _codePipelineCustomActionTypeArtifactDetailsMinimumCount)
+    [ (Just . ("MaximumCount",) . toJSON . fmap Integer') _codePipelineCustomActionTypeArtifactDetailsMaximumCount
+    , (Just . ("MinimumCount",) . toJSON . fmap Integer') _codePipelineCustomActionTypeArtifactDetailsMinimumCount
     ]
 
 instance FromJSON CodePipelineCustomActionTypeArtifactDetails where
   parseJSON (Object obj) =
     CodePipelineCustomActionTypeArtifactDetails <$>
-      obj .: "MaximumCount" <*>
-      obj .: "MinimumCount"
+      fmap (fmap unInteger') (obj .: "MaximumCount") <*>
+      fmap (fmap unInteger') (obj .: "MinimumCount")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelineCustomActionTypeArtifactDetails' containing
 -- required fields as arguments.
 codePipelineCustomActionTypeArtifactDetails
-  :: Val Integer' -- ^ 'cpcatadMaximumCount'
-  -> Val Integer' -- ^ 'cpcatadMinimumCount'
+  :: Val Integer -- ^ 'cpcatadMaximumCount'
+  -> Val Integer -- ^ 'cpcatadMinimumCount'
   -> CodePipelineCustomActionTypeArtifactDetails
 codePipelineCustomActionTypeArtifactDetails maximumCountarg minimumCountarg =
   CodePipelineCustomActionTypeArtifactDetails
@@ -52,9 +53,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-maximumcount
-cpcatadMaximumCount :: Lens' CodePipelineCustomActionTypeArtifactDetails (Val Integer')
+cpcatadMaximumCount :: Lens' CodePipelineCustomActionTypeArtifactDetails (Val Integer)
 cpcatadMaximumCount = lens _codePipelineCustomActionTypeArtifactDetailsMaximumCount (\s a -> s { _codePipelineCustomActionTypeArtifactDetailsMaximumCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-minimumcount
-cpcatadMinimumCount :: Lens' CodePipelineCustomActionTypeArtifactDetails (Val Integer')
+cpcatadMinimumCount :: Lens' CodePipelineCustomActionTypeArtifactDetails (Val Integer)
 cpcatadMinimumCount = lens _codePipelineCustomActionTypeArtifactDetailsMinimumCount (\s a -> s { _codePipelineCustomActionTypeArtifactDetailsMinimumCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeConfigurationProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html
 
@@ -21,11 +22,11 @@
 data CodePipelineCustomActionTypeConfigurationProperties =
   CodePipelineCustomActionTypeConfigurationProperties
   { _codePipelineCustomActionTypeConfigurationPropertiesDescription :: Maybe (Val Text)
-  , _codePipelineCustomActionTypeConfigurationPropertiesKey :: Val Bool'
+  , _codePipelineCustomActionTypeConfigurationPropertiesKey :: Val Bool
   , _codePipelineCustomActionTypeConfigurationPropertiesName :: Val Text
-  , _codePipelineCustomActionTypeConfigurationPropertiesQueryable :: Maybe (Val Bool')
-  , _codePipelineCustomActionTypeConfigurationPropertiesRequired :: Val Bool'
-  , _codePipelineCustomActionTypeConfigurationPropertiesSecret :: Val Bool'
+  , _codePipelineCustomActionTypeConfigurationPropertiesQueryable :: Maybe (Val Bool)
+  , _codePipelineCustomActionTypeConfigurationPropertiesRequired :: Val Bool
+  , _codePipelineCustomActionTypeConfigurationPropertiesSecret :: Val Bool
   , _codePipelineCustomActionTypeConfigurationPropertiesType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -33,34 +34,34 @@
   toJSON CodePipelineCustomActionTypeConfigurationProperties{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _codePipelineCustomActionTypeConfigurationPropertiesDescription
-    , Just ("Key" .= _codePipelineCustomActionTypeConfigurationPropertiesKey)
-    , Just ("Name" .= _codePipelineCustomActionTypeConfigurationPropertiesName)
-    , ("Queryable" .=) <$> _codePipelineCustomActionTypeConfigurationPropertiesQueryable
-    , Just ("Required" .= _codePipelineCustomActionTypeConfigurationPropertiesRequired)
-    , Just ("Secret" .= _codePipelineCustomActionTypeConfigurationPropertiesSecret)
-    , ("Type" .=) <$> _codePipelineCustomActionTypeConfigurationPropertiesType
+    [ fmap (("Description",) . toJSON) _codePipelineCustomActionTypeConfigurationPropertiesDescription
+    , (Just . ("Key",) . toJSON . fmap Bool') _codePipelineCustomActionTypeConfigurationPropertiesKey
+    , (Just . ("Name",) . toJSON) _codePipelineCustomActionTypeConfigurationPropertiesName
+    , fmap (("Queryable",) . toJSON . fmap Bool') _codePipelineCustomActionTypeConfigurationPropertiesQueryable
+    , (Just . ("Required",) . toJSON . fmap Bool') _codePipelineCustomActionTypeConfigurationPropertiesRequired
+    , (Just . ("Secret",) . toJSON . fmap Bool') _codePipelineCustomActionTypeConfigurationPropertiesSecret
+    , fmap (("Type",) . toJSON) _codePipelineCustomActionTypeConfigurationPropertiesType
     ]
 
 instance FromJSON CodePipelineCustomActionTypeConfigurationProperties where
   parseJSON (Object obj) =
     CodePipelineCustomActionTypeConfigurationProperties <$>
-      obj .:? "Description" <*>
-      obj .: "Key" <*>
-      obj .: "Name" <*>
-      obj .:? "Queryable" <*>
-      obj .: "Required" <*>
-      obj .: "Secret" <*>
-      obj .:? "Type"
+      (obj .:? "Description") <*>
+      fmap (fmap unBool') (obj .: "Key") <*>
+      (obj .: "Name") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Queryable") <*>
+      fmap (fmap unBool') (obj .: "Required") <*>
+      fmap (fmap unBool') (obj .: "Secret") <*>
+      (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelineCustomActionTypeConfigurationProperties'
 -- containing required fields as arguments.
 codePipelineCustomActionTypeConfigurationProperties
-  :: Val Bool' -- ^ 'cpcatcpKey'
+  :: Val Bool -- ^ 'cpcatcpKey'
   -> Val Text -- ^ 'cpcatcpName'
-  -> Val Bool' -- ^ 'cpcatcpRequired'
-  -> Val Bool' -- ^ 'cpcatcpSecret'
+  -> Val Bool -- ^ 'cpcatcpRequired'
+  -> Val Bool -- ^ 'cpcatcpSecret'
   -> CodePipelineCustomActionTypeConfigurationProperties
 codePipelineCustomActionTypeConfigurationProperties keyarg namearg requiredarg secretarg =
   CodePipelineCustomActionTypeConfigurationProperties
@@ -78,7 +79,7 @@
 cpcatcpDescription = lens _codePipelineCustomActionTypeConfigurationPropertiesDescription (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-key
-cpcatcpKey :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool')
+cpcatcpKey :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool)
 cpcatcpKey = lens _codePipelineCustomActionTypeConfigurationPropertiesKey (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-name
@@ -86,15 +87,15 @@
 cpcatcpName = lens _codePipelineCustomActionTypeConfigurationPropertiesName (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-queryable
-cpcatcpQueryable :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Maybe (Val Bool'))
+cpcatcpQueryable :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Maybe (Val Bool))
 cpcatcpQueryable = lens _codePipelineCustomActionTypeConfigurationPropertiesQueryable (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesQueryable = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-required
-cpcatcpRequired :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool')
+cpcatcpRequired :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool)
 cpcatcpRequired = lens _codePipelineCustomActionTypeConfigurationPropertiesRequired (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesRequired = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-secret
-cpcatcpSecret :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool')
+cpcatcpSecret :: Lens' CodePipelineCustomActionTypeConfigurationProperties (Val Bool)
 cpcatcpSecret = lens _codePipelineCustomActionTypeConfigurationPropertiesSecret (\s a -> s { _codePipelineCustomActionTypeConfigurationPropertiesSecret = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-type
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineCustomActionTypeSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html
 
@@ -28,19 +29,19 @@
   toJSON CodePipelineCustomActionTypeSettings{..} =
     object $
     catMaybes
-    [ ("EntityUrlTemplate" .=) <$> _codePipelineCustomActionTypeSettingsEntityUrlTemplate
-    , ("ExecutionUrlTemplate" .=) <$> _codePipelineCustomActionTypeSettingsExecutionUrlTemplate
-    , ("RevisionUrlTemplate" .=) <$> _codePipelineCustomActionTypeSettingsRevisionUrlTemplate
-    , ("ThirdPartyConfigurationUrl" .=) <$> _codePipelineCustomActionTypeSettingsThirdPartyConfigurationUrl
+    [ fmap (("EntityUrlTemplate",) . toJSON) _codePipelineCustomActionTypeSettingsEntityUrlTemplate
+    , fmap (("ExecutionUrlTemplate",) . toJSON) _codePipelineCustomActionTypeSettingsExecutionUrlTemplate
+    , fmap (("RevisionUrlTemplate",) . toJSON) _codePipelineCustomActionTypeSettingsRevisionUrlTemplate
+    , fmap (("ThirdPartyConfigurationUrl",) . toJSON) _codePipelineCustomActionTypeSettingsThirdPartyConfigurationUrl
     ]
 
 instance FromJSON CodePipelineCustomActionTypeSettings where
   parseJSON (Object obj) =
     CodePipelineCustomActionTypeSettings <$>
-      obj .:? "EntityUrlTemplate" <*>
-      obj .:? "ExecutionUrlTemplate" <*>
-      obj .:? "RevisionUrlTemplate" <*>
-      obj .:? "ThirdPartyConfigurationUrl"
+      (obj .:? "EntityUrlTemplate") <*>
+      (obj .:? "ExecutionUrlTemplate") <*>
+      (obj .:? "RevisionUrlTemplate") <*>
+      (obj .:? "ThirdPartyConfigurationUrl")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelineCustomActionTypeSettings' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html
 
@@ -27,32 +28,32 @@
   , _codePipelinePipelineActionDeclarationName :: Val Text
   , _codePipelinePipelineActionDeclarationOutputArtifacts :: Maybe [CodePipelinePipelineOutputArtifact]
   , _codePipelinePipelineActionDeclarationRoleArn :: Maybe (Val Text)
-  , _codePipelinePipelineActionDeclarationRunOrder :: Maybe (Val Integer')
+  , _codePipelinePipelineActionDeclarationRunOrder :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON CodePipelinePipelineActionDeclaration where
   toJSON CodePipelinePipelineActionDeclaration{..} =
     object $
     catMaybes
-    [ Just ("ActionTypeId" .= _codePipelinePipelineActionDeclarationActionTypeId)
-    , ("Configuration" .=) <$> _codePipelinePipelineActionDeclarationConfiguration
-    , ("InputArtifacts" .=) <$> _codePipelinePipelineActionDeclarationInputArtifacts
-    , Just ("Name" .= _codePipelinePipelineActionDeclarationName)
-    , ("OutputArtifacts" .=) <$> _codePipelinePipelineActionDeclarationOutputArtifacts
-    , ("RoleArn" .=) <$> _codePipelinePipelineActionDeclarationRoleArn
-    , ("RunOrder" .=) <$> _codePipelinePipelineActionDeclarationRunOrder
+    [ (Just . ("ActionTypeId",) . toJSON) _codePipelinePipelineActionDeclarationActionTypeId
+    , fmap (("Configuration",) . toJSON) _codePipelinePipelineActionDeclarationConfiguration
+    , fmap (("InputArtifacts",) . toJSON) _codePipelinePipelineActionDeclarationInputArtifacts
+    , (Just . ("Name",) . toJSON) _codePipelinePipelineActionDeclarationName
+    , fmap (("OutputArtifacts",) . toJSON) _codePipelinePipelineActionDeclarationOutputArtifacts
+    , fmap (("RoleArn",) . toJSON) _codePipelinePipelineActionDeclarationRoleArn
+    , fmap (("RunOrder",) . toJSON . fmap Integer') _codePipelinePipelineActionDeclarationRunOrder
     ]
 
 instance FromJSON CodePipelinePipelineActionDeclaration where
   parseJSON (Object obj) =
     CodePipelinePipelineActionDeclaration <$>
-      obj .: "ActionTypeId" <*>
-      obj .:? "Configuration" <*>
-      obj .:? "InputArtifacts" <*>
-      obj .: "Name" <*>
-      obj .:? "OutputArtifacts" <*>
-      obj .:? "RoleArn" <*>
-      obj .:? "RunOrder"
+      (obj .: "ActionTypeId") <*>
+      (obj .:? "Configuration") <*>
+      (obj .:? "InputArtifacts") <*>
+      (obj .: "Name") <*>
+      (obj .:? "OutputArtifacts") <*>
+      (obj .:? "RoleArn") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "RunOrder")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineActionDeclaration' containing
@@ -97,5 +98,5 @@
 cppadRoleArn = lens _codePipelinePipelineActionDeclarationRoleArn (\s a -> s { _codePipelinePipelineActionDeclarationRoleArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-runorder
-cppadRunOrder :: Lens' CodePipelinePipelineActionDeclaration (Maybe (Val Integer'))
+cppadRunOrder :: Lens' CodePipelinePipelineActionDeclaration (Maybe (Val Integer))
 cppadRunOrder = lens _codePipelinePipelineActionDeclarationRunOrder (\s a -> s { _codePipelinePipelineActionDeclarationRunOrder = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionTypeId.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html
 
@@ -28,19 +29,19 @@
   toJSON CodePipelinePipelineActionTypeId{..} =
     object $
     catMaybes
-    [ Just ("Category" .= _codePipelinePipelineActionTypeIdCategory)
-    , Just ("Owner" .= _codePipelinePipelineActionTypeIdOwner)
-    , Just ("Provider" .= _codePipelinePipelineActionTypeIdProvider)
-    , Just ("Version" .= _codePipelinePipelineActionTypeIdVersion)
+    [ (Just . ("Category",) . toJSON) _codePipelinePipelineActionTypeIdCategory
+    , (Just . ("Owner",) . toJSON) _codePipelinePipelineActionTypeIdOwner
+    , (Just . ("Provider",) . toJSON) _codePipelinePipelineActionTypeIdProvider
+    , (Just . ("Version",) . toJSON) _codePipelinePipelineActionTypeIdVersion
     ]
 
 instance FromJSON CodePipelinePipelineActionTypeId where
   parseJSON (Object obj) =
     CodePipelinePipelineActionTypeId <$>
-      obj .: "Category" <*>
-      obj .: "Owner" <*>
-      obj .: "Provider" <*>
-      obj .: "Version"
+      (obj .: "Category") <*>
+      (obj .: "Owner") <*>
+      (obj .: "Provider") <*>
+      (obj .: "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineActionTypeId' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStore.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html
 
@@ -27,17 +28,17 @@
   toJSON CodePipelinePipelineArtifactStore{..} =
     object $
     catMaybes
-    [ ("EncryptionKey" .=) <$> _codePipelinePipelineArtifactStoreEncryptionKey
-    , Just ("Location" .= _codePipelinePipelineArtifactStoreLocation)
-    , Just ("Type" .= _codePipelinePipelineArtifactStoreType)
+    [ fmap (("EncryptionKey",) . toJSON) _codePipelinePipelineArtifactStoreEncryptionKey
+    , (Just . ("Location",) . toJSON) _codePipelinePipelineArtifactStoreLocation
+    , (Just . ("Type",) . toJSON) _codePipelinePipelineArtifactStoreType
     ]
 
 instance FromJSON CodePipelinePipelineArtifactStore where
   parseJSON (Object obj) =
     CodePipelinePipelineArtifactStore <$>
-      obj .:? "EncryptionKey" <*>
-      obj .: "Location" <*>
-      obj .: "Type"
+      (obj .:? "EncryptionKey") <*>
+      (obj .: "Location") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineArtifactStore' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineBlockerDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-blockers.html
 
@@ -27,15 +28,15 @@
   toJSON CodePipelinePipelineBlockerDeclaration{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _codePipelinePipelineBlockerDeclarationName)
-    , Just ("Type" .= _codePipelinePipelineBlockerDeclarationType)
+    [ (Just . ("Name",) . toJSON) _codePipelinePipelineBlockerDeclarationName
+    , (Just . ("Type",) . toJSON) _codePipelinePipelineBlockerDeclarationType
     ]
 
 instance FromJSON CodePipelinePipelineBlockerDeclaration where
   parseJSON (Object obj) =
     CodePipelinePipelineBlockerDeclaration <$>
-      obj .: "Name" <*>
-      obj .: "Type"
+      (obj .: "Name") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineBlockerDeclaration' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineEncryptionKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore-encryptionkey.html
 
@@ -26,15 +27,15 @@
   toJSON CodePipelinePipelineEncryptionKey{..} =
     object $
     catMaybes
-    [ Just ("Id" .= _codePipelinePipelineEncryptionKeyId)
-    , Just ("Type" .= _codePipelinePipelineEncryptionKeyType)
+    [ (Just . ("Id",) . toJSON) _codePipelinePipelineEncryptionKeyId
+    , (Just . ("Type",) . toJSON) _codePipelinePipelineEncryptionKeyType
     ]
 
 instance FromJSON CodePipelinePipelineEncryptionKey where
   parseJSON (Object obj) =
     CodePipelinePipelineEncryptionKey <$>
-      obj .: "Id" <*>
-      obj .: "Type"
+      (obj .: "Id") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineEncryptionKey' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineInputArtifact.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-inputartifacts.html
 
@@ -25,13 +26,13 @@
   toJSON CodePipelinePipelineInputArtifact{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _codePipelinePipelineInputArtifactName)
+    [ (Just . ("Name",) . toJSON) _codePipelinePipelineInputArtifactName
     ]
 
 instance FromJSON CodePipelinePipelineInputArtifact where
   parseJSON (Object obj) =
     CodePipelinePipelineInputArtifact <$>
-      obj .: "Name"
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineInputArtifact' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineOutputArtifact.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-outputartifacts.html
 
@@ -25,13 +26,13 @@
   toJSON CodePipelinePipelineOutputArtifact{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _codePipelinePipelineOutputArtifactName)
+    [ (Just . ("Name",) . toJSON) _codePipelinePipelineOutputArtifactName
     ]
 
 instance FromJSON CodePipelinePipelineOutputArtifact where
   parseJSON (Object obj) =
     CodePipelinePipelineOutputArtifact <$>
-      obj .: "Name"
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineOutputArtifact' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageDeclaration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html
 
@@ -28,17 +29,17 @@
   toJSON CodePipelinePipelineStageDeclaration{..} =
     object $
     catMaybes
-    [ Just ("Actions" .= _codePipelinePipelineStageDeclarationActions)
-    , ("Blockers" .=) <$> _codePipelinePipelineStageDeclarationBlockers
-    , Just ("Name" .= _codePipelinePipelineStageDeclarationName)
+    [ (Just . ("Actions",) . toJSON) _codePipelinePipelineStageDeclarationActions
+    , fmap (("Blockers",) . toJSON) _codePipelinePipelineStageDeclarationBlockers
+    , (Just . ("Name",) . toJSON) _codePipelinePipelineStageDeclarationName
     ]
 
 instance FromJSON CodePipelinePipelineStageDeclaration where
   parseJSON (Object obj) =
     CodePipelinePipelineStageDeclaration <$>
-      obj .: "Actions" <*>
-      obj .:? "Blockers" <*>
-      obj .: "Name"
+      (obj .: "Actions") <*>
+      (obj .:? "Blockers") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineStageDeclaration' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineStageTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-disableinboundstagetransitions.html
 
@@ -26,15 +27,15 @@
   toJSON CodePipelinePipelineStageTransition{..} =
     object $
     catMaybes
-    [ Just ("Reason" .= _codePipelinePipelineStageTransitionReason)
-    , Just ("StageName" .= _codePipelinePipelineStageTransitionStageName)
+    [ (Just . ("Reason",) . toJSON) _codePipelinePipelineStageTransitionReason
+    , (Just . ("StageName",) . toJSON) _codePipelinePipelineStageTransitionStageName
     ]
 
 instance FromJSON CodePipelinePipelineStageTransition where
   parseJSON (Object obj) =
     CodePipelinePipelineStageTransition <$>
-      obj .: "Reason" <*>
-      obj .: "StageName"
+      (obj .: "Reason") <*>
+      (obj .: "StageName")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipelineStageTransition' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoIdentityProvider.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html
 
@@ -21,24 +22,24 @@
   CognitoIdentityPoolCognitoIdentityProvider
   { _cognitoIdentityPoolCognitoIdentityProviderClientId :: Maybe (Val Text)
   , _cognitoIdentityPoolCognitoIdentityProviderProviderName :: Maybe (Val Text)
-  , _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck :: Maybe (Val Bool')
+  , _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON CognitoIdentityPoolCognitoIdentityProvider where
   toJSON CognitoIdentityPoolCognitoIdentityProvider{..} =
     object $
     catMaybes
-    [ ("ClientId" .=) <$> _cognitoIdentityPoolCognitoIdentityProviderClientId
-    , ("ProviderName" .=) <$> _cognitoIdentityPoolCognitoIdentityProviderProviderName
-    , ("ServerSideTokenCheck" .=) <$> _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck
+    [ fmap (("ClientId",) . toJSON) _cognitoIdentityPoolCognitoIdentityProviderClientId
+    , fmap (("ProviderName",) . toJSON) _cognitoIdentityPoolCognitoIdentityProviderProviderName
+    , fmap (("ServerSideTokenCheck",) . toJSON . fmap Bool') _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck
     ]
 
 instance FromJSON CognitoIdentityPoolCognitoIdentityProvider where
   parseJSON (Object obj) =
     CognitoIdentityPoolCognitoIdentityProvider <$>
-      obj .:? "ClientId" <*>
-      obj .:? "ProviderName" <*>
-      obj .:? "ServerSideTokenCheck"
+      (obj .:? "ClientId") <*>
+      (obj .:? "ProviderName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ServerSideTokenCheck")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolCognitoIdentityProvider' containing
@@ -61,5 +62,5 @@
 cipcipProviderName = lens _cognitoIdentityPoolCognitoIdentityProviderProviderName (\s a -> s { _cognitoIdentityPoolCognitoIdentityProviderProviderName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html#cfn-cognito-identitypool-cognitoidentityprovider-serversidetokencheck
-cipcipServerSideTokenCheck :: Lens' CognitoIdentityPoolCognitoIdentityProvider (Maybe (Val Bool'))
+cipcipServerSideTokenCheck :: Lens' CognitoIdentityPoolCognitoIdentityProvider (Maybe (Val Bool))
 cipcipServerSideTokenCheck = lens _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck (\s a -> s { _cognitoIdentityPoolCognitoIdentityProviderServerSideTokenCheck = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolCognitoStreams.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html
 
@@ -27,17 +28,17 @@
   toJSON CognitoIdentityPoolCognitoStreams{..} =
     object $
     catMaybes
-    [ ("RoleArn" .=) <$> _cognitoIdentityPoolCognitoStreamsRoleArn
-    , ("StreamName" .=) <$> _cognitoIdentityPoolCognitoStreamsStreamName
-    , ("StreamingStatus" .=) <$> _cognitoIdentityPoolCognitoStreamsStreamingStatus
+    [ fmap (("RoleArn",) . toJSON) _cognitoIdentityPoolCognitoStreamsRoleArn
+    , fmap (("StreamName",) . toJSON) _cognitoIdentityPoolCognitoStreamsStreamName
+    , fmap (("StreamingStatus",) . toJSON) _cognitoIdentityPoolCognitoStreamsStreamingStatus
     ]
 
 instance FromJSON CognitoIdentityPoolCognitoStreams where
   parseJSON (Object obj) =
     CognitoIdentityPoolCognitoStreams <$>
-      obj .:? "RoleArn" <*>
-      obj .:? "StreamName" <*>
-      obj .:? "StreamingStatus"
+      (obj .:? "RoleArn") <*>
+      (obj .:? "StreamName") <*>
+      (obj .:? "StreamingStatus")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolCognitoStreams' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolPushSync.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html
 
@@ -18,7 +19,7 @@
 -- 'cognitoIdentityPoolPushSync' for a more convenient constructor.
 data CognitoIdentityPoolPushSync =
   CognitoIdentityPoolPushSync
-  { _cognitoIdentityPoolPushSyncApplicationArns :: Maybe [Val Text]
+  { _cognitoIdentityPoolPushSyncApplicationArns :: Maybe (ValList Text)
   , _cognitoIdentityPoolPushSyncRoleArn :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -26,15 +27,15 @@
   toJSON CognitoIdentityPoolPushSync{..} =
     object $
     catMaybes
-    [ ("ApplicationArns" .=) <$> _cognitoIdentityPoolPushSyncApplicationArns
-    , ("RoleArn" .=) <$> _cognitoIdentityPoolPushSyncRoleArn
+    [ fmap (("ApplicationArns",) . toJSON) _cognitoIdentityPoolPushSyncApplicationArns
+    , fmap (("RoleArn",) . toJSON) _cognitoIdentityPoolPushSyncRoleArn
     ]
 
 instance FromJSON CognitoIdentityPoolPushSync where
   parseJSON (Object obj) =
     CognitoIdentityPoolPushSync <$>
-      obj .:? "ApplicationArns" <*>
-      obj .:? "RoleArn"
+      (obj .:? "ApplicationArns") <*>
+      (obj .:? "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolPushSync' containing required fields
@@ -48,7 +49,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html#cfn-cognito-identitypool-pushsync-applicationarns
-cippsApplicationArns :: Lens' CognitoIdentityPoolPushSync (Maybe [Val Text])
+cippsApplicationArns :: Lens' CognitoIdentityPoolPushSync (Maybe (ValList Text))
 cippsApplicationArns = lens _cognitoIdentityPoolPushSyncApplicationArns (\s a -> s { _cognitoIdentityPoolPushSyncApplicationArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html#cfn-cognito-identitypool-pushsync-rolearn
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentMappingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html
 
@@ -30,19 +31,19 @@
   toJSON CognitoIdentityPoolRoleAttachmentMappingRule{..} =
     object $
     catMaybes
-    [ Just ("Claim" .= _cognitoIdentityPoolRoleAttachmentMappingRuleClaim)
-    , Just ("MatchType" .= _cognitoIdentityPoolRoleAttachmentMappingRuleMatchType)
-    , Just ("RoleARN" .= _cognitoIdentityPoolRoleAttachmentMappingRuleRoleARN)
-    , Just ("Value" .= _cognitoIdentityPoolRoleAttachmentMappingRuleValue)
+    [ (Just . ("Claim",) . toJSON) _cognitoIdentityPoolRoleAttachmentMappingRuleClaim
+    , (Just . ("MatchType",) . toJSON) _cognitoIdentityPoolRoleAttachmentMappingRuleMatchType
+    , (Just . ("RoleARN",) . toJSON) _cognitoIdentityPoolRoleAttachmentMappingRuleRoleARN
+    , (Just . ("Value",) . toJSON) _cognitoIdentityPoolRoleAttachmentMappingRuleValue
     ]
 
 instance FromJSON CognitoIdentityPoolRoleAttachmentMappingRule where
   parseJSON (Object obj) =
     CognitoIdentityPoolRoleAttachmentMappingRule <$>
-      obj .: "Claim" <*>
-      obj .: "MatchType" <*>
-      obj .: "RoleARN" <*>
-      obj .: "Value"
+      (obj .: "Claim") <*>
+      (obj .: "MatchType") <*>
+      (obj .: "RoleARN") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolRoleAttachmentMappingRule' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRoleMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html
 
@@ -29,17 +30,17 @@
   toJSON CognitoIdentityPoolRoleAttachmentRoleMapping{..} =
     object $
     catMaybes
-    [ ("AmbiguousRoleResolution" .=) <$> _cognitoIdentityPoolRoleAttachmentRoleMappingAmbiguousRoleResolution
-    , ("RulesConfiguration" .=) <$> _cognitoIdentityPoolRoleAttachmentRoleMappingRulesConfiguration
-    , Just ("Type" .= _cognitoIdentityPoolRoleAttachmentRoleMappingType)
+    [ fmap (("AmbiguousRoleResolution",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappingAmbiguousRoleResolution
+    , fmap (("RulesConfiguration",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappingRulesConfiguration
+    , (Just . ("Type",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappingType
     ]
 
 instance FromJSON CognitoIdentityPoolRoleAttachmentRoleMapping where
   parseJSON (Object obj) =
     CognitoIdentityPoolRoleAttachmentRoleMapping <$>
-      obj .:? "AmbiguousRoleResolution" <*>
-      obj .:? "RulesConfiguration" <*>
-      obj .: "Type"
+      (obj .:? "AmbiguousRoleResolution") <*>
+      (obj .:? "RulesConfiguration") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolRoleAttachmentRoleMapping' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping-rulesconfiguration.html
 
@@ -27,13 +28,13 @@
   toJSON CognitoIdentityPoolRoleAttachmentRulesConfigurationType{..} =
     object $
     catMaybes
-    [ Just ("Rules" .= _cognitoIdentityPoolRoleAttachmentRulesConfigurationTypeRules)
+    [ (Just . ("Rules",) . toJSON) _cognitoIdentityPoolRoleAttachmentRulesConfigurationTypeRules
     ]
 
 instance FromJSON CognitoIdentityPoolRoleAttachmentRulesConfigurationType where
   parseJSON (Object obj) =
     CognitoIdentityPoolRoleAttachmentRulesConfigurationType <$>
-      obj .: "Rules"
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolRoleAttachmentRulesConfigurationType'
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolAdminCreateUserConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html
 
@@ -18,26 +19,26 @@
 -- 'cognitoUserPoolAdminCreateUserConfig' for a more convenient constructor.
 data CognitoUserPoolAdminCreateUserConfig =
   CognitoUserPoolAdminCreateUserConfig
-  { _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly :: Maybe (Val Bool')
+  { _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly :: Maybe (Val Bool)
   , _cognitoUserPoolAdminCreateUserConfigInviteMessageTemplate :: Maybe CognitoUserPoolInviteMessageTemplate
-  , _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays :: Maybe (Val Double')
+  , _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays :: Maybe (Val Double)
   } deriving (Show, Eq)
 
 instance ToJSON CognitoUserPoolAdminCreateUserConfig where
   toJSON CognitoUserPoolAdminCreateUserConfig{..} =
     object $
     catMaybes
-    [ ("AllowAdminCreateUserOnly" .=) <$> _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly
-    , ("InviteMessageTemplate" .=) <$> _cognitoUserPoolAdminCreateUserConfigInviteMessageTemplate
-    , ("UnusedAccountValidityDays" .=) <$> _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays
+    [ fmap (("AllowAdminCreateUserOnly",) . toJSON . fmap Bool') _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly
+    , fmap (("InviteMessageTemplate",) . toJSON) _cognitoUserPoolAdminCreateUserConfigInviteMessageTemplate
+    , fmap (("UnusedAccountValidityDays",) . toJSON . fmap Double') _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays
     ]
 
 instance FromJSON CognitoUserPoolAdminCreateUserConfig where
   parseJSON (Object obj) =
     CognitoUserPoolAdminCreateUserConfig <$>
-      obj .:? "AllowAdminCreateUserOnly" <*>
-      obj .:? "InviteMessageTemplate" <*>
-      obj .:? "UnusedAccountValidityDays"
+      fmap (fmap (fmap unBool')) (obj .:? "AllowAdminCreateUserOnly") <*>
+      (obj .:? "InviteMessageTemplate") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "UnusedAccountValidityDays")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolAdminCreateUserConfig' containing
@@ -52,7 +53,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-allowadmincreateuseronly
-cupacucAllowAdminCreateUserOnly :: Lens' CognitoUserPoolAdminCreateUserConfig (Maybe (Val Bool'))
+cupacucAllowAdminCreateUserOnly :: Lens' CognitoUserPoolAdminCreateUserConfig (Maybe (Val Bool))
 cupacucAllowAdminCreateUserOnly = lens _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly (\s a -> s { _cognitoUserPoolAdminCreateUserConfigAllowAdminCreateUserOnly = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-invitemessagetemplate
@@ -60,5 +61,5 @@
 cupacucInviteMessageTemplate = lens _cognitoUserPoolAdminCreateUserConfigInviteMessageTemplate (\s a -> s { _cognitoUserPoolAdminCreateUserConfigInviteMessageTemplate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-unusedaccountvaliditydays
-cupacucUnusedAccountValidityDays :: Lens' CognitoUserPoolAdminCreateUserConfig (Maybe (Val Double'))
+cupacucUnusedAccountValidityDays :: Lens' CognitoUserPoolAdminCreateUserConfig (Maybe (Val Double))
 cupacucUnusedAccountValidityDays = lens _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays (\s a -> s { _cognitoUserPoolAdminCreateUserConfigUnusedAccountValidityDays = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolDeviceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html
 
@@ -18,23 +19,23 @@
 -- 'cognitoUserPoolDeviceConfiguration' for a more convenient constructor.
 data CognitoUserPoolDeviceConfiguration =
   CognitoUserPoolDeviceConfiguration
-  { _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice :: Maybe (Val Bool')
-  , _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt :: Maybe (Val Bool')
+  { _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice :: Maybe (Val Bool)
+  , _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON CognitoUserPoolDeviceConfiguration where
   toJSON CognitoUserPoolDeviceConfiguration{..} =
     object $
     catMaybes
-    [ ("ChallengeRequiredOnNewDevice" .=) <$> _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice
-    , ("DeviceOnlyRememberedOnUserPrompt" .=) <$> _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt
+    [ fmap (("ChallengeRequiredOnNewDevice",) . toJSON . fmap Bool') _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice
+    , fmap (("DeviceOnlyRememberedOnUserPrompt",) . toJSON . fmap Bool') _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt
     ]
 
 instance FromJSON CognitoUserPoolDeviceConfiguration where
   parseJSON (Object obj) =
     CognitoUserPoolDeviceConfiguration <$>
-      obj .:? "ChallengeRequiredOnNewDevice" <*>
-      obj .:? "DeviceOnlyRememberedOnUserPrompt"
+      fmap (fmap (fmap unBool')) (obj .:? "ChallengeRequiredOnNewDevice") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeviceOnlyRememberedOnUserPrompt")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolDeviceConfiguration' containing required
@@ -48,9 +49,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html#cfn-cognito-userpool-deviceconfiguration-challengerequiredonnewdevice
-cupdcChallengeRequiredOnNewDevice :: Lens' CognitoUserPoolDeviceConfiguration (Maybe (Val Bool'))
+cupdcChallengeRequiredOnNewDevice :: Lens' CognitoUserPoolDeviceConfiguration (Maybe (Val Bool))
 cupdcChallengeRequiredOnNewDevice = lens _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice (\s a -> s { _cognitoUserPoolDeviceConfigurationChallengeRequiredOnNewDevice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html#cfn-cognito-userpool-deviceconfiguration-deviceonlyrememberedonuserprompt
-cupdcDeviceOnlyRememberedOnUserPrompt :: Lens' CognitoUserPoolDeviceConfiguration (Maybe (Val Bool'))
+cupdcDeviceOnlyRememberedOnUserPrompt :: Lens' CognitoUserPoolDeviceConfiguration (Maybe (Val Bool))
 cupdcDeviceOnlyRememberedOnUserPrompt = lens _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt (\s a -> s { _cognitoUserPoolDeviceConfigurationDeviceOnlyRememberedOnUserPrompt = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolEmailConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-emailconfiguration.html
 
@@ -26,15 +27,15 @@
   toJSON CognitoUserPoolEmailConfiguration{..} =
     object $
     catMaybes
-    [ ("ReplyToEmailAddress" .=) <$> _cognitoUserPoolEmailConfigurationReplyToEmailAddress
-    , ("SourceArn" .=) <$> _cognitoUserPoolEmailConfigurationSourceArn
+    [ fmap (("ReplyToEmailAddress",) . toJSON) _cognitoUserPoolEmailConfigurationReplyToEmailAddress
+    , fmap (("SourceArn",) . toJSON) _cognitoUserPoolEmailConfigurationSourceArn
     ]
 
 instance FromJSON CognitoUserPoolEmailConfiguration where
   parseJSON (Object obj) =
     CognitoUserPoolEmailConfiguration <$>
-      obj .:? "ReplyToEmailAddress" <*>
-      obj .:? "SourceArn"
+      (obj .:? "ReplyToEmailAddress") <*>
+      (obj .:? "SourceArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolEmailConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolInviteMessageTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html
 
@@ -27,17 +28,17 @@
   toJSON CognitoUserPoolInviteMessageTemplate{..} =
     object $
     catMaybes
-    [ ("EmailMessage" .=) <$> _cognitoUserPoolInviteMessageTemplateEmailMessage
-    , ("EmailSubject" .=) <$> _cognitoUserPoolInviteMessageTemplateEmailSubject
-    , ("SMSMessage" .=) <$> _cognitoUserPoolInviteMessageTemplateSMSMessage
+    [ fmap (("EmailMessage",) . toJSON) _cognitoUserPoolInviteMessageTemplateEmailMessage
+    , fmap (("EmailSubject",) . toJSON) _cognitoUserPoolInviteMessageTemplateEmailSubject
+    , fmap (("SMSMessage",) . toJSON) _cognitoUserPoolInviteMessageTemplateSMSMessage
     ]
 
 instance FromJSON CognitoUserPoolInviteMessageTemplate where
   parseJSON (Object obj) =
     CognitoUserPoolInviteMessageTemplate <$>
-      obj .:? "EmailMessage" <*>
-      obj .:? "EmailSubject" <*>
-      obj .:? "SMSMessage"
+      (obj .:? "EmailMessage") <*>
+      (obj .:? "EmailSubject") <*>
+      (obj .:? "SMSMessage")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolInviteMessageTemplate' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolLambdaConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html
 
@@ -32,27 +33,27 @@
   toJSON CognitoUserPoolLambdaConfig{..} =
     object $
     catMaybes
-    [ ("CreateAuthChallenge" .=) <$> _cognitoUserPoolLambdaConfigCreateAuthChallenge
-    , ("CustomMessage" .=) <$> _cognitoUserPoolLambdaConfigCustomMessage
-    , ("DefineAuthChallenge" .=) <$> _cognitoUserPoolLambdaConfigDefineAuthChallenge
-    , ("PostAuthentication" .=) <$> _cognitoUserPoolLambdaConfigPostAuthentication
-    , ("PostConfirmation" .=) <$> _cognitoUserPoolLambdaConfigPostConfirmation
-    , ("PreAuthentication" .=) <$> _cognitoUserPoolLambdaConfigPreAuthentication
-    , ("PreSignUp" .=) <$> _cognitoUserPoolLambdaConfigPreSignUp
-    , ("VerifyAuthChallengeResponse" .=) <$> _cognitoUserPoolLambdaConfigVerifyAuthChallengeResponse
+    [ fmap (("CreateAuthChallenge",) . toJSON) _cognitoUserPoolLambdaConfigCreateAuthChallenge
+    , fmap (("CustomMessage",) . toJSON) _cognitoUserPoolLambdaConfigCustomMessage
+    , fmap (("DefineAuthChallenge",) . toJSON) _cognitoUserPoolLambdaConfigDefineAuthChallenge
+    , fmap (("PostAuthentication",) . toJSON) _cognitoUserPoolLambdaConfigPostAuthentication
+    , fmap (("PostConfirmation",) . toJSON) _cognitoUserPoolLambdaConfigPostConfirmation
+    , fmap (("PreAuthentication",) . toJSON) _cognitoUserPoolLambdaConfigPreAuthentication
+    , fmap (("PreSignUp",) . toJSON) _cognitoUserPoolLambdaConfigPreSignUp
+    , fmap (("VerifyAuthChallengeResponse",) . toJSON) _cognitoUserPoolLambdaConfigVerifyAuthChallengeResponse
     ]
 
 instance FromJSON CognitoUserPoolLambdaConfig where
   parseJSON (Object obj) =
     CognitoUserPoolLambdaConfig <$>
-      obj .:? "CreateAuthChallenge" <*>
-      obj .:? "CustomMessage" <*>
-      obj .:? "DefineAuthChallenge" <*>
-      obj .:? "PostAuthentication" <*>
-      obj .:? "PostConfirmation" <*>
-      obj .:? "PreAuthentication" <*>
-      obj .:? "PreSignUp" <*>
-      obj .:? "VerifyAuthChallengeResponse"
+      (obj .:? "CreateAuthChallenge") <*>
+      (obj .:? "CustomMessage") <*>
+      (obj .:? "DefineAuthChallenge") <*>
+      (obj .:? "PostAuthentication") <*>
+      (obj .:? "PostConfirmation") <*>
+      (obj .:? "PreAuthentication") <*>
+      (obj .:? "PreSignUp") <*>
+      (obj .:? "VerifyAuthChallengeResponse")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolLambdaConfig' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolNumberAttributeConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-numberattributeconstraints.html
 
@@ -27,15 +28,15 @@
   toJSON CognitoUserPoolNumberAttributeConstraints{..} =
     object $
     catMaybes
-    [ ("MaxValue" .=) <$> _cognitoUserPoolNumberAttributeConstraintsMaxValue
-    , ("MinValue" .=) <$> _cognitoUserPoolNumberAttributeConstraintsMinValue
+    [ fmap (("MaxValue",) . toJSON) _cognitoUserPoolNumberAttributeConstraintsMaxValue
+    , fmap (("MinValue",) . toJSON) _cognitoUserPoolNumberAttributeConstraintsMinValue
     ]
 
 instance FromJSON CognitoUserPoolNumberAttributeConstraints where
   parseJSON (Object obj) =
     CognitoUserPoolNumberAttributeConstraints <$>
-      obj .:? "MaxValue" <*>
-      obj .:? "MinValue"
+      (obj .:? "MaxValue") <*>
+      (obj .:? "MinValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolNumberAttributeConstraints' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPasswordPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html
 
@@ -18,32 +19,32 @@
 -- 'cognitoUserPoolPasswordPolicy' for a more convenient constructor.
 data CognitoUserPoolPasswordPolicy =
   CognitoUserPoolPasswordPolicy
-  { _cognitoUserPoolPasswordPolicyMinimumLength :: Maybe (Val Integer')
-  , _cognitoUserPoolPasswordPolicyRequireLowercase :: Maybe (Val Bool')
-  , _cognitoUserPoolPasswordPolicyRequireNumbers :: Maybe (Val Bool')
-  , _cognitoUserPoolPasswordPolicyRequireSymbols :: Maybe (Val Bool')
-  , _cognitoUserPoolPasswordPolicyRequireUppercase :: Maybe (Val Bool')
+  { _cognitoUserPoolPasswordPolicyMinimumLength :: Maybe (Val Integer)
+  , _cognitoUserPoolPasswordPolicyRequireLowercase :: Maybe (Val Bool)
+  , _cognitoUserPoolPasswordPolicyRequireNumbers :: Maybe (Val Bool)
+  , _cognitoUserPoolPasswordPolicyRequireSymbols :: Maybe (Val Bool)
+  , _cognitoUserPoolPasswordPolicyRequireUppercase :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON CognitoUserPoolPasswordPolicy where
   toJSON CognitoUserPoolPasswordPolicy{..} =
     object $
     catMaybes
-    [ ("MinimumLength" .=) <$> _cognitoUserPoolPasswordPolicyMinimumLength
-    , ("RequireLowercase" .=) <$> _cognitoUserPoolPasswordPolicyRequireLowercase
-    , ("RequireNumbers" .=) <$> _cognitoUserPoolPasswordPolicyRequireNumbers
-    , ("RequireSymbols" .=) <$> _cognitoUserPoolPasswordPolicyRequireSymbols
-    , ("RequireUppercase" .=) <$> _cognitoUserPoolPasswordPolicyRequireUppercase
+    [ fmap (("MinimumLength",) . toJSON . fmap Integer') _cognitoUserPoolPasswordPolicyMinimumLength
+    , fmap (("RequireLowercase",) . toJSON . fmap Bool') _cognitoUserPoolPasswordPolicyRequireLowercase
+    , fmap (("RequireNumbers",) . toJSON . fmap Bool') _cognitoUserPoolPasswordPolicyRequireNumbers
+    , fmap (("RequireSymbols",) . toJSON . fmap Bool') _cognitoUserPoolPasswordPolicyRequireSymbols
+    , fmap (("RequireUppercase",) . toJSON . fmap Bool') _cognitoUserPoolPasswordPolicyRequireUppercase
     ]
 
 instance FromJSON CognitoUserPoolPasswordPolicy where
   parseJSON (Object obj) =
     CognitoUserPoolPasswordPolicy <$>
-      obj .:? "MinimumLength" <*>
-      obj .:? "RequireLowercase" <*>
-      obj .:? "RequireNumbers" <*>
-      obj .:? "RequireSymbols" <*>
-      obj .:? "RequireUppercase"
+      fmap (fmap (fmap unInteger')) (obj .:? "MinimumLength") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RequireLowercase") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RequireNumbers") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RequireSymbols") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RequireUppercase")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolPasswordPolicy' containing required
@@ -60,21 +61,21 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-minimumlength
-cupppMinimumLength :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Integer'))
+cupppMinimumLength :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Integer))
 cupppMinimumLength = lens _cognitoUserPoolPasswordPolicyMinimumLength (\s a -> s { _cognitoUserPoolPasswordPolicyMinimumLength = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requirelowercase
-cupppRequireLowercase :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool'))
+cupppRequireLowercase :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool))
 cupppRequireLowercase = lens _cognitoUserPoolPasswordPolicyRequireLowercase (\s a -> s { _cognitoUserPoolPasswordPolicyRequireLowercase = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requirenumbers
-cupppRequireNumbers :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool'))
+cupppRequireNumbers :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool))
 cupppRequireNumbers = lens _cognitoUserPoolPasswordPolicyRequireNumbers (\s a -> s { _cognitoUserPoolPasswordPolicyRequireNumbers = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requiresymbols
-cupppRequireSymbols :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool'))
+cupppRequireSymbols :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool))
 cupppRequireSymbols = lens _cognitoUserPoolPasswordPolicyRequireSymbols (\s a -> s { _cognitoUserPoolPasswordPolicyRequireSymbols = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requireuppercase
-cupppRequireUppercase :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool'))
+cupppRequireUppercase :: Lens' CognitoUserPoolPasswordPolicy (Maybe (Val Bool))
 cupppRequireUppercase = lens _cognitoUserPoolPasswordPolicyRequireUppercase (\s a -> s { _cognitoUserPoolPasswordPolicyRequireUppercase = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolPolicies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-policies.html
 
@@ -25,13 +26,13 @@
   toJSON CognitoUserPoolPolicies{..} =
     object $
     catMaybes
-    [ ("PasswordPolicy" .=) <$> _cognitoUserPoolPoliciesPasswordPolicy
+    [ fmap (("PasswordPolicy",) . toJSON) _cognitoUserPoolPoliciesPasswordPolicy
     ]
 
 instance FromJSON CognitoUserPoolPolicies where
   parseJSON (Object obj) =
     CognitoUserPoolPolicies <$>
-      obj .:? "PasswordPolicy"
+      (obj .:? "PasswordPolicy")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolPolicies' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSchemaAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html
 
@@ -20,11 +21,11 @@
 data CognitoUserPoolSchemaAttribute =
   CognitoUserPoolSchemaAttribute
   { _cognitoUserPoolSchemaAttributeAttributeDataType :: Maybe (Val Text)
-  , _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute :: Maybe (Val Bool')
-  , _cognitoUserPoolSchemaAttributeMutable :: Maybe (Val Bool')
+  , _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute :: Maybe (Val Bool)
+  , _cognitoUserPoolSchemaAttributeMutable :: Maybe (Val Bool)
   , _cognitoUserPoolSchemaAttributeName :: Maybe (Val Text)
   , _cognitoUserPoolSchemaAttributeNumberAttributeConstraints :: Maybe CognitoUserPoolNumberAttributeConstraints
-  , _cognitoUserPoolSchemaAttributeRequired :: Maybe (Val Bool')
+  , _cognitoUserPoolSchemaAttributeRequired :: Maybe (Val Bool)
   , _cognitoUserPoolSchemaAttributeStringAttributeConstraints :: Maybe CognitoUserPoolStringAttributeConstraints
   } deriving (Show, Eq)
 
@@ -32,25 +33,25 @@
   toJSON CognitoUserPoolSchemaAttribute{..} =
     object $
     catMaybes
-    [ ("AttributeDataType" .=) <$> _cognitoUserPoolSchemaAttributeAttributeDataType
-    , ("DeveloperOnlyAttribute" .=) <$> _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute
-    , ("Mutable" .=) <$> _cognitoUserPoolSchemaAttributeMutable
-    , ("Name" .=) <$> _cognitoUserPoolSchemaAttributeName
-    , ("NumberAttributeConstraints" .=) <$> _cognitoUserPoolSchemaAttributeNumberAttributeConstraints
-    , ("Required" .=) <$> _cognitoUserPoolSchemaAttributeRequired
-    , ("StringAttributeConstraints" .=) <$> _cognitoUserPoolSchemaAttributeStringAttributeConstraints
+    [ fmap (("AttributeDataType",) . toJSON) _cognitoUserPoolSchemaAttributeAttributeDataType
+    , fmap (("DeveloperOnlyAttribute",) . toJSON . fmap Bool') _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute
+    , fmap (("Mutable",) . toJSON . fmap Bool') _cognitoUserPoolSchemaAttributeMutable
+    , fmap (("Name",) . toJSON) _cognitoUserPoolSchemaAttributeName
+    , fmap (("NumberAttributeConstraints",) . toJSON) _cognitoUserPoolSchemaAttributeNumberAttributeConstraints
+    , fmap (("Required",) . toJSON . fmap Bool') _cognitoUserPoolSchemaAttributeRequired
+    , fmap (("StringAttributeConstraints",) . toJSON) _cognitoUserPoolSchemaAttributeStringAttributeConstraints
     ]
 
 instance FromJSON CognitoUserPoolSchemaAttribute where
   parseJSON (Object obj) =
     CognitoUserPoolSchemaAttribute <$>
-      obj .:? "AttributeDataType" <*>
-      obj .:? "DeveloperOnlyAttribute" <*>
-      obj .:? "Mutable" <*>
-      obj .:? "Name" <*>
-      obj .:? "NumberAttributeConstraints" <*>
-      obj .:? "Required" <*>
-      obj .:? "StringAttributeConstraints"
+      (obj .:? "AttributeDataType") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeveloperOnlyAttribute") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Mutable") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "NumberAttributeConstraints") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Required") <*>
+      (obj .:? "StringAttributeConstraints")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolSchemaAttribute' containing required
@@ -73,11 +74,11 @@
 cupsaAttributeDataType = lens _cognitoUserPoolSchemaAttributeAttributeDataType (\s a -> s { _cognitoUserPoolSchemaAttributeAttributeDataType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-developeronlyattribute
-cupsaDeveloperOnlyAttribute :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool'))
+cupsaDeveloperOnlyAttribute :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool))
 cupsaDeveloperOnlyAttribute = lens _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute (\s a -> s { _cognitoUserPoolSchemaAttributeDeveloperOnlyAttribute = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-mutable
-cupsaMutable :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool'))
+cupsaMutable :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool))
 cupsaMutable = lens _cognitoUserPoolSchemaAttributeMutable (\s a -> s { _cognitoUserPoolSchemaAttributeMutable = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-name
@@ -89,7 +90,7 @@
 cupsaNumberAttributeConstraints = lens _cognitoUserPoolSchemaAttributeNumberAttributeConstraints (\s a -> s { _cognitoUserPoolSchemaAttributeNumberAttributeConstraints = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-required
-cupsaRequired :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool'))
+cupsaRequired :: Lens' CognitoUserPoolSchemaAttribute (Maybe (Val Bool))
 cupsaRequired = lens _cognitoUserPoolSchemaAttributeRequired (\s a -> s { _cognitoUserPoolSchemaAttributeRequired = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-stringattributeconstraints
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolSmsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-smsconfiguration.html
 
@@ -26,15 +27,15 @@
   toJSON CognitoUserPoolSmsConfiguration{..} =
     object $
     catMaybes
-    [ ("ExternalId" .=) <$> _cognitoUserPoolSmsConfigurationExternalId
-    , ("SnsCallerArn" .=) <$> _cognitoUserPoolSmsConfigurationSnsCallerArn
+    [ fmap (("ExternalId",) . toJSON) _cognitoUserPoolSmsConfigurationExternalId
+    , fmap (("SnsCallerArn",) . toJSON) _cognitoUserPoolSmsConfigurationSnsCallerArn
     ]
 
 instance FromJSON CognitoUserPoolSmsConfiguration where
   parseJSON (Object obj) =
     CognitoUserPoolSmsConfiguration <$>
-      obj .:? "ExternalId" <*>
-      obj .:? "SnsCallerArn"
+      (obj .:? "ExternalId") <*>
+      (obj .:? "SnsCallerArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolSmsConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolStringAttributeConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-stringattributeconstraints.html
 
@@ -27,15 +28,15 @@
   toJSON CognitoUserPoolStringAttributeConstraints{..} =
     object $
     catMaybes
-    [ ("MaxLength" .=) <$> _cognitoUserPoolStringAttributeConstraintsMaxLength
-    , ("MinLength" .=) <$> _cognitoUserPoolStringAttributeConstraintsMinLength
+    [ fmap (("MaxLength",) . toJSON) _cognitoUserPoolStringAttributeConstraintsMaxLength
+    , fmap (("MinLength",) . toJSON) _cognitoUserPoolStringAttributeConstraintsMinLength
     ]
 
 instance FromJSON CognitoUserPoolStringAttributeConstraints where
   parseJSON (Object obj) =
     CognitoUserPoolStringAttributeConstraints <$>
-      obj .:? "MaxLength" <*>
-      obj .:? "MinLength"
+      (obj .:? "MaxLength") <*>
+      (obj .:? "MinLength")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolStringAttributeConstraints' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUserAttributeType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpooluser-attributetype.html
 
@@ -26,15 +27,15 @@
   toJSON CognitoUserPoolUserAttributeType{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _cognitoUserPoolUserAttributeTypeName
-    , ("Value" .=) <$> _cognitoUserPoolUserAttributeTypeValue
+    [ fmap (("Name",) . toJSON) _cognitoUserPoolUserAttributeTypeName
+    , fmap (("Value",) . toJSON) _cognitoUserPoolUserAttributeTypeValue
     ]
 
 instance FromJSON CognitoUserPoolUserAttributeType where
   parseJSON (Object obj) =
     CognitoUserPoolUserAttributeType <$>
-      obj .:? "Name" <*>
-      obj .:? "Value"
+      (obj .:? "Name") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolUserAttributeType' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleScope.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html
 
@@ -19,7 +20,7 @@
 data ConfigConfigRuleScope =
   ConfigConfigRuleScope
   { _configConfigRuleScopeComplianceResourceId :: Maybe (Val Text)
-  , _configConfigRuleScopeComplianceResourceTypes :: Maybe [Val Text]
+  , _configConfigRuleScopeComplianceResourceTypes :: Maybe (ValList Text)
   , _configConfigRuleScopeTagKey :: Maybe (Val Text)
   , _configConfigRuleScopeTagValue :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -28,19 +29,19 @@
   toJSON ConfigConfigRuleScope{..} =
     object $
     catMaybes
-    [ ("ComplianceResourceId" .=) <$> _configConfigRuleScopeComplianceResourceId
-    , ("ComplianceResourceTypes" .=) <$> _configConfigRuleScopeComplianceResourceTypes
-    , ("TagKey" .=) <$> _configConfigRuleScopeTagKey
-    , ("TagValue" .=) <$> _configConfigRuleScopeTagValue
+    [ fmap (("ComplianceResourceId",) . toJSON) _configConfigRuleScopeComplianceResourceId
+    , fmap (("ComplianceResourceTypes",) . toJSON) _configConfigRuleScopeComplianceResourceTypes
+    , fmap (("TagKey",) . toJSON) _configConfigRuleScopeTagKey
+    , fmap (("TagValue",) . toJSON) _configConfigRuleScopeTagValue
     ]
 
 instance FromJSON ConfigConfigRuleScope where
   parseJSON (Object obj) =
     ConfigConfigRuleScope <$>
-      obj .:? "ComplianceResourceId" <*>
-      obj .:? "ComplianceResourceTypes" <*>
-      obj .:? "TagKey" <*>
-      obj .:? "TagValue"
+      (obj .:? "ComplianceResourceId") <*>
+      (obj .:? "ComplianceResourceTypes") <*>
+      (obj .:? "TagKey") <*>
+      (obj .:? "TagValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigRuleScope' containing required fields as
@@ -60,7 +61,7 @@
 ccrsComplianceResourceId = lens _configConfigRuleScopeComplianceResourceId (\s a -> s { _configConfigRuleScopeComplianceResourceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-complianceresourcetypes
-ccrsComplianceResourceTypes :: Lens' ConfigConfigRuleScope (Maybe [Val Text])
+ccrsComplianceResourceTypes :: Lens' ConfigConfigRuleScope (Maybe (ValList Text))
 ccrsComplianceResourceTypes = lens _configConfigRuleScopeComplianceResourceTypes (\s a -> s { _configConfigRuleScopeComplianceResourceTypes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-tagkey
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html
 
@@ -27,17 +28,17 @@
   toJSON ConfigConfigRuleSource{..} =
     object $
     catMaybes
-    [ Just ("Owner" .= _configConfigRuleSourceOwner)
-    , ("SourceDetails" .=) <$> _configConfigRuleSourceSourceDetails
-    , Just ("SourceIdentifier" .= _configConfigRuleSourceSourceIdentifier)
+    [ (Just . ("Owner",) . toJSON) _configConfigRuleSourceOwner
+    , fmap (("SourceDetails",) . toJSON) _configConfigRuleSourceSourceDetails
+    , (Just . ("SourceIdentifier",) . toJSON) _configConfigRuleSourceSourceIdentifier
     ]
 
 instance FromJSON ConfigConfigRuleSource where
   parseJSON (Object obj) =
     ConfigConfigRuleSource <$>
-      obj .: "Owner" <*>
-      obj .:? "SourceDetails" <*>
-      obj .: "SourceIdentifier"
+      (obj .: "Owner") <*>
+      (obj .:? "SourceDetails") <*>
+      (obj .: "SourceIdentifier")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigRuleSource' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigRuleSourceDetail.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html
 
@@ -27,17 +28,17 @@
   toJSON ConfigConfigRuleSourceDetail{..} =
     object $
     catMaybes
-    [ Just ("EventSource" .= _configConfigRuleSourceDetailEventSource)
-    , ("MaximumExecutionFrequency" .=) <$> _configConfigRuleSourceDetailMaximumExecutionFrequency
-    , Just ("MessageType" .= _configConfigRuleSourceDetailMessageType)
+    [ (Just . ("EventSource",) . toJSON) _configConfigRuleSourceDetailEventSource
+    , fmap (("MaximumExecutionFrequency",) . toJSON) _configConfigRuleSourceDetailMaximumExecutionFrequency
+    , (Just . ("MessageType",) . toJSON) _configConfigRuleSourceDetailMessageType
     ]
 
 instance FromJSON ConfigConfigRuleSourceDetail where
   parseJSON (Object obj) =
     ConfigConfigRuleSourceDetail <$>
-      obj .: "EventSource" <*>
-      obj .:? "MaximumExecutionFrequency" <*>
-      obj .: "MessageType"
+      (obj .: "EventSource") <*>
+      (obj .:? "MaximumExecutionFrequency") <*>
+      (obj .: "MessageType")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigRuleSourceDetail' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConfigurationRecorderRecordingGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html
 
@@ -19,26 +20,26 @@
 -- constructor.
 data ConfigConfigurationRecorderRecordingGroup =
   ConfigConfigurationRecorderRecordingGroup
-  { _configConfigurationRecorderRecordingGroupAllSupported :: Maybe (Val Bool')
-  , _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes :: Maybe (Val Bool')
-  , _configConfigurationRecorderRecordingGroupResourceTypes :: Maybe [Val Text]
+  { _configConfigurationRecorderRecordingGroupAllSupported :: Maybe (Val Bool)
+  , _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes :: Maybe (Val Bool)
+  , _configConfigurationRecorderRecordingGroupResourceTypes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON ConfigConfigurationRecorderRecordingGroup where
   toJSON ConfigConfigurationRecorderRecordingGroup{..} =
     object $
     catMaybes
-    [ ("AllSupported" .=) <$> _configConfigurationRecorderRecordingGroupAllSupported
-    , ("IncludeGlobalResourceTypes" .=) <$> _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes
-    , ("ResourceTypes" .=) <$> _configConfigurationRecorderRecordingGroupResourceTypes
+    [ fmap (("AllSupported",) . toJSON . fmap Bool') _configConfigurationRecorderRecordingGroupAllSupported
+    , fmap (("IncludeGlobalResourceTypes",) . toJSON . fmap Bool') _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes
+    , fmap (("ResourceTypes",) . toJSON) _configConfigurationRecorderRecordingGroupResourceTypes
     ]
 
 instance FromJSON ConfigConfigurationRecorderRecordingGroup where
   parseJSON (Object obj) =
     ConfigConfigurationRecorderRecordingGroup <$>
-      obj .:? "AllSupported" <*>
-      obj .:? "IncludeGlobalResourceTypes" <*>
-      obj .:? "ResourceTypes"
+      fmap (fmap (fmap unBool')) (obj .:? "AllSupported") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeGlobalResourceTypes") <*>
+      (obj .:? "ResourceTypes")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigurationRecorderRecordingGroup' containing
@@ -53,13 +54,13 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-allsupported
-ccrrgAllSupported :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe (Val Bool'))
+ccrrgAllSupported :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe (Val Bool))
 ccrrgAllSupported = lens _configConfigurationRecorderRecordingGroupAllSupported (\s a -> s { _configConfigurationRecorderRecordingGroupAllSupported = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-includeglobalresourcetypes
-ccrrgIncludeGlobalResourceTypes :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe (Val Bool'))
+ccrrgIncludeGlobalResourceTypes :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe (Val Bool))
 ccrrgIncludeGlobalResourceTypes = lens _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes (\s a -> s { _configConfigurationRecorderRecordingGroupIncludeGlobalResourceTypes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-resourcetypes
-ccrrgResourceTypes :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe [Val Text])
+ccrrgResourceTypes :: Lens' ConfigConfigurationRecorderRecordingGroup (Maybe (ValList Text))
 ccrrgResourceTypes = lens _configConfigurationRecorderRecordingGroupResourceTypes (\s a -> s { _configConfigurationRecorderRecordingGroupResourceTypes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs b/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigDeliveryChannelConfigSnapshotDeliveryProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html
 
@@ -27,13 +28,13 @@
   toJSON ConfigDeliveryChannelConfigSnapshotDeliveryProperties{..} =
     object $
     catMaybes
-    [ ("DeliveryFrequency" .=) <$> _configDeliveryChannelConfigSnapshotDeliveryPropertiesDeliveryFrequency
+    [ fmap (("DeliveryFrequency",) . toJSON) _configDeliveryChannelConfigSnapshotDeliveryPropertiesDeliveryFrequency
     ]
 
 instance FromJSON ConfigDeliveryChannelConfigSnapshotDeliveryProperties where
   parseJSON (Object obj) =
     ConfigDeliveryChannelConfigSnapshotDeliveryProperties <$>
-      obj .:? "DeliveryFrequency"
+      (obj .:? "DeliveryFrequency")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigDeliveryChannelConfigSnapshotDeliveryProperties'
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointDynamoDbSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html
 
@@ -25,13 +26,13 @@
   toJSON DMSEndpointDynamoDbSettings{..} =
     object $
     catMaybes
-    [ ("ServiceAccessRoleArn" .=) <$> _dMSEndpointDynamoDbSettingsServiceAccessRoleArn
+    [ fmap (("ServiceAccessRoleArn",) . toJSON) _dMSEndpointDynamoDbSettingsServiceAccessRoleArn
     ]
 
 instance FromJSON DMSEndpointDynamoDbSettings where
   parseJSON (Object obj) =
     DMSEndpointDynamoDbSettings <$>
-      obj .:? "ServiceAccessRoleArn"
+      (obj .:? "ServiceAccessRoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSEndpointDynamoDbSettings' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointMongoDbSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html
 
@@ -26,7 +27,7 @@
   , _dMSEndpointMongoDbSettingsExtractDocId :: Maybe (Val Text)
   , _dMSEndpointMongoDbSettingsNestingLevel :: Maybe (Val Text)
   , _dMSEndpointMongoDbSettingsPassword :: Maybe (Val Text)
-  , _dMSEndpointMongoDbSettingsPort :: Maybe (Val Integer')
+  , _dMSEndpointMongoDbSettingsPort :: Maybe (Val Integer)
   , _dMSEndpointMongoDbSettingsServerName :: Maybe (Val Text)
   , _dMSEndpointMongoDbSettingsUsername :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -35,33 +36,33 @@
   toJSON DMSEndpointMongoDbSettings{..} =
     object $
     catMaybes
-    [ ("AuthMechanism" .=) <$> _dMSEndpointMongoDbSettingsAuthMechanism
-    , ("AuthSource" .=) <$> _dMSEndpointMongoDbSettingsAuthSource
-    , ("AuthType" .=) <$> _dMSEndpointMongoDbSettingsAuthType
-    , ("DatabaseName" .=) <$> _dMSEndpointMongoDbSettingsDatabaseName
-    , ("DocsToInvestigate" .=) <$> _dMSEndpointMongoDbSettingsDocsToInvestigate
-    , ("ExtractDocId" .=) <$> _dMSEndpointMongoDbSettingsExtractDocId
-    , ("NestingLevel" .=) <$> _dMSEndpointMongoDbSettingsNestingLevel
-    , ("Password" .=) <$> _dMSEndpointMongoDbSettingsPassword
-    , ("Port" .=) <$> _dMSEndpointMongoDbSettingsPort
-    , ("ServerName" .=) <$> _dMSEndpointMongoDbSettingsServerName
-    , ("Username" .=) <$> _dMSEndpointMongoDbSettingsUsername
+    [ fmap (("AuthMechanism",) . toJSON) _dMSEndpointMongoDbSettingsAuthMechanism
+    , fmap (("AuthSource",) . toJSON) _dMSEndpointMongoDbSettingsAuthSource
+    , fmap (("AuthType",) . toJSON) _dMSEndpointMongoDbSettingsAuthType
+    , fmap (("DatabaseName",) . toJSON) _dMSEndpointMongoDbSettingsDatabaseName
+    , fmap (("DocsToInvestigate",) . toJSON) _dMSEndpointMongoDbSettingsDocsToInvestigate
+    , fmap (("ExtractDocId",) . toJSON) _dMSEndpointMongoDbSettingsExtractDocId
+    , fmap (("NestingLevel",) . toJSON) _dMSEndpointMongoDbSettingsNestingLevel
+    , fmap (("Password",) . toJSON) _dMSEndpointMongoDbSettingsPassword
+    , fmap (("Port",) . toJSON . fmap Integer') _dMSEndpointMongoDbSettingsPort
+    , fmap (("ServerName",) . toJSON) _dMSEndpointMongoDbSettingsServerName
+    , fmap (("Username",) . toJSON) _dMSEndpointMongoDbSettingsUsername
     ]
 
 instance FromJSON DMSEndpointMongoDbSettings where
   parseJSON (Object obj) =
     DMSEndpointMongoDbSettings <$>
-      obj .:? "AuthMechanism" <*>
-      obj .:? "AuthSource" <*>
-      obj .:? "AuthType" <*>
-      obj .:? "DatabaseName" <*>
-      obj .:? "DocsToInvestigate" <*>
-      obj .:? "ExtractDocId" <*>
-      obj .:? "NestingLevel" <*>
-      obj .:? "Password" <*>
-      obj .:? "Port" <*>
-      obj .:? "ServerName" <*>
-      obj .:? "Username"
+      (obj .:? "AuthMechanism") <*>
+      (obj .:? "AuthSource") <*>
+      (obj .:? "AuthType") <*>
+      (obj .:? "DatabaseName") <*>
+      (obj .:? "DocsToInvestigate") <*>
+      (obj .:? "ExtractDocId") <*>
+      (obj .:? "NestingLevel") <*>
+      (obj .:? "Password") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "ServerName") <*>
+      (obj .:? "Username")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSEndpointMongoDbSettings' containing required fields
@@ -116,7 +117,7 @@
 dmsemdsPassword = lens _dMSEndpointMongoDbSettingsPassword (\s a -> s { _dMSEndpointMongoDbSettingsPassword = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-port
-dmsemdsPort :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Integer'))
+dmsemdsPort :: Lens' DMSEndpointMongoDbSettings (Maybe (Val Integer))
 dmsemdsPort = lens _dMSEndpointMongoDbSettingsPort (\s a -> s { _dMSEndpointMongoDbSettingsPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-servername
diff --git a/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs b/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DMSEndpointS3Settings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html
 
@@ -31,25 +32,25 @@
   toJSON DMSEndpointS3Settings{..} =
     object $
     catMaybes
-    [ ("BucketFolder" .=) <$> _dMSEndpointS3SettingsBucketFolder
-    , ("BucketName" .=) <$> _dMSEndpointS3SettingsBucketName
-    , ("CompressionType" .=) <$> _dMSEndpointS3SettingsCompressionType
-    , ("CsvDelimiter" .=) <$> _dMSEndpointS3SettingsCsvDelimiter
-    , ("CsvRowDelimiter" .=) <$> _dMSEndpointS3SettingsCsvRowDelimiter
-    , ("ExternalTableDefinition" .=) <$> _dMSEndpointS3SettingsExternalTableDefinition
-    , ("ServiceAccessRoleArn" .=) <$> _dMSEndpointS3SettingsServiceAccessRoleArn
+    [ fmap (("BucketFolder",) . toJSON) _dMSEndpointS3SettingsBucketFolder
+    , fmap (("BucketName",) . toJSON) _dMSEndpointS3SettingsBucketName
+    , fmap (("CompressionType",) . toJSON) _dMSEndpointS3SettingsCompressionType
+    , fmap (("CsvDelimiter",) . toJSON) _dMSEndpointS3SettingsCsvDelimiter
+    , fmap (("CsvRowDelimiter",) . toJSON) _dMSEndpointS3SettingsCsvRowDelimiter
+    , fmap (("ExternalTableDefinition",) . toJSON) _dMSEndpointS3SettingsExternalTableDefinition
+    , fmap (("ServiceAccessRoleArn",) . toJSON) _dMSEndpointS3SettingsServiceAccessRoleArn
     ]
 
 instance FromJSON DMSEndpointS3Settings where
   parseJSON (Object obj) =
     DMSEndpointS3Settings <$>
-      obj .:? "BucketFolder" <*>
-      obj .:? "BucketName" <*>
-      obj .:? "CompressionType" <*>
-      obj .:? "CsvDelimiter" <*>
-      obj .:? "CsvRowDelimiter" <*>
-      obj .:? "ExternalTableDefinition" <*>
-      obj .:? "ServiceAccessRoleArn"
+      (obj .:? "BucketFolder") <*>
+      (obj .:? "BucketName") <*>
+      (obj .:? "CompressionType") <*>
+      (obj .:? "CsvDelimiter") <*>
+      (obj .:? "CsvRowDelimiter") <*>
+      (obj .:? "ExternalTableDefinition") <*>
+      (obj .:? "ServiceAccessRoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSEndpointS3Settings' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineField.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html
 
@@ -27,17 +28,17 @@
   toJSON DataPipelinePipelineField{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _dataPipelinePipelineFieldKey)
-    , ("RefValue" .=) <$> _dataPipelinePipelineFieldRefValue
-    , ("StringValue" .=) <$> _dataPipelinePipelineFieldStringValue
+    [ (Just . ("Key",) . toJSON) _dataPipelinePipelineFieldKey
+    , fmap (("RefValue",) . toJSON) _dataPipelinePipelineFieldRefValue
+    , fmap (("StringValue",) . toJSON) _dataPipelinePipelineFieldStringValue
     ]
 
 instance FromJSON DataPipelinePipelineField where
   parseJSON (Object obj) =
     DataPipelinePipelineField <$>
-      obj .: "Key" <*>
-      obj .:? "RefValue" <*>
-      obj .:? "StringValue"
+      (obj .: "Key") <*>
+      (obj .:? "RefValue") <*>
+      (obj .:? "StringValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelineField' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html
 
@@ -27,15 +28,15 @@
   toJSON DataPipelinePipelineParameterAttribute{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _dataPipelinePipelineParameterAttributeKey)
-    , Just ("StringValue" .= _dataPipelinePipelineParameterAttributeStringValue)
+    [ (Just . ("Key",) . toJSON) _dataPipelinePipelineParameterAttributeKey
+    , (Just . ("StringValue",) . toJSON) _dataPipelinePipelineParameterAttributeStringValue
     ]
 
 instance FromJSON DataPipelinePipelineParameterAttribute where
   parseJSON (Object obj) =
     DataPipelinePipelineParameterAttribute <$>
-      obj .: "Key" <*>
-      obj .: "StringValue"
+      (obj .: "Key") <*>
+      (obj .: "StringValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelineParameterAttribute' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html
 
@@ -26,15 +27,15 @@
   toJSON DataPipelinePipelineParameterObject{..} =
     object $
     catMaybes
-    [ Just ("Attributes" .= _dataPipelinePipelineParameterObjectAttributes)
-    , Just ("Id" .= _dataPipelinePipelineParameterObjectId)
+    [ (Just . ("Attributes",) . toJSON) _dataPipelinePipelineParameterObjectAttributes
+    , (Just . ("Id",) . toJSON) _dataPipelinePipelineParameterObjectId
     ]
 
 instance FromJSON DataPipelinePipelineParameterObject where
   parseJSON (Object obj) =
     DataPipelinePipelineParameterObject <$>
-      obj .: "Attributes" <*>
-      obj .: "Id"
+      (obj .: "Attributes") <*>
+      (obj .: "Id")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelineParameterObject' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelineParameterValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html
 
@@ -26,15 +27,15 @@
   toJSON DataPipelinePipelineParameterValue{..} =
     object $
     catMaybes
-    [ Just ("Id" .= _dataPipelinePipelineParameterValueId)
-    , Just ("StringValue" .= _dataPipelinePipelineParameterValueStringValue)
+    [ (Just . ("Id",) . toJSON) _dataPipelinePipelineParameterValueId
+    , (Just . ("StringValue",) . toJSON) _dataPipelinePipelineParameterValueStringValue
     ]
 
 instance FromJSON DataPipelinePipelineParameterValue where
   parseJSON (Object obj) =
     DataPipelinePipelineParameterValue <$>
-      obj .: "Id" <*>
-      obj .: "StringValue"
+      (obj .: "Id") <*>
+      (obj .: "StringValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelineParameterValue' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineObject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html
 
@@ -27,17 +28,17 @@
   toJSON DataPipelinePipelinePipelineObject{..} =
     object $
     catMaybes
-    [ Just ("Fields" .= _dataPipelinePipelinePipelineObjectFields)
-    , Just ("Id" .= _dataPipelinePipelinePipelineObjectId)
-    , Just ("Name" .= _dataPipelinePipelinePipelineObjectName)
+    [ (Just . ("Fields",) . toJSON) _dataPipelinePipelinePipelineObjectFields
+    , (Just . ("Id",) . toJSON) _dataPipelinePipelinePipelineObjectId
+    , (Just . ("Name",) . toJSON) _dataPipelinePipelinePipelineObjectName
     ]
 
 instance FromJSON DataPipelinePipelinePipelineObject where
   parseJSON (Object obj) =
     DataPipelinePipelinePipelineObject <$>
-      obj .: "Fields" <*>
-      obj .: "Id" <*>
-      obj .: "Name"
+      (obj .: "Fields") <*>
+      (obj .: "Id") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelinePipelineObject' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DataPipelinePipelinePipelineTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html
 
@@ -26,15 +27,15 @@
   toJSON DataPipelinePipelinePipelineTag{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _dataPipelinePipelinePipelineTagKey)
-    , Just ("Value" .= _dataPipelinePipelinePipelineTagValue)
+    [ (Just . ("Key",) . toJSON) _dataPipelinePipelinePipelineTagKey
+    , (Just . ("Value",) . toJSON) _dataPipelinePipelinePipelineTagValue
     ]
 
 instance FromJSON DataPipelinePipelinePipelineTag where
   parseJSON (Object obj) =
     DataPipelinePipelinePipelineTag <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipelinePipelineTag' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceMicrosoftADVpcSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html
 
@@ -19,7 +20,7 @@
 -- constructor.
 data DirectoryServiceMicrosoftADVpcSettings =
   DirectoryServiceMicrosoftADVpcSettings
-  { _directoryServiceMicrosoftADVpcSettingsSubnetIds :: [Val Text]
+  { _directoryServiceMicrosoftADVpcSettingsSubnetIds :: ValList Text
   , _directoryServiceMicrosoftADVpcSettingsVpcId :: Val Text
   } deriving (Show, Eq)
 
@@ -27,21 +28,21 @@
   toJSON DirectoryServiceMicrosoftADVpcSettings{..} =
     object $
     catMaybes
-    [ Just ("SubnetIds" .= _directoryServiceMicrosoftADVpcSettingsSubnetIds)
-    , Just ("VpcId" .= _directoryServiceMicrosoftADVpcSettingsVpcId)
+    [ (Just . ("SubnetIds",) . toJSON) _directoryServiceMicrosoftADVpcSettingsSubnetIds
+    , (Just . ("VpcId",) . toJSON) _directoryServiceMicrosoftADVpcSettingsVpcId
     ]
 
 instance FromJSON DirectoryServiceMicrosoftADVpcSettings where
   parseJSON (Object obj) =
     DirectoryServiceMicrosoftADVpcSettings <$>
-      obj .: "SubnetIds" <*>
-      obj .: "VpcId"
+      (obj .: "SubnetIds") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'DirectoryServiceMicrosoftADVpcSettings' containing
 -- required fields as arguments.
 directoryServiceMicrosoftADVpcSettings
-  :: [Val Text] -- ^ 'dsmadvsSubnetIds'
+  :: ValList Text -- ^ 'dsmadvsSubnetIds'
   -> Val Text -- ^ 'dsmadvsVpcId'
   -> DirectoryServiceMicrosoftADVpcSettings
 directoryServiceMicrosoftADVpcSettings subnetIdsarg vpcIdarg =
@@ -51,7 +52,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids
-dsmadvsSubnetIds :: Lens' DirectoryServiceMicrosoftADVpcSettings [Val Text]
+dsmadvsSubnetIds :: Lens' DirectoryServiceMicrosoftADVpcSettings (ValList Text)
 dsmadvsSubnetIds = lens _directoryServiceMicrosoftADVpcSettingsSubnetIds (\s a -> s { _directoryServiceMicrosoftADVpcSettingsSubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid
diff --git a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DirectoryServiceSimpleADVpcSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html
 
@@ -18,7 +19,7 @@
 -- 'directoryServiceSimpleADVpcSettings' for a more convenient constructor.
 data DirectoryServiceSimpleADVpcSettings =
   DirectoryServiceSimpleADVpcSettings
-  { _directoryServiceSimpleADVpcSettingsSubnetIds :: [Val Text]
+  { _directoryServiceSimpleADVpcSettingsSubnetIds :: ValList Text
   , _directoryServiceSimpleADVpcSettingsVpcId :: Val Text
   } deriving (Show, Eq)
 
@@ -26,21 +27,21 @@
   toJSON DirectoryServiceSimpleADVpcSettings{..} =
     object $
     catMaybes
-    [ Just ("SubnetIds" .= _directoryServiceSimpleADVpcSettingsSubnetIds)
-    , Just ("VpcId" .= _directoryServiceSimpleADVpcSettingsVpcId)
+    [ (Just . ("SubnetIds",) . toJSON) _directoryServiceSimpleADVpcSettingsSubnetIds
+    , (Just . ("VpcId",) . toJSON) _directoryServiceSimpleADVpcSettingsVpcId
     ]
 
 instance FromJSON DirectoryServiceSimpleADVpcSettings where
   parseJSON (Object obj) =
     DirectoryServiceSimpleADVpcSettings <$>
-      obj .: "SubnetIds" <*>
-      obj .: "VpcId"
+      (obj .: "SubnetIds") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'DirectoryServiceSimpleADVpcSettings' containing required
 -- fields as arguments.
 directoryServiceSimpleADVpcSettings
-  :: [Val Text] -- ^ 'dssadvsSubnetIds'
+  :: ValList Text -- ^ 'dssadvsSubnetIds'
   -> Val Text -- ^ 'dssadvsVpcId'
   -> DirectoryServiceSimpleADVpcSettings
 directoryServiceSimpleADVpcSettings subnetIdsarg vpcIdarg =
@@ -50,7 +51,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids
-dssadvsSubnetIds :: Lens' DirectoryServiceSimpleADVpcSettings [Val Text]
+dssadvsSubnetIds :: Lens' DirectoryServiceSimpleADVpcSettings (ValList Text)
 dssadvsSubnetIds = lens _directoryServiceSimpleADVpcSettingsSubnetIds (\s a -> s { _directoryServiceSimpleADVpcSettingsSubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableAttributeDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html
 
@@ -26,15 +27,15 @@
   toJSON DynamoDBTableAttributeDefinition{..} =
     object $
     catMaybes
-    [ Just ("AttributeName" .= _dynamoDBTableAttributeDefinitionAttributeName)
-    , Just ("AttributeType" .= _dynamoDBTableAttributeDefinitionAttributeType)
+    [ (Just . ("AttributeName",) . toJSON) _dynamoDBTableAttributeDefinitionAttributeName
+    , (Just . ("AttributeType",) . toJSON) _dynamoDBTableAttributeDefinitionAttributeType
     ]
 
 instance FromJSON DynamoDBTableAttributeDefinition where
   parseJSON (Object obj) =
     DynamoDBTableAttributeDefinition <$>
-      obj .: "AttributeName" <*>
-      obj .: "AttributeType"
+      (obj .: "AttributeName") <*>
+      (obj .: "AttributeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableAttributeDefinition' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html
 
@@ -30,19 +31,19 @@
   toJSON DynamoDBTableGlobalSecondaryIndex{..} =
     object $
     catMaybes
-    [ Just ("IndexName" .= _dynamoDBTableGlobalSecondaryIndexIndexName)
-    , Just ("KeySchema" .= _dynamoDBTableGlobalSecondaryIndexKeySchema)
-    , Just ("Projection" .= _dynamoDBTableGlobalSecondaryIndexProjection)
-    , Just ("ProvisionedThroughput" .= _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput)
+    [ (Just . ("IndexName",) . toJSON) _dynamoDBTableGlobalSecondaryIndexIndexName
+    , (Just . ("KeySchema",) . toJSON) _dynamoDBTableGlobalSecondaryIndexKeySchema
+    , (Just . ("Projection",) . toJSON) _dynamoDBTableGlobalSecondaryIndexProjection
+    , (Just . ("ProvisionedThroughput",) . toJSON) _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput
     ]
 
 instance FromJSON DynamoDBTableGlobalSecondaryIndex where
   parseJSON (Object obj) =
     DynamoDBTableGlobalSecondaryIndex <$>
-      obj .: "IndexName" <*>
-      obj .: "KeySchema" <*>
-      obj .: "Projection" <*>
-      obj .: "ProvisionedThroughput"
+      (obj .: "IndexName") <*>
+      (obj .: "KeySchema") <*>
+      (obj .: "Projection") <*>
+      (obj .: "ProvisionedThroughput")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableGlobalSecondaryIndex' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableKeySchema.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html
 
@@ -26,15 +27,15 @@
   toJSON DynamoDBTableKeySchema{..} =
     object $
     catMaybes
-    [ Just ("AttributeName" .= _dynamoDBTableKeySchemaAttributeName)
-    , Just ("KeyType" .= _dynamoDBTableKeySchemaKeyType)
+    [ (Just . ("AttributeName",) . toJSON) _dynamoDBTableKeySchemaAttributeName
+    , (Just . ("KeyType",) . toJSON) _dynamoDBTableKeySchemaKeyType
     ]
 
 instance FromJSON DynamoDBTableKeySchema where
   parseJSON (Object obj) =
     DynamoDBTableKeySchema <$>
-      obj .: "AttributeName" <*>
-      obj .: "KeyType"
+      (obj .: "AttributeName") <*>
+      (obj .: "KeyType")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableKeySchema' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableLocalSecondaryIndex.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html
 
@@ -28,17 +29,17 @@
   toJSON DynamoDBTableLocalSecondaryIndex{..} =
     object $
     catMaybes
-    [ Just ("IndexName" .= _dynamoDBTableLocalSecondaryIndexIndexName)
-    , Just ("KeySchema" .= _dynamoDBTableLocalSecondaryIndexKeySchema)
-    , Just ("Projection" .= _dynamoDBTableLocalSecondaryIndexProjection)
+    [ (Just . ("IndexName",) . toJSON) _dynamoDBTableLocalSecondaryIndexIndexName
+    , (Just . ("KeySchema",) . toJSON) _dynamoDBTableLocalSecondaryIndexKeySchema
+    , (Just . ("Projection",) . toJSON) _dynamoDBTableLocalSecondaryIndexProjection
     ]
 
 instance FromJSON DynamoDBTableLocalSecondaryIndex where
   parseJSON (Object obj) =
     DynamoDBTableLocalSecondaryIndex <$>
-      obj .: "IndexName" <*>
-      obj .: "KeySchema" <*>
-      obj .: "Projection"
+      (obj .: "IndexName") <*>
+      (obj .: "KeySchema") <*>
+      (obj .: "Projection")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableLocalSecondaryIndex' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProjection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html
 
@@ -18,7 +19,7 @@
 -- 'dynamoDBTableProjection' for a more convenient constructor.
 data DynamoDBTableProjection =
   DynamoDBTableProjection
-  { _dynamoDBTableProjectionNonKeyAttributes :: Maybe [Val Text]
+  { _dynamoDBTableProjectionNonKeyAttributes :: Maybe (ValList Text)
   , _dynamoDBTableProjectionProjectionType :: Maybe (Val ProjectionType)
   } deriving (Show, Eq)
 
@@ -26,15 +27,15 @@
   toJSON DynamoDBTableProjection{..} =
     object $
     catMaybes
-    [ ("NonKeyAttributes" .=) <$> _dynamoDBTableProjectionNonKeyAttributes
-    , ("ProjectionType" .=) <$> _dynamoDBTableProjectionProjectionType
+    [ fmap (("NonKeyAttributes",) . toJSON) _dynamoDBTableProjectionNonKeyAttributes
+    , fmap (("ProjectionType",) . toJSON) _dynamoDBTableProjectionProjectionType
     ]
 
 instance FromJSON DynamoDBTableProjection where
   parseJSON (Object obj) =
     DynamoDBTableProjection <$>
-      obj .:? "NonKeyAttributes" <*>
-      obj .:? "ProjectionType"
+      (obj .:? "NonKeyAttributes") <*>
+      (obj .:? "ProjectionType")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableProjection' containing required fields as
@@ -48,7 +49,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt
-ddbtpNonKeyAttributes :: Lens' DynamoDBTableProjection (Maybe [Val Text])
+ddbtpNonKeyAttributes :: Lens' DynamoDBTableProjection (Maybe (ValList Text))
 ddbtpNonKeyAttributes = lens _dynamoDBTableProjectionNonKeyAttributes (\s a -> s { _dynamoDBTableProjectionNonKeyAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableProvisionedThroughput.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html
 
@@ -18,30 +19,30 @@
 -- 'dynamoDBTableProvisionedThroughput' for a more convenient constructor.
 data DynamoDBTableProvisionedThroughput =
   DynamoDBTableProvisionedThroughput
-  { _dynamoDBTableProvisionedThroughputReadCapacityUnits :: Val Integer'
-  , _dynamoDBTableProvisionedThroughputWriteCapacityUnits :: Val Integer'
+  { _dynamoDBTableProvisionedThroughputReadCapacityUnits :: Val Integer
+  , _dynamoDBTableProvisionedThroughputWriteCapacityUnits :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON DynamoDBTableProvisionedThroughput where
   toJSON DynamoDBTableProvisionedThroughput{..} =
     object $
     catMaybes
-    [ Just ("ReadCapacityUnits" .= _dynamoDBTableProvisionedThroughputReadCapacityUnits)
-    , Just ("WriteCapacityUnits" .= _dynamoDBTableProvisionedThroughputWriteCapacityUnits)
+    [ (Just . ("ReadCapacityUnits",) . toJSON . fmap Integer') _dynamoDBTableProvisionedThroughputReadCapacityUnits
+    , (Just . ("WriteCapacityUnits",) . toJSON . fmap Integer') _dynamoDBTableProvisionedThroughputWriteCapacityUnits
     ]
 
 instance FromJSON DynamoDBTableProvisionedThroughput where
   parseJSON (Object obj) =
     DynamoDBTableProvisionedThroughput <$>
-      obj .: "ReadCapacityUnits" <*>
-      obj .: "WriteCapacityUnits"
+      fmap (fmap unInteger') (obj .: "ReadCapacityUnits") <*>
+      fmap (fmap unInteger') (obj .: "WriteCapacityUnits")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableProvisionedThroughput' containing required
 -- fields as arguments.
 dynamoDBTableProvisionedThroughput
-  :: Val Integer' -- ^ 'ddbtptReadCapacityUnits'
-  -> Val Integer' -- ^ 'ddbtptWriteCapacityUnits'
+  :: Val Integer -- ^ 'ddbtptReadCapacityUnits'
+  -> Val Integer -- ^ 'ddbtptWriteCapacityUnits'
   -> DynamoDBTableProvisionedThroughput
 dynamoDBTableProvisionedThroughput readCapacityUnitsarg writeCapacityUnitsarg =
   DynamoDBTableProvisionedThroughput
@@ -50,9 +51,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits
-ddbtptReadCapacityUnits :: Lens' DynamoDBTableProvisionedThroughput (Val Integer')
+ddbtptReadCapacityUnits :: Lens' DynamoDBTableProvisionedThroughput (Val Integer)
 ddbtptReadCapacityUnits = lens _dynamoDBTableProvisionedThroughputReadCapacityUnits (\s a -> s { _dynamoDBTableProvisionedThroughputReadCapacityUnits = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits
-ddbtptWriteCapacityUnits :: Lens' DynamoDBTableProvisionedThroughput (Val Integer')
+ddbtptWriteCapacityUnits :: Lens' DynamoDBTableProvisionedThroughput (Val Integer)
 ddbtptWriteCapacityUnits = lens _dynamoDBTableProvisionedThroughputWriteCapacityUnits (\s a -> s { _dynamoDBTableProvisionedThroughputWriteCapacityUnits = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableStreamSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html
 
@@ -25,13 +26,13 @@
   toJSON DynamoDBTableStreamSpecification{..} =
     object $
     catMaybes
-    [ Just ("StreamViewType" .= _dynamoDBTableStreamSpecificationStreamViewType)
+    [ (Just . ("StreamViewType",) . toJSON) _dynamoDBTableStreamSpecificationStreamViewType
     ]
 
 instance FromJSON DynamoDBTableStreamSpecification where
   parseJSON (Object obj) =
     DynamoDBTableStreamSpecification <$>
-      obj .: "StreamViewType"
+      (obj .: "StreamViewType")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableStreamSpecification' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceAssociationParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html
 
@@ -19,29 +20,29 @@
 data EC2InstanceAssociationParameter =
   EC2InstanceAssociationParameter
   { _eC2InstanceAssociationParameterKey :: Val Text
-  , _eC2InstanceAssociationParameterValue :: [Val Text]
+  , _eC2InstanceAssociationParameterValue :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON EC2InstanceAssociationParameter where
   toJSON EC2InstanceAssociationParameter{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _eC2InstanceAssociationParameterKey)
-    , Just ("Value" .= _eC2InstanceAssociationParameterValue)
+    [ (Just . ("Key",) . toJSON) _eC2InstanceAssociationParameterKey
+    , (Just . ("Value",) . toJSON) _eC2InstanceAssociationParameterValue
     ]
 
 instance FromJSON EC2InstanceAssociationParameter where
   parseJSON (Object obj) =
     EC2InstanceAssociationParameter <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceAssociationParameter' containing required
 -- fields as arguments.
 ec2InstanceAssociationParameter
   :: Val Text -- ^ 'eciapKey'
-  -> [Val Text] -- ^ 'eciapValue'
+  -> ValList Text -- ^ 'eciapValue'
   -> EC2InstanceAssociationParameter
 ec2InstanceAssociationParameter keyarg valuearg =
   EC2InstanceAssociationParameter
@@ -54,5 +55,5 @@
 eciapKey = lens _eC2InstanceAssociationParameterKey (\s a -> s { _eC2InstanceAssociationParameterKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value
-eciapValue :: Lens' EC2InstanceAssociationParameter [Val Text]
+eciapValue :: Lens' EC2InstanceAssociationParameter (ValList Text)
 eciapValue = lens _eC2InstanceAssociationParameterValue (\s a -> s { _eC2InstanceAssociationParameterValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html
 
@@ -29,19 +30,19 @@
   toJSON EC2InstanceBlockDeviceMapping{..} =
     object $
     catMaybes
-    [ Just ("DeviceName" .= _eC2InstanceBlockDeviceMappingDeviceName)
-    , ("Ebs" .=) <$> _eC2InstanceBlockDeviceMappingEbs
-    , ("NoDevice" .=) <$> _eC2InstanceBlockDeviceMappingNoDevice
-    , ("VirtualName" .=) <$> _eC2InstanceBlockDeviceMappingVirtualName
+    [ (Just . ("DeviceName",) . toJSON) _eC2InstanceBlockDeviceMappingDeviceName
+    , fmap (("Ebs",) . toJSON) _eC2InstanceBlockDeviceMappingEbs
+    , fmap (("NoDevice",) . toJSON) _eC2InstanceBlockDeviceMappingNoDevice
+    , fmap (("VirtualName",) . toJSON) _eC2InstanceBlockDeviceMappingVirtualName
     ]
 
 instance FromJSON EC2InstanceBlockDeviceMapping where
   parseJSON (Object obj) =
     EC2InstanceBlockDeviceMapping <$>
-      obj .: "DeviceName" <*>
-      obj .:? "Ebs" <*>
-      obj .:? "NoDevice" <*>
-      obj .:? "VirtualName"
+      (obj .: "DeviceName") <*>
+      (obj .:? "Ebs") <*>
+      (obj .:? "NoDevice") <*>
+      (obj .:? "VirtualName")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceBlockDeviceMapping' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceEbs.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html
 
@@ -18,11 +19,11 @@
 -- more convenient constructor.
 data EC2InstanceEbs =
   EC2InstanceEbs
-  { _eC2InstanceEbsDeleteOnTermination :: Maybe (Val Bool')
-  , _eC2InstanceEbsEncrypted :: Maybe (Val Bool')
-  , _eC2InstanceEbsIops :: Maybe (Val Integer')
+  { _eC2InstanceEbsDeleteOnTermination :: Maybe (Val Bool)
+  , _eC2InstanceEbsEncrypted :: Maybe (Val Bool)
+  , _eC2InstanceEbsIops :: Maybe (Val Integer)
   , _eC2InstanceEbsSnapshotId :: Maybe (Val Text)
-  , _eC2InstanceEbsVolumeSize :: Maybe (Val Integer')
+  , _eC2InstanceEbsVolumeSize :: Maybe (Val Integer)
   , _eC2InstanceEbsVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,23 +31,23 @@
   toJSON EC2InstanceEbs{..} =
     object $
     catMaybes
-    [ ("DeleteOnTermination" .=) <$> _eC2InstanceEbsDeleteOnTermination
-    , ("Encrypted" .=) <$> _eC2InstanceEbsEncrypted
-    , ("Iops" .=) <$> _eC2InstanceEbsIops
-    , ("SnapshotId" .=) <$> _eC2InstanceEbsSnapshotId
-    , ("VolumeSize" .=) <$> _eC2InstanceEbsVolumeSize
-    , ("VolumeType" .=) <$> _eC2InstanceEbsVolumeType
+    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2InstanceEbsDeleteOnTermination
+    , fmap (("Encrypted",) . toJSON . fmap Bool') _eC2InstanceEbsEncrypted
+    , fmap (("Iops",) . toJSON . fmap Integer') _eC2InstanceEbsIops
+    , fmap (("SnapshotId",) . toJSON) _eC2InstanceEbsSnapshotId
+    , fmap (("VolumeSize",) . toJSON . fmap Integer') _eC2InstanceEbsVolumeSize
+    , fmap (("VolumeType",) . toJSON) _eC2InstanceEbsVolumeType
     ]
 
 instance FromJSON EC2InstanceEbs where
   parseJSON (Object obj) =
     EC2InstanceEbs <$>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Encrypted" <*>
-      obj .:? "Iops" <*>
-      obj .:? "SnapshotId" <*>
-      obj .:? "VolumeSize" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Encrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "SnapshotId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumeSize") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceEbs' containing required fields as arguments.
@@ -63,15 +64,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination
-ecieDeleteOnTermination :: Lens' EC2InstanceEbs (Maybe (Val Bool'))
+ecieDeleteOnTermination :: Lens' EC2InstanceEbs (Maybe (Val Bool))
 ecieDeleteOnTermination = lens _eC2InstanceEbsDeleteOnTermination (\s a -> s { _eC2InstanceEbsDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted
-ecieEncrypted :: Lens' EC2InstanceEbs (Maybe (Val Bool'))
+ecieEncrypted :: Lens' EC2InstanceEbs (Maybe (Val Bool))
 ecieEncrypted = lens _eC2InstanceEbsEncrypted (\s a -> s { _eC2InstanceEbsEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops
-ecieIops :: Lens' EC2InstanceEbs (Maybe (Val Integer'))
+ecieIops :: Lens' EC2InstanceEbs (Maybe (Val Integer))
 ecieIops = lens _eC2InstanceEbsIops (\s a -> s { _eC2InstanceEbsIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid
@@ -79,7 +80,7 @@
 ecieSnapshotId = lens _eC2InstanceEbsSnapshotId (\s a -> s { _eC2InstanceEbsSnapshotId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize
-ecieVolumeSize :: Lens' EC2InstanceEbs (Maybe (Val Integer'))
+ecieVolumeSize :: Lens' EC2InstanceEbs (Maybe (Val Integer))
 ecieVolumeSize = lens _eC2InstanceEbsVolumeSize (\s a -> s { _eC2InstanceEbsVolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html
 
@@ -25,13 +26,13 @@
   toJSON EC2InstanceInstanceIpv6Address{..} =
     object $
     catMaybes
-    [ Just ("Ipv6Address" .= _eC2InstanceInstanceIpv6AddressIpv6Address)
+    [ (Just . ("Ipv6Address",) . toJSON) _eC2InstanceInstanceIpv6AddressIpv6Address
     ]
 
 instance FromJSON EC2InstanceInstanceIpv6Address where
   parseJSON (Object obj) =
     EC2InstanceInstanceIpv6Address <$>
-      obj .: "Ipv6Address"
+      (obj .: "Ipv6Address")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceInstanceIpv6Address' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNetworkInterface.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html
 
@@ -19,17 +20,17 @@
 -- 'ec2InstanceNetworkInterface' for a more convenient constructor.
 data EC2InstanceNetworkInterface =
   EC2InstanceNetworkInterface
-  { _eC2InstanceNetworkInterfaceAssociatePublicIpAddress :: Maybe (Val Bool')
-  , _eC2InstanceNetworkInterfaceDeleteOnTermination :: Maybe (Val Bool')
+  { _eC2InstanceNetworkInterfaceAssociatePublicIpAddress :: Maybe (Val Bool)
+  , _eC2InstanceNetworkInterfaceDeleteOnTermination :: Maybe (Val Bool)
   , _eC2InstanceNetworkInterfaceDescription :: Maybe (Val Text)
   , _eC2InstanceNetworkInterfaceDeviceIndex :: Val Text
-  , _eC2InstanceNetworkInterfaceGroupSet :: Maybe [Val Text]
-  , _eC2InstanceNetworkInterfaceIpv6AddressCount :: Maybe (Val Integer')
+  , _eC2InstanceNetworkInterfaceGroupSet :: Maybe (ValList Text)
+  , _eC2InstanceNetworkInterfaceIpv6AddressCount :: Maybe (Val Integer)
   , _eC2InstanceNetworkInterfaceIpv6Addresses :: Maybe [EC2InstanceInstanceIpv6Address]
   , _eC2InstanceNetworkInterfaceNetworkInterfaceId :: Maybe (Val Text)
   , _eC2InstanceNetworkInterfacePrivateIpAddress :: Maybe (Val Text)
   , _eC2InstanceNetworkInterfacePrivateIpAddresses :: Maybe [EC2InstancePrivateIpAddressSpecification]
-  , _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount :: Maybe (Val Integer')
+  , _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount :: Maybe (Val Integer)
   , _eC2InstanceNetworkInterfaceSubnetId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -37,35 +38,35 @@
   toJSON EC2InstanceNetworkInterface{..} =
     object $
     catMaybes
-    [ ("AssociatePublicIpAddress" .=) <$> _eC2InstanceNetworkInterfaceAssociatePublicIpAddress
-    , ("DeleteOnTermination" .=) <$> _eC2InstanceNetworkInterfaceDeleteOnTermination
-    , ("Description" .=) <$> _eC2InstanceNetworkInterfaceDescription
-    , Just ("DeviceIndex" .= _eC2InstanceNetworkInterfaceDeviceIndex)
-    , ("GroupSet" .=) <$> _eC2InstanceNetworkInterfaceGroupSet
-    , ("Ipv6AddressCount" .=) <$> _eC2InstanceNetworkInterfaceIpv6AddressCount
-    , ("Ipv6Addresses" .=) <$> _eC2InstanceNetworkInterfaceIpv6Addresses
-    , ("NetworkInterfaceId" .=) <$> _eC2InstanceNetworkInterfaceNetworkInterfaceId
-    , ("PrivateIpAddress" .=) <$> _eC2InstanceNetworkInterfacePrivateIpAddress
-    , ("PrivateIpAddresses" .=) <$> _eC2InstanceNetworkInterfacePrivateIpAddresses
-    , ("SecondaryPrivateIpAddressCount" .=) <$> _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount
-    , ("SubnetId" .=) <$> _eC2InstanceNetworkInterfaceSubnetId
+    [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _eC2InstanceNetworkInterfaceAssociatePublicIpAddress
+    , fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2InstanceNetworkInterfaceDeleteOnTermination
+    , fmap (("Description",) . toJSON) _eC2InstanceNetworkInterfaceDescription
+    , (Just . ("DeviceIndex",) . toJSON) _eC2InstanceNetworkInterfaceDeviceIndex
+    , fmap (("GroupSet",) . toJSON) _eC2InstanceNetworkInterfaceGroupSet
+    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2InstanceNetworkInterfaceIpv6AddressCount
+    , fmap (("Ipv6Addresses",) . toJSON) _eC2InstanceNetworkInterfaceIpv6Addresses
+    , fmap (("NetworkInterfaceId",) . toJSON) _eC2InstanceNetworkInterfaceNetworkInterfaceId
+    , fmap (("PrivateIpAddress",) . toJSON) _eC2InstanceNetworkInterfacePrivateIpAddress
+    , fmap (("PrivateIpAddresses",) . toJSON) _eC2InstanceNetworkInterfacePrivateIpAddresses
+    , fmap (("SecondaryPrivateIpAddressCount",) . toJSON . fmap Integer') _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount
+    , fmap (("SubnetId",) . toJSON) _eC2InstanceNetworkInterfaceSubnetId
     ]
 
 instance FromJSON EC2InstanceNetworkInterface where
   parseJSON (Object obj) =
     EC2InstanceNetworkInterface <$>
-      obj .:? "AssociatePublicIpAddress" <*>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Description" <*>
-      obj .: "DeviceIndex" <*>
-      obj .:? "GroupSet" <*>
-      obj .:? "Ipv6AddressCount" <*>
-      obj .:? "Ipv6Addresses" <*>
-      obj .:? "NetworkInterfaceId" <*>
-      obj .:? "PrivateIpAddress" <*>
-      obj .:? "PrivateIpAddresses" <*>
-      obj .:? "SecondaryPrivateIpAddressCount" <*>
-      obj .:? "SubnetId"
+      fmap (fmap (fmap unBool')) (obj .:? "AssociatePublicIpAddress") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      (obj .:? "Description") <*>
+      (obj .: "DeviceIndex") <*>
+      (obj .:? "GroupSet") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Ipv6AddressCount") <*>
+      (obj .:? "Ipv6Addresses") <*>
+      (obj .:? "NetworkInterfaceId") <*>
+      (obj .:? "PrivateIpAddress") <*>
+      (obj .:? "PrivateIpAddresses") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SecondaryPrivateIpAddressCount") <*>
+      (obj .:? "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceNetworkInterface' containing required fields
@@ -90,11 +91,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip
-eciniAssociatePublicIpAddress :: Lens' EC2InstanceNetworkInterface (Maybe (Val Bool'))
+eciniAssociatePublicIpAddress :: Lens' EC2InstanceNetworkInterface (Maybe (Val Bool))
 eciniAssociatePublicIpAddress = lens _eC2InstanceNetworkInterfaceAssociatePublicIpAddress (\s a -> s { _eC2InstanceNetworkInterfaceAssociatePublicIpAddress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete
-eciniDeleteOnTermination :: Lens' EC2InstanceNetworkInterface (Maybe (Val Bool'))
+eciniDeleteOnTermination :: Lens' EC2InstanceNetworkInterface (Maybe (Val Bool))
 eciniDeleteOnTermination = lens _eC2InstanceNetworkInterfaceDeleteOnTermination (\s a -> s { _eC2InstanceNetworkInterfaceDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description
@@ -106,11 +107,11 @@
 eciniDeviceIndex = lens _eC2InstanceNetworkInterfaceDeviceIndex (\s a -> s { _eC2InstanceNetworkInterfaceDeviceIndex = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset
-eciniGroupSet :: Lens' EC2InstanceNetworkInterface (Maybe [Val Text])
+eciniGroupSet :: Lens' EC2InstanceNetworkInterface (Maybe (ValList Text))
 eciniGroupSet = lens _eC2InstanceNetworkInterfaceGroupSet (\s a -> s { _eC2InstanceNetworkInterfaceGroupSet = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount
-eciniIpv6AddressCount :: Lens' EC2InstanceNetworkInterface (Maybe (Val Integer'))
+eciniIpv6AddressCount :: Lens' EC2InstanceNetworkInterface (Maybe (Val Integer))
 eciniIpv6AddressCount = lens _eC2InstanceNetworkInterfaceIpv6AddressCount (\s a -> s { _eC2InstanceNetworkInterfaceIpv6AddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses
@@ -130,7 +131,7 @@
 eciniPrivateIpAddresses = lens _eC2InstanceNetworkInterfacePrivateIpAddresses (\s a -> s { _eC2InstanceNetworkInterfacePrivateIpAddresses = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip
-eciniSecondaryPrivateIpAddressCount :: Lens' EC2InstanceNetworkInterface (Maybe (Val Integer'))
+eciniSecondaryPrivateIpAddressCount :: Lens' EC2InstanceNetworkInterface (Maybe (Val Integer))
 eciniSecondaryPrivateIpAddressCount = lens _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount (\s a -> s { _eC2InstanceNetworkInterfaceSecondaryPrivateIpAddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceNoDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html
 
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstancePrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
 
@@ -19,7 +20,7 @@
 -- constructor.
 data EC2InstancePrivateIpAddressSpecification =
   EC2InstancePrivateIpAddressSpecification
-  { _eC2InstancePrivateIpAddressSpecificationPrimary :: Val Bool'
+  { _eC2InstancePrivateIpAddressSpecificationPrimary :: Val Bool
   , _eC2InstancePrivateIpAddressSpecificationPrivateIpAddress :: Val Text
   } deriving (Show, Eq)
 
@@ -27,21 +28,21 @@
   toJSON EC2InstancePrivateIpAddressSpecification{..} =
     object $
     catMaybes
-    [ Just ("Primary" .= _eC2InstancePrivateIpAddressSpecificationPrimary)
-    , Just ("PrivateIpAddress" .= _eC2InstancePrivateIpAddressSpecificationPrivateIpAddress)
+    [ (Just . ("Primary",) . toJSON . fmap Bool') _eC2InstancePrivateIpAddressSpecificationPrimary
+    , (Just . ("PrivateIpAddress",) . toJSON) _eC2InstancePrivateIpAddressSpecificationPrivateIpAddress
     ]
 
 instance FromJSON EC2InstancePrivateIpAddressSpecification where
   parseJSON (Object obj) =
     EC2InstancePrivateIpAddressSpecification <$>
-      obj .: "Primary" <*>
-      obj .: "PrivateIpAddress"
+      fmap (fmap unBool') (obj .: "Primary") <*>
+      (obj .: "PrivateIpAddress")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstancePrivateIpAddressSpecification' containing
 -- required fields as arguments.
 ec2InstancePrivateIpAddressSpecification
-  :: Val Bool' -- ^ 'ecipiasPrimary'
+  :: Val Bool -- ^ 'ecipiasPrimary'
   -> Val Text -- ^ 'ecipiasPrivateIpAddress'
   -> EC2InstancePrivateIpAddressSpecification
 ec2InstancePrivateIpAddressSpecification primaryarg privateIpAddressarg =
@@ -51,7 +52,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary
-ecipiasPrimary :: Lens' EC2InstancePrivateIpAddressSpecification (Val Bool')
+ecipiasPrimary :: Lens' EC2InstancePrivateIpAddressSpecification (Val Bool)
 ecipiasPrimary = lens _eC2InstancePrivateIpAddressSpecificationPrimary (\s a -> s { _eC2InstancePrivateIpAddressSpecificationPrimary = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceSsmAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html
 
@@ -26,15 +27,15 @@
   toJSON EC2InstanceSsmAssociation{..} =
     object $
     catMaybes
-    [ ("AssociationParameters" .=) <$> _eC2InstanceSsmAssociationAssociationParameters
-    , Just ("DocumentName" .= _eC2InstanceSsmAssociationDocumentName)
+    [ fmap (("AssociationParameters",) . toJSON) _eC2InstanceSsmAssociationAssociationParameters
+    , (Just . ("DocumentName",) . toJSON) _eC2InstanceSsmAssociationDocumentName
     ]
 
 instance FromJSON EC2InstanceSsmAssociation where
   parseJSON (Object obj) =
     EC2InstanceSsmAssociation <$>
-      obj .:? "AssociationParameters" <*>
-      obj .: "DocumentName"
+      (obj .:? "AssociationParameters") <*>
+      (obj .: "DocumentName")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceSsmAssociation' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html
 
@@ -26,15 +27,15 @@
   toJSON EC2InstanceVolume{..} =
     object $
     catMaybes
-    [ Just ("Device" .= _eC2InstanceVolumeDevice)
-    , Just ("VolumeId" .= _eC2InstanceVolumeVolumeId)
+    [ (Just . ("Device",) . toJSON) _eC2InstanceVolumeDevice
+    , (Just . ("VolumeId",) . toJSON) _eC2InstanceVolumeVolumeId
     ]
 
 instance FromJSON EC2InstanceVolume where
   parseJSON (Object obj) =
     EC2InstanceVolume <$>
-      obj .: "Device" <*>
-      obj .: "VolumeId"
+      (obj .: "Device") <*>
+      (obj .: "VolumeId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InstanceVolume' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryIcmp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html
 
@@ -18,23 +19,23 @@
 -- 'ec2NetworkAclEntryIcmp' for a more convenient constructor.
 data EC2NetworkAclEntryIcmp =
   EC2NetworkAclEntryIcmp
-  { _eC2NetworkAclEntryIcmpCode :: Maybe (Val Integer')
-  , _eC2NetworkAclEntryIcmpType :: Maybe (Val Integer')
+  { _eC2NetworkAclEntryIcmpCode :: Maybe (Val Integer)
+  , _eC2NetworkAclEntryIcmpType :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2NetworkAclEntryIcmp where
   toJSON EC2NetworkAclEntryIcmp{..} =
     object $
     catMaybes
-    [ ("Code" .=) <$> _eC2NetworkAclEntryIcmpCode
-    , ("Type" .=) <$> _eC2NetworkAclEntryIcmpType
+    [ fmap (("Code",) . toJSON . fmap Integer') _eC2NetworkAclEntryIcmpCode
+    , fmap (("Type",) . toJSON . fmap Integer') _eC2NetworkAclEntryIcmpType
     ]
 
 instance FromJSON EC2NetworkAclEntryIcmp where
   parseJSON (Object obj) =
     EC2NetworkAclEntryIcmp <$>
-      obj .:? "Code" <*>
-      obj .:? "Type"
+      fmap (fmap (fmap unInteger')) (obj .:? "Code") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkAclEntryIcmp' containing required fields as
@@ -48,9 +49,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-code
-ecnaeiCode :: Lens' EC2NetworkAclEntryIcmp (Maybe (Val Integer'))
+ecnaeiCode :: Lens' EC2NetworkAclEntryIcmp (Maybe (Val Integer))
 ecnaeiCode = lens _eC2NetworkAclEntryIcmpCode (\s a -> s { _eC2NetworkAclEntryIcmpCode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-type
-ecnaeiType :: Lens' EC2NetworkAclEntryIcmp (Maybe (Val Integer'))
+ecnaeiType :: Lens' EC2NetworkAclEntryIcmp (Maybe (Val Integer))
 ecnaeiType = lens _eC2NetworkAclEntryIcmpType (\s a -> s { _eC2NetworkAclEntryIcmpType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkAclEntryPortRange.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html
 
@@ -18,23 +19,23 @@
 -- 'ec2NetworkAclEntryPortRange' for a more convenient constructor.
 data EC2NetworkAclEntryPortRange =
   EC2NetworkAclEntryPortRange
-  { _eC2NetworkAclEntryPortRangeFrom :: Maybe (Val Integer')
-  , _eC2NetworkAclEntryPortRangeTo :: Maybe (Val Integer')
+  { _eC2NetworkAclEntryPortRangeFrom :: Maybe (Val Integer)
+  , _eC2NetworkAclEntryPortRangeTo :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2NetworkAclEntryPortRange where
   toJSON EC2NetworkAclEntryPortRange{..} =
     object $
     catMaybes
-    [ ("From" .=) <$> _eC2NetworkAclEntryPortRangeFrom
-    , ("To" .=) <$> _eC2NetworkAclEntryPortRangeTo
+    [ fmap (("From",) . toJSON . fmap Integer') _eC2NetworkAclEntryPortRangeFrom
+    , fmap (("To",) . toJSON . fmap Integer') _eC2NetworkAclEntryPortRangeTo
     ]
 
 instance FromJSON EC2NetworkAclEntryPortRange where
   parseJSON (Object obj) =
     EC2NetworkAclEntryPortRange <$>
-      obj .:? "From" <*>
-      obj .:? "To"
+      fmap (fmap (fmap unInteger')) (obj .:? "From") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "To")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkAclEntryPortRange' containing required fields
@@ -48,9 +49,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-from
-ecnaeprFrom :: Lens' EC2NetworkAclEntryPortRange (Maybe (Val Integer'))
+ecnaeprFrom :: Lens' EC2NetworkAclEntryPortRange (Maybe (Val Integer))
 ecnaeprFrom = lens _eC2NetworkAclEntryPortRangeFrom (\s a -> s { _eC2NetworkAclEntryPortRangeFrom = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-to
-ecnaeprTo :: Lens' EC2NetworkAclEntryPortRange (Maybe (Val Integer'))
+ecnaeprTo :: Lens' EC2NetworkAclEntryPortRange (Maybe (Val Integer))
 ecnaeprTo = lens _eC2NetworkAclEntryPortRangeTo (\s a -> s { _eC2NetworkAclEntryPortRangeTo = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfaceInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinterface-instanceipv6address.html
 
@@ -26,13 +27,13 @@
   toJSON EC2NetworkInterfaceInstanceIpv6Address{..} =
     object $
     catMaybes
-    [ Just ("Ipv6Address" .= _eC2NetworkInterfaceInstanceIpv6AddressIpv6Address)
+    [ (Just . ("Ipv6Address",) . toJSON) _eC2NetworkInterfaceInstanceIpv6AddressIpv6Address
     ]
 
 instance FromJSON EC2NetworkInterfaceInstanceIpv6Address where
   parseJSON (Object obj) =
     EC2NetworkInterfaceInstanceIpv6Address <$>
-      obj .: "Ipv6Address"
+      (obj .: "Ipv6Address")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkInterfaceInstanceIpv6Address' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2NetworkInterfacePrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
 
@@ -20,7 +21,7 @@
 -- constructor.
 data EC2NetworkInterfacePrivateIpAddressSpecification =
   EC2NetworkInterfacePrivateIpAddressSpecification
-  { _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary :: Val Bool'
+  { _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary :: Val Bool
   , _eC2NetworkInterfacePrivateIpAddressSpecificationPrivateIpAddress :: Val Text
   } deriving (Show, Eq)
 
@@ -28,21 +29,21 @@
   toJSON EC2NetworkInterfacePrivateIpAddressSpecification{..} =
     object $
     catMaybes
-    [ Just ("Primary" .= _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary)
-    , Just ("PrivateIpAddress" .= _eC2NetworkInterfacePrivateIpAddressSpecificationPrivateIpAddress)
+    [ (Just . ("Primary",) . toJSON . fmap Bool') _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary
+    , (Just . ("PrivateIpAddress",) . toJSON) _eC2NetworkInterfacePrivateIpAddressSpecificationPrivateIpAddress
     ]
 
 instance FromJSON EC2NetworkInterfacePrivateIpAddressSpecification where
   parseJSON (Object obj) =
     EC2NetworkInterfacePrivateIpAddressSpecification <$>
-      obj .: "Primary" <*>
-      obj .: "PrivateIpAddress"
+      fmap (fmap unBool') (obj .: "Primary") <*>
+      (obj .: "PrivateIpAddress")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkInterfacePrivateIpAddressSpecification'
 -- containing required fields as arguments.
 ec2NetworkInterfacePrivateIpAddressSpecification
-  :: Val Bool' -- ^ 'ecnipiasPrimary'
+  :: Val Bool -- ^ 'ecnipiasPrimary'
   -> Val Text -- ^ 'ecnipiasPrivateIpAddress'
   -> EC2NetworkInterfacePrivateIpAddressSpecification
 ec2NetworkInterfacePrivateIpAddressSpecification primaryarg privateIpAddressarg =
@@ -52,7 +53,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary
-ecnipiasPrimary :: Lens' EC2NetworkInterfacePrivateIpAddressSpecification (Val Bool')
+ecnipiasPrimary :: Lens' EC2NetworkInterfacePrivateIpAddressSpecification (Val Bool)
 ecnipiasPrimary = lens _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary (\s a -> s { _eC2NetworkInterfacePrivateIpAddressSpecificationPrimary = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
 
@@ -22,34 +23,34 @@
   , _eC2SecurityGroupEgressPropertyCidrIpv6 :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyDestinationPrefixListId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId :: Maybe (Val Text)
-  , _eC2SecurityGroupEgressPropertyFromPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupEgressPropertyFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupEgressPropertyIpProtocol :: Val Text
-  , _eC2SecurityGroupEgressPropertyToPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupEgressPropertyToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SecurityGroupEgressProperty where
   toJSON EC2SecurityGroupEgressProperty{..} =
     object $
     catMaybes
-    [ ("CidrIp" .=) <$> _eC2SecurityGroupEgressPropertyCidrIp
-    , ("CidrIpv6" .=) <$> _eC2SecurityGroupEgressPropertyCidrIpv6
-    , ("DestinationPrefixListId" .=) <$> _eC2SecurityGroupEgressPropertyDestinationPrefixListId
-    , ("DestinationSecurityGroupId" .=) <$> _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId
-    , ("FromPort" .=) <$> _eC2SecurityGroupEgressPropertyFromPort
-    , Just ("IpProtocol" .= _eC2SecurityGroupEgressPropertyIpProtocol)
-    , ("ToPort" .=) <$> _eC2SecurityGroupEgressPropertyToPort
+    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressPropertyCidrIp
+    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressPropertyCidrIpv6
+    , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressPropertyDestinationPrefixListId
+    , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId
+    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressPropertyFromPort
+    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupEgressPropertyIpProtocol
+    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressPropertyToPort
     ]
 
 instance FromJSON EC2SecurityGroupEgressProperty where
   parseJSON (Object obj) =
     EC2SecurityGroupEgressProperty <$>
-      obj .:? "CidrIp" <*>
-      obj .:? "CidrIpv6" <*>
-      obj .:? "DestinationPrefixListId" <*>
-      obj .:? "DestinationSecurityGroupId" <*>
-      obj .:? "FromPort" <*>
-      obj .: "IpProtocol" <*>
-      obj .:? "ToPort"
+      (obj .:? "CidrIp") <*>
+      (obj .:? "CidrIpv6") <*>
+      (obj .:? "DestinationPrefixListId") <*>
+      (obj .:? "DestinationSecurityGroupId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
+      (obj .: "IpProtocol") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ToPort")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SecurityGroupEgressProperty' containing required
@@ -85,7 +86,7 @@
 ecsgepDestinationSecurityGroupId = lens _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId (\s a -> s { _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-fromport
-ecsgepFromPort :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Integer'))
+ecsgepFromPort :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Integer))
 ecsgepFromPort = lens _eC2SecurityGroupEgressPropertyFromPort (\s a -> s { _eC2SecurityGroupEgressPropertyFromPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-ipprotocol
@@ -93,5 +94,5 @@
 ecsgepIpProtocol = lens _eC2SecurityGroupEgressPropertyIpProtocol (\s a -> s { _eC2SecurityGroupEgressPropertyIpProtocol = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-toport
-ecsgepToPort :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Integer'))
+ecsgepToPort :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Integer))
 ecsgepToPort = lens _eC2SecurityGroupEgressPropertyToPort (\s a -> s { _eC2SecurityGroupEgressPropertyToPort = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
 
@@ -20,39 +21,39 @@
   EC2SecurityGroupIngressProperty
   { _eC2SecurityGroupIngressPropertyCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupIngressPropertyCidrIpv6 :: Maybe (Val Text)
-  , _eC2SecurityGroupIngressPropertyFromPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupIngressPropertyFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupIngressPropertyIpProtocol :: Val Text
   , _eC2SecurityGroupIngressPropertySourceSecurityGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupIngressPropertySourceSecurityGroupName :: Maybe (Val Text)
   , _eC2SecurityGroupIngressPropertySourceSecurityGroupOwnerId :: Maybe (Val Text)
-  , _eC2SecurityGroupIngressPropertyToPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupIngressPropertyToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SecurityGroupIngressProperty where
   toJSON EC2SecurityGroupIngressProperty{..} =
     object $
     catMaybes
-    [ ("CidrIp" .=) <$> _eC2SecurityGroupIngressPropertyCidrIp
-    , ("CidrIpv6" .=) <$> _eC2SecurityGroupIngressPropertyCidrIpv6
-    , ("FromPort" .=) <$> _eC2SecurityGroupIngressPropertyFromPort
-    , Just ("IpProtocol" .= _eC2SecurityGroupIngressPropertyIpProtocol)
-    , ("SourceSecurityGroupId" .=) <$> _eC2SecurityGroupIngressPropertySourceSecurityGroupId
-    , ("SourceSecurityGroupName" .=) <$> _eC2SecurityGroupIngressPropertySourceSecurityGroupName
-    , ("SourceSecurityGroupOwnerId" .=) <$> _eC2SecurityGroupIngressPropertySourceSecurityGroupOwnerId
-    , ("ToPort" .=) <$> _eC2SecurityGroupIngressPropertyToPort
+    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressPropertyCidrIp
+    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressPropertyCidrIpv6
+    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressPropertyFromPort
+    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupIngressPropertyIpProtocol
+    , fmap (("SourceSecurityGroupId",) . toJSON) _eC2SecurityGroupIngressPropertySourceSecurityGroupId
+    , fmap (("SourceSecurityGroupName",) . toJSON) _eC2SecurityGroupIngressPropertySourceSecurityGroupName
+    , fmap (("SourceSecurityGroupOwnerId",) . toJSON) _eC2SecurityGroupIngressPropertySourceSecurityGroupOwnerId
+    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressPropertyToPort
     ]
 
 instance FromJSON EC2SecurityGroupIngressProperty where
   parseJSON (Object obj) =
     EC2SecurityGroupIngressProperty <$>
-      obj .:? "CidrIp" <*>
-      obj .:? "CidrIpv6" <*>
-      obj .:? "FromPort" <*>
-      obj .: "IpProtocol" <*>
-      obj .:? "SourceSecurityGroupId" <*>
-      obj .:? "SourceSecurityGroupName" <*>
-      obj .:? "SourceSecurityGroupOwnerId" <*>
-      obj .:? "ToPort"
+      (obj .:? "CidrIp") <*>
+      (obj .:? "CidrIpv6") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
+      (obj .: "IpProtocol") <*>
+      (obj .:? "SourceSecurityGroupId") <*>
+      (obj .:? "SourceSecurityGroupName") <*>
+      (obj .:? "SourceSecurityGroupOwnerId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ToPort")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SecurityGroupIngressProperty' containing required
@@ -81,7 +82,7 @@
 ecsgipCidrIpv6 = lens _eC2SecurityGroupIngressPropertyCidrIpv6 (\s a -> s { _eC2SecurityGroupIngressPropertyCidrIpv6 = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-fromport
-ecsgipFromPort :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Integer'))
+ecsgipFromPort :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Integer))
 ecsgipFromPort = lens _eC2SecurityGroupIngressPropertyFromPort (\s a -> s { _eC2SecurityGroupIngressPropertyFromPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-ipprotocol
@@ -101,5 +102,5 @@
 ecsgipSourceSecurityGroupOwnerId = lens _eC2SecurityGroupIngressPropertySourceSecurityGroupOwnerId (\s a -> s { _eC2SecurityGroupIngressPropertySourceSecurityGroupOwnerId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-toport
-ecsgipToPort :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Integer'))
+ecsgipToPort :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Integer))
 ecsgipToPort = lens _eC2SecurityGroupIngressPropertyToPort (\s a -> s { _eC2SecurityGroupIngressPropertyToPort = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html
 
@@ -28,19 +29,19 @@
   toJSON EC2SpotFleetBlockDeviceMapping{..} =
     object $
     catMaybes
-    [ Just ("DeviceName" .= _eC2SpotFleetBlockDeviceMappingDeviceName)
-    , ("Ebs" .=) <$> _eC2SpotFleetBlockDeviceMappingEbs
-    , ("NoDevice" .=) <$> _eC2SpotFleetBlockDeviceMappingNoDevice
-    , ("VirtualName" .=) <$> _eC2SpotFleetBlockDeviceMappingVirtualName
+    [ (Just . ("DeviceName",) . toJSON) _eC2SpotFleetBlockDeviceMappingDeviceName
+    , fmap (("Ebs",) . toJSON) _eC2SpotFleetBlockDeviceMappingEbs
+    , fmap (("NoDevice",) . toJSON) _eC2SpotFleetBlockDeviceMappingNoDevice
+    , fmap (("VirtualName",) . toJSON) _eC2SpotFleetBlockDeviceMappingVirtualName
     ]
 
 instance FromJSON EC2SpotFleetBlockDeviceMapping where
   parseJSON (Object obj) =
     EC2SpotFleetBlockDeviceMapping <$>
-      obj .: "DeviceName" <*>
-      obj .:? "Ebs" <*>
-      obj .:? "NoDevice" <*>
-      obj .:? "VirtualName"
+      (obj .: "DeviceName") <*>
+      (obj .:? "Ebs") <*>
+      (obj .:? "NoDevice") <*>
+      (obj .:? "VirtualName")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetBlockDeviceMapping' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetEbsBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html
 
@@ -18,11 +19,11 @@
 -- 'ec2SpotFleetEbsBlockDevice' for a more convenient constructor.
 data EC2SpotFleetEbsBlockDevice =
   EC2SpotFleetEbsBlockDevice
-  { _eC2SpotFleetEbsBlockDeviceDeleteOnTermination :: Maybe (Val Bool')
-  , _eC2SpotFleetEbsBlockDeviceEncrypted :: Maybe (Val Bool')
-  , _eC2SpotFleetEbsBlockDeviceIops :: Maybe (Val Integer')
+  { _eC2SpotFleetEbsBlockDeviceDeleteOnTermination :: Maybe (Val Bool)
+  , _eC2SpotFleetEbsBlockDeviceEncrypted :: Maybe (Val Bool)
+  , _eC2SpotFleetEbsBlockDeviceIops :: Maybe (Val Integer)
   , _eC2SpotFleetEbsBlockDeviceSnapshotId :: Maybe (Val Text)
-  , _eC2SpotFleetEbsBlockDeviceVolumeSize :: Maybe (Val Integer')
+  , _eC2SpotFleetEbsBlockDeviceVolumeSize :: Maybe (Val Integer)
   , _eC2SpotFleetEbsBlockDeviceVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,23 +31,23 @@
   toJSON EC2SpotFleetEbsBlockDevice{..} =
     object $
     catMaybes
-    [ ("DeleteOnTermination" .=) <$> _eC2SpotFleetEbsBlockDeviceDeleteOnTermination
-    , ("Encrypted" .=) <$> _eC2SpotFleetEbsBlockDeviceEncrypted
-    , ("Iops" .=) <$> _eC2SpotFleetEbsBlockDeviceIops
-    , ("SnapshotId" .=) <$> _eC2SpotFleetEbsBlockDeviceSnapshotId
-    , ("VolumeSize" .=) <$> _eC2SpotFleetEbsBlockDeviceVolumeSize
-    , ("VolumeType" .=) <$> _eC2SpotFleetEbsBlockDeviceVolumeType
+    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2SpotFleetEbsBlockDeviceDeleteOnTermination
+    , fmap (("Encrypted",) . toJSON . fmap Bool') _eC2SpotFleetEbsBlockDeviceEncrypted
+    , fmap (("Iops",) . toJSON . fmap Integer') _eC2SpotFleetEbsBlockDeviceIops
+    , fmap (("SnapshotId",) . toJSON) _eC2SpotFleetEbsBlockDeviceSnapshotId
+    , fmap (("VolumeSize",) . toJSON . fmap Integer') _eC2SpotFleetEbsBlockDeviceVolumeSize
+    , fmap (("VolumeType",) . toJSON) _eC2SpotFleetEbsBlockDeviceVolumeType
     ]
 
 instance FromJSON EC2SpotFleetEbsBlockDevice where
   parseJSON (Object obj) =
     EC2SpotFleetEbsBlockDevice <$>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Encrypted" <*>
-      obj .:? "Iops" <*>
-      obj .:? "SnapshotId" <*>
-      obj .:? "VolumeSize" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Encrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "SnapshotId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumeSize") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetEbsBlockDevice' containing required fields
@@ -64,15 +65,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-deleteontermination
-ecsfebdDeleteOnTermination :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Bool'))
+ecsfebdDeleteOnTermination :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Bool))
 ecsfebdDeleteOnTermination = lens _eC2SpotFleetEbsBlockDeviceDeleteOnTermination (\s a -> s { _eC2SpotFleetEbsBlockDeviceDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-encrypted
-ecsfebdEncrypted :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Bool'))
+ecsfebdEncrypted :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Bool))
 ecsfebdEncrypted = lens _eC2SpotFleetEbsBlockDeviceEncrypted (\s a -> s { _eC2SpotFleetEbsBlockDeviceEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-iops
-ecsfebdIops :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Integer'))
+ecsfebdIops :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Integer))
 ecsfebdIops = lens _eC2SpotFleetEbsBlockDeviceIops (\s a -> s { _eC2SpotFleetEbsBlockDeviceIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-snapshotid
@@ -80,7 +81,7 @@
 ecsfebdSnapshotId = lens _eC2SpotFleetEbsBlockDeviceSnapshotId (\s a -> s { _eC2SpotFleetEbsBlockDeviceSnapshotId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-volumesize
-ecsfebdVolumeSize :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Integer'))
+ecsfebdVolumeSize :: Lens' EC2SpotFleetEbsBlockDevice (Maybe (Val Integer))
 ecsfebdVolumeSize = lens _eC2SpotFleetEbsBlockDeviceVolumeSize (\s a -> s { _eC2SpotFleetEbsBlockDeviceVolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetGroupIdentifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-securitygroups.html
 
@@ -25,13 +26,13 @@
   toJSON EC2SpotFleetGroupIdentifier{..} =
     object $
     catMaybes
-    [ Just ("GroupId" .= _eC2SpotFleetGroupIdentifierGroupId)
+    [ (Just . ("GroupId",) . toJSON) _eC2SpotFleetGroupIdentifierGroupId
     ]
 
 instance FromJSON EC2SpotFleetGroupIdentifier where
   parseJSON (Object obj) =
     EC2SpotFleetGroupIdentifier <$>
-      obj .: "GroupId"
+      (obj .: "GroupId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetGroupIdentifier' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetIamInstanceProfileSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-iaminstanceprofile.html
 
@@ -27,13 +28,13 @@
   toJSON EC2SpotFleetIamInstanceProfileSpecification{..} =
     object $
     catMaybes
-    [ ("Arn" .=) <$> _eC2SpotFleetIamInstanceProfileSpecificationArn
+    [ fmap (("Arn",) . toJSON) _eC2SpotFleetIamInstanceProfileSpecificationArn
     ]
 
 instance FromJSON EC2SpotFleetIamInstanceProfileSpecification where
   parseJSON (Object obj) =
     EC2SpotFleetIamInstanceProfileSpecification <$>
-      obj .:? "Arn"
+      (obj .:? "Arn")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetIamInstanceProfileSpecification' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceIpv6Address.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-instanceipv6address.html
 
@@ -25,13 +26,13 @@
   toJSON EC2SpotFleetInstanceIpv6Address{..} =
     object $
     catMaybes
-    [ Just ("Ipv6Address" .= _eC2SpotFleetInstanceIpv6AddressIpv6Address)
+    [ (Just . ("Ipv6Address",) . toJSON) _eC2SpotFleetInstanceIpv6AddressIpv6Address
     ]
 
 instance FromJSON EC2SpotFleetInstanceIpv6Address where
   parseJSON (Object obj) =
     EC2SpotFleetInstanceIpv6Address <$>
-      obj .: "Ipv6Address"
+      (obj .: "Ipv6Address")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetInstanceIpv6Address' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetInstanceNetworkInterfaceSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html
 
@@ -21,16 +22,16 @@
 -- constructor.
 data EC2SpotFleetInstanceNetworkInterfaceSpecification =
   EC2SpotFleetInstanceNetworkInterfaceSpecification
-  { _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress :: Maybe (Val Bool')
-  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination :: Maybe (Val Bool')
+  { _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress :: Maybe (Val Bool)
+  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination :: Maybe (Val Bool)
   , _eC2SpotFleetInstanceNetworkInterfaceSpecificationDescription :: Maybe (Val Text)
-  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex :: Maybe (Val Integer')
-  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups :: Maybe [Val Text]
-  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount :: Maybe (Val Integer')
+  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex :: Maybe (Val Integer)
+  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups :: Maybe (ValList Text)
+  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount :: Maybe (Val Integer)
   , _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6Addresses :: Maybe [EC2SpotFleetInstanceIpv6Address]
   , _eC2SpotFleetInstanceNetworkInterfaceSpecificationNetworkInterfaceId :: Maybe (Val Text)
   , _eC2SpotFleetInstanceNetworkInterfaceSpecificationPrivateIpAddresses :: Maybe [EC2SpotFleetPrivateIpAddressSpecification]
-  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount :: Maybe (Val Integer')
+  , _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount :: Maybe (Val Integer)
   , _eC2SpotFleetInstanceNetworkInterfaceSpecificationSubnetId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -38,33 +39,33 @@
   toJSON EC2SpotFleetInstanceNetworkInterfaceSpecification{..} =
     object $
     catMaybes
-    [ ("AssociatePublicIpAddress" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress
-    , ("DeleteOnTermination" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination
-    , ("Description" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationDescription
-    , ("DeviceIndex" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex
-    , ("Groups" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups
-    , ("Ipv6AddressCount" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount
-    , ("Ipv6Addresses" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6Addresses
-    , ("NetworkInterfaceId" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationNetworkInterfaceId
-    , ("PrivateIpAddresses" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationPrivateIpAddresses
-    , ("SecondaryPrivateIpAddressCount" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount
-    , ("SubnetId" .=) <$> _eC2SpotFleetInstanceNetworkInterfaceSpecificationSubnetId
+    [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress
+    , fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination
+    , fmap (("Description",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationDescription
+    , fmap (("DeviceIndex",) . toJSON . fmap Integer') _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex
+    , fmap (("Groups",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups
+    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount
+    , fmap (("Ipv6Addresses",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6Addresses
+    , fmap (("NetworkInterfaceId",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationNetworkInterfaceId
+    , fmap (("PrivateIpAddresses",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationPrivateIpAddresses
+    , fmap (("SecondaryPrivateIpAddressCount",) . toJSON . fmap Integer') _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount
+    , fmap (("SubnetId",) . toJSON) _eC2SpotFleetInstanceNetworkInterfaceSpecificationSubnetId
     ]
 
 instance FromJSON EC2SpotFleetInstanceNetworkInterfaceSpecification where
   parseJSON (Object obj) =
     EC2SpotFleetInstanceNetworkInterfaceSpecification <$>
-      obj .:? "AssociatePublicIpAddress" <*>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Description" <*>
-      obj .:? "DeviceIndex" <*>
-      obj .:? "Groups" <*>
-      obj .:? "Ipv6AddressCount" <*>
-      obj .:? "Ipv6Addresses" <*>
-      obj .:? "NetworkInterfaceId" <*>
-      obj .:? "PrivateIpAddresses" <*>
-      obj .:? "SecondaryPrivateIpAddressCount" <*>
-      obj .:? "SubnetId"
+      fmap (fmap (fmap unBool')) (obj .:? "AssociatePublicIpAddress") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DeviceIndex") <*>
+      (obj .:? "Groups") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Ipv6AddressCount") <*>
+      (obj .:? "Ipv6Addresses") <*>
+      (obj .:? "NetworkInterfaceId") <*>
+      (obj .:? "PrivateIpAddresses") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SecondaryPrivateIpAddressCount") <*>
+      (obj .:? "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetInstanceNetworkInterfaceSpecification'
@@ -87,11 +88,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-associatepublicipaddress
-ecsfinisAssociatePublicIpAddress :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Bool'))
+ecsfinisAssociatePublicIpAddress :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Bool))
 ecsfinisAssociatePublicIpAddress = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationAssociatePublicIpAddress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-deleteontermination
-ecsfinisDeleteOnTermination :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Bool'))
+ecsfinisDeleteOnTermination :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Bool))
 ecsfinisDeleteOnTermination = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-description
@@ -99,15 +100,15 @@
 ecsfinisDescription = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationDescription (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-deviceindex
-ecsfinisDeviceIndex :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer'))
+ecsfinisDeviceIndex :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer))
 ecsfinisDeviceIndex = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationDeviceIndex = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-groups
-ecsfinisGroups :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe [Val Text])
+ecsfinisGroups :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (ValList Text))
 ecsfinisGroups = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-ipv6addresscount
-ecsfinisIpv6AddressCount :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer'))
+ecsfinisIpv6AddressCount :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer))
 ecsfinisIpv6AddressCount = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationIpv6AddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-ipv6addresses
@@ -123,7 +124,7 @@
 ecsfinisPrivateIpAddresses = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationPrivateIpAddresses (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationPrivateIpAddresses = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-secondaryprivateipaddresscount
-ecsfinisSecondaryPrivateIpAddressCount :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer'))
+ecsfinisSecondaryPrivateIpAddressCount :: Lens' EC2SpotFleetInstanceNetworkInterfaceSpecification (Maybe (Val Integer))
 ecsfinisSecondaryPrivateIpAddressCount = lens _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount (\s a -> s { _eC2SpotFleetInstanceNetworkInterfaceSpecificationSecondaryPrivateIpAddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-subnetid
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetPrivateIpAddressSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html
 
@@ -19,7 +20,7 @@
 -- constructor.
 data EC2SpotFleetPrivateIpAddressSpecification =
   EC2SpotFleetPrivateIpAddressSpecification
-  { _eC2SpotFleetPrivateIpAddressSpecificationPrimary :: Maybe (Val Bool')
+  { _eC2SpotFleetPrivateIpAddressSpecificationPrimary :: Maybe (Val Bool)
   , _eC2SpotFleetPrivateIpAddressSpecificationPrivateIpAddress :: Val Text
   } deriving (Show, Eq)
 
@@ -27,15 +28,15 @@
   toJSON EC2SpotFleetPrivateIpAddressSpecification{..} =
     object $
     catMaybes
-    [ ("Primary" .=) <$> _eC2SpotFleetPrivateIpAddressSpecificationPrimary
-    , Just ("PrivateIpAddress" .= _eC2SpotFleetPrivateIpAddressSpecificationPrivateIpAddress)
+    [ fmap (("Primary",) . toJSON . fmap Bool') _eC2SpotFleetPrivateIpAddressSpecificationPrimary
+    , (Just . ("PrivateIpAddress",) . toJSON) _eC2SpotFleetPrivateIpAddressSpecificationPrivateIpAddress
     ]
 
 instance FromJSON EC2SpotFleetPrivateIpAddressSpecification where
   parseJSON (Object obj) =
     EC2SpotFleetPrivateIpAddressSpecification <$>
-      obj .:? "Primary" <*>
-      obj .: "PrivateIpAddress"
+      fmap (fmap (fmap unBool')) (obj .:? "Primary") <*>
+      (obj .: "PrivateIpAddress")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetPrivateIpAddressSpecification' containing
@@ -50,7 +51,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html#cfn-ec2-spotfleet-privateipaddressspecification-primary
-ecsfpiasPrimary :: Lens' EC2SpotFleetPrivateIpAddressSpecification (Maybe (Val Bool'))
+ecsfpiasPrimary :: Lens' EC2SpotFleetPrivateIpAddressSpecification (Maybe (Val Bool))
 ecsfpiasPrimary = lens _eC2SpotFleetPrivateIpAddressSpecificationPrimary (\s a -> s { _eC2SpotFleetPrivateIpAddressSpecificationPrimary = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html#cfn-ec2-spotfleet-privateipaddressspecification-privateipaddress
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetLaunchSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html
 
@@ -25,7 +26,7 @@
 data EC2SpotFleetSpotFleetLaunchSpecification =
   EC2SpotFleetSpotFleetLaunchSpecification
   { _eC2SpotFleetSpotFleetLaunchSpecificationBlockDeviceMappings :: Maybe [EC2SpotFleetBlockDeviceMapping]
-  , _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized :: Maybe (Val Bool')
+  , _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized :: Maybe (Val Bool)
   , _eC2SpotFleetSpotFleetLaunchSpecificationIamInstanceProfile :: Maybe EC2SpotFleetIamInstanceProfileSpecification
   , _eC2SpotFleetSpotFleetLaunchSpecificationImageId :: Val Text
   , _eC2SpotFleetSpotFleetLaunchSpecificationInstanceType :: Val Text
@@ -39,50 +40,50 @@
   , _eC2SpotFleetSpotFleetLaunchSpecificationSpotPrice :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetLaunchSpecificationSubnetId :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetLaunchSpecificationUserData :: Maybe (Val Text)
-  , _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity :: Maybe (Val Double')
+  , _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity :: Maybe (Val Double)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SpotFleetSpotFleetLaunchSpecification where
   toJSON EC2SpotFleetSpotFleetLaunchSpecification{..} =
     object $
     catMaybes
-    [ ("BlockDeviceMappings" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationBlockDeviceMappings
-    , ("EbsOptimized" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized
-    , ("IamInstanceProfile" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationIamInstanceProfile
-    , Just ("ImageId" .= _eC2SpotFleetSpotFleetLaunchSpecificationImageId)
-    , Just ("InstanceType" .= _eC2SpotFleetSpotFleetLaunchSpecificationInstanceType)
-    , ("KernelId" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationKernelId
-    , ("KeyName" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationKeyName
-    , ("Monitoring" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationMonitoring
-    , ("NetworkInterfaces" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationNetworkInterfaces
-    , ("Placement" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationPlacement
-    , ("RamdiskId" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationRamdiskId
-    , ("SecurityGroups" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationSecurityGroups
-    , ("SpotPrice" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationSpotPrice
-    , ("SubnetId" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationSubnetId
-    , ("UserData" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationUserData
-    , ("WeightedCapacity" .=) <$> _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity
+    [ fmap (("BlockDeviceMappings",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationBlockDeviceMappings
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized
+    , fmap (("IamInstanceProfile",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationIamInstanceProfile
+    , (Just . ("ImageId",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationImageId
+    , (Just . ("InstanceType",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationInstanceType
+    , fmap (("KernelId",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationKernelId
+    , fmap (("KeyName",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationKeyName
+    , fmap (("Monitoring",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationMonitoring
+    , fmap (("NetworkInterfaces",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationNetworkInterfaces
+    , fmap (("Placement",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationPlacement
+    , fmap (("RamdiskId",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationRamdiskId
+    , fmap (("SecurityGroups",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationSecurityGroups
+    , fmap (("SpotPrice",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationSpotPrice
+    , fmap (("SubnetId",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationSubnetId
+    , fmap (("UserData",) . toJSON) _eC2SpotFleetSpotFleetLaunchSpecificationUserData
+    , fmap (("WeightedCapacity",) . toJSON . fmap Double') _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity
     ]
 
 instance FromJSON EC2SpotFleetSpotFleetLaunchSpecification where
   parseJSON (Object obj) =
     EC2SpotFleetSpotFleetLaunchSpecification <$>
-      obj .:? "BlockDeviceMappings" <*>
-      obj .:? "EbsOptimized" <*>
-      obj .:? "IamInstanceProfile" <*>
-      obj .: "ImageId" <*>
-      obj .: "InstanceType" <*>
-      obj .:? "KernelId" <*>
-      obj .:? "KeyName" <*>
-      obj .:? "Monitoring" <*>
-      obj .:? "NetworkInterfaces" <*>
-      obj .:? "Placement" <*>
-      obj .:? "RamdiskId" <*>
-      obj .:? "SecurityGroups" <*>
-      obj .:? "SpotPrice" <*>
-      obj .:? "SubnetId" <*>
-      obj .:? "UserData" <*>
-      obj .:? "WeightedCapacity"
+      (obj .:? "BlockDeviceMappings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized") <*>
+      (obj .:? "IamInstanceProfile") <*>
+      (obj .: "ImageId") <*>
+      (obj .: "InstanceType") <*>
+      (obj .:? "KernelId") <*>
+      (obj .:? "KeyName") <*>
+      (obj .:? "Monitoring") <*>
+      (obj .:? "NetworkInterfaces") <*>
+      (obj .:? "Placement") <*>
+      (obj .:? "RamdiskId") <*>
+      (obj .:? "SecurityGroups") <*>
+      (obj .:? "SpotPrice") <*>
+      (obj .:? "SubnetId") <*>
+      (obj .:? "UserData") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "WeightedCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetSpotFleetLaunchSpecification' containing
@@ -116,7 +117,7 @@
 ecsfsflsBlockDeviceMappings = lens _eC2SpotFleetSpotFleetLaunchSpecificationBlockDeviceMappings (\s a -> s { _eC2SpotFleetSpotFleetLaunchSpecificationBlockDeviceMappings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-ebsoptimized
-ecsfsflsEbsOptimized :: Lens' EC2SpotFleetSpotFleetLaunchSpecification (Maybe (Val Bool'))
+ecsfsflsEbsOptimized :: Lens' EC2SpotFleetSpotFleetLaunchSpecification (Maybe (Val Bool))
 ecsfsflsEbsOptimized = lens _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized (\s a -> s { _eC2SpotFleetSpotFleetLaunchSpecificationEbsOptimized = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-iaminstanceprofile
@@ -172,5 +173,5 @@
 ecsfsflsUserData = lens _eC2SpotFleetSpotFleetLaunchSpecificationUserData (\s a -> s { _eC2SpotFleetSpotFleetLaunchSpecificationUserData = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-weightedcapacity
-ecsfsflsWeightedCapacity :: Lens' EC2SpotFleetSpotFleetLaunchSpecification (Maybe (Val Double'))
+ecsfsflsWeightedCapacity :: Lens' EC2SpotFleetSpotFleetLaunchSpecification (Maybe (Val Double))
 ecsfsflsWeightedCapacity = lens _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity (\s a -> s { _eC2SpotFleetSpotFleetLaunchSpecificationWeightedCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetMonitoring.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-monitoring.html
 
@@ -18,20 +19,20 @@
 -- 'ec2SpotFleetSpotFleetMonitoring' for a more convenient constructor.
 data EC2SpotFleetSpotFleetMonitoring =
   EC2SpotFleetSpotFleetMonitoring
-  { _eC2SpotFleetSpotFleetMonitoringEnabled :: Maybe (Val Bool')
+  { _eC2SpotFleetSpotFleetMonitoringEnabled :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SpotFleetSpotFleetMonitoring where
   toJSON EC2SpotFleetSpotFleetMonitoring{..} =
     object $
     catMaybes
-    [ ("Enabled" .=) <$> _eC2SpotFleetSpotFleetMonitoringEnabled
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetMonitoringEnabled
     ]
 
 instance FromJSON EC2SpotFleetSpotFleetMonitoring where
   parseJSON (Object obj) =
     EC2SpotFleetSpotFleetMonitoring <$>
-      obj .:? "Enabled"
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetSpotFleetMonitoring' containing required
@@ -44,5 +45,5 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-monitoring.html#cfn-ec2-spotfleet-spotfleetmonitoring-enabled
-ecsfsfmEnabled :: Lens' EC2SpotFleetSpotFleetMonitoring (Maybe (Val Bool'))
+ecsfsfmEnabled :: Lens' EC2SpotFleetSpotFleetMonitoring (Maybe (Val Bool))
 ecsfsfmEnabled = lens _eC2SpotFleetSpotFleetMonitoringEnabled (\s a -> s { _eC2SpotFleetSpotFleetMonitoringEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html
 
@@ -24,8 +25,8 @@
   , _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole :: Val Text
   , _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications :: [EC2SpotFleetSpotFleetLaunchSpecification]
   , _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice :: Val Text
-  , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity :: Val Integer'
-  , _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration :: Maybe (Val Bool')
+  , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity :: Val Integer
+  , _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration :: Maybe (Val Bool)
   , _eC2SpotFleetSpotFleetRequestConfigDataValidFrom :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataValidUntil :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -34,29 +35,29 @@
   toJSON EC2SpotFleetSpotFleetRequestConfigData{..} =
     object $
     catMaybes
-    [ ("AllocationStrategy" .=) <$> _eC2SpotFleetSpotFleetRequestConfigDataAllocationStrategy
-    , ("ExcessCapacityTerminationPolicy" .=) <$> _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy
-    , Just ("IamFleetRole" .= _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole)
-    , Just ("LaunchSpecifications" .= _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications)
-    , Just ("SpotPrice" .= _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice)
-    , Just ("TargetCapacity" .= _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity)
-    , ("TerminateInstancesWithExpiration" .=) <$> _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration
-    , ("ValidFrom" .=) <$> _eC2SpotFleetSpotFleetRequestConfigDataValidFrom
-    , ("ValidUntil" .=) <$> _eC2SpotFleetSpotFleetRequestConfigDataValidUntil
+    [ fmap (("AllocationStrategy",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataAllocationStrategy
+    , fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy
+    , (Just . ("IamFleetRole",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole
+    , (Just . ("LaunchSpecifications",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications
+    , (Just . ("SpotPrice",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice
+    , (Just . ("TargetCapacity",) . toJSON . fmap Integer') _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity
+    , fmap (("TerminateInstancesWithExpiration",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration
+    , fmap (("ValidFrom",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataValidFrom
+    , fmap (("ValidUntil",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataValidUntil
     ]
 
 instance FromJSON EC2SpotFleetSpotFleetRequestConfigData where
   parseJSON (Object obj) =
     EC2SpotFleetSpotFleetRequestConfigData <$>
-      obj .:? "AllocationStrategy" <*>
-      obj .:? "ExcessCapacityTerminationPolicy" <*>
-      obj .: "IamFleetRole" <*>
-      obj .: "LaunchSpecifications" <*>
-      obj .: "SpotPrice" <*>
-      obj .: "TargetCapacity" <*>
-      obj .:? "TerminateInstancesWithExpiration" <*>
-      obj .:? "ValidFrom" <*>
-      obj .:? "ValidUntil"
+      (obj .:? "AllocationStrategy") <*>
+      (obj .:? "ExcessCapacityTerminationPolicy") <*>
+      (obj .: "IamFleetRole") <*>
+      (obj .: "LaunchSpecifications") <*>
+      (obj .: "SpotPrice") <*>
+      fmap (fmap unInteger') (obj .: "TargetCapacity") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "TerminateInstancesWithExpiration") <*>
+      (obj .:? "ValidFrom") <*>
+      (obj .:? "ValidUntil")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetSpotFleetRequestConfigData' containing
@@ -65,7 +66,7 @@
   :: Val Text -- ^ 'ecsfsfrcdIamFleetRole'
   -> [EC2SpotFleetSpotFleetLaunchSpecification] -- ^ 'ecsfsfrcdLaunchSpecifications'
   -> Val Text -- ^ 'ecsfsfrcdSpotPrice'
-  -> Val Integer' -- ^ 'ecsfsfrcdTargetCapacity'
+  -> Val Integer -- ^ 'ecsfsfrcdTargetCapacity'
   -> EC2SpotFleetSpotFleetRequestConfigData
 ec2SpotFleetSpotFleetRequestConfigData iamFleetRolearg launchSpecificationsarg spotPricearg targetCapacityarg =
   EC2SpotFleetSpotFleetRequestConfigData
@@ -101,11 +102,11 @@
 ecsfsfrcdSpotPrice = lens _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-targetcapacity
-ecsfsfrcdTargetCapacity :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Val Integer')
+ecsfsfrcdTargetCapacity :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Val Integer)
 ecsfsfrcdTargetCapacity = lens _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-terminateinstanceswithexpiration
-ecsfsfrcdTerminateInstancesWithExpiration :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Bool'))
+ecsfsfrcdTerminateInstancesWithExpiration :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Bool))
 ecsfsfrcdTerminateInstancesWithExpiration = lens _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataTerminateInstancesWithExpiration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-validfrom
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotPlacement.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-placement.html
 
@@ -26,15 +27,15 @@
   toJSON EC2SpotFleetSpotPlacement{..} =
     object $
     catMaybes
-    [ ("AvailabilityZone" .=) <$> _eC2SpotFleetSpotPlacementAvailabilityZone
-    , ("GroupName" .=) <$> _eC2SpotFleetSpotPlacementGroupName
+    [ fmap (("AvailabilityZone",) . toJSON) _eC2SpotFleetSpotPlacementAvailabilityZone
+    , fmap (("GroupName",) . toJSON) _eC2SpotFleetSpotPlacementGroupName
     ]
 
 instance FromJSON EC2SpotFleetSpotPlacement where
   parseJSON (Object obj) =
     EC2SpotFleetSpotPlacement <$>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "GroupName"
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "GroupName")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleetSpotPlacement' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceDeploymentConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html
 
@@ -18,23 +19,23 @@
 -- 'ecsServiceDeploymentConfiguration' for a more convenient constructor.
 data ECSServiceDeploymentConfiguration =
   ECSServiceDeploymentConfiguration
-  { _eCSServiceDeploymentConfigurationMaximumPercent :: Maybe (Val Integer')
-  , _eCSServiceDeploymentConfigurationMinimumHealthyPercent :: Maybe (Val Integer')
+  { _eCSServiceDeploymentConfigurationMaximumPercent :: Maybe (Val Integer)
+  , _eCSServiceDeploymentConfigurationMinimumHealthyPercent :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON ECSServiceDeploymentConfiguration where
   toJSON ECSServiceDeploymentConfiguration{..} =
     object $
     catMaybes
-    [ ("MaximumPercent" .=) <$> _eCSServiceDeploymentConfigurationMaximumPercent
-    , ("MinimumHealthyPercent" .=) <$> _eCSServiceDeploymentConfigurationMinimumHealthyPercent
+    [ fmap (("MaximumPercent",) . toJSON . fmap Integer') _eCSServiceDeploymentConfigurationMaximumPercent
+    , fmap (("MinimumHealthyPercent",) . toJSON . fmap Integer') _eCSServiceDeploymentConfigurationMinimumHealthyPercent
     ]
 
 instance FromJSON ECSServiceDeploymentConfiguration where
   parseJSON (Object obj) =
     ECSServiceDeploymentConfiguration <$>
-      obj .:? "MaximumPercent" <*>
-      obj .:? "MinimumHealthyPercent"
+      fmap (fmap (fmap unInteger')) (obj .:? "MaximumPercent") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinimumHealthyPercent")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSServiceDeploymentConfiguration' containing required
@@ -48,9 +49,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-maximumpercent
-ecssdcMaximumPercent :: Lens' ECSServiceDeploymentConfiguration (Maybe (Val Integer'))
+ecssdcMaximumPercent :: Lens' ECSServiceDeploymentConfiguration (Maybe (Val Integer))
 ecssdcMaximumPercent = lens _eCSServiceDeploymentConfigurationMaximumPercent (\s a -> s { _eCSServiceDeploymentConfigurationMaximumPercent = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-minimumhealthypercent
-ecssdcMinimumHealthyPercent :: Lens' ECSServiceDeploymentConfiguration (Maybe (Val Integer'))
+ecssdcMinimumHealthyPercent :: Lens' ECSServiceDeploymentConfiguration (Maybe (Val Integer))
 ecssdcMinimumHealthyPercent = lens _eCSServiceDeploymentConfigurationMinimumHealthyPercent (\s a -> s { _eCSServiceDeploymentConfigurationMinimumHealthyPercent = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceLoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html
 
@@ -19,7 +20,7 @@
 data ECSServiceLoadBalancer =
   ECSServiceLoadBalancer
   { _eCSServiceLoadBalancerContainerName :: Maybe (Val Text)
-  , _eCSServiceLoadBalancerContainerPort :: Val Integer'
+  , _eCSServiceLoadBalancerContainerPort :: Val Integer
   , _eCSServiceLoadBalancerLoadBalancerName :: Maybe (Val Text)
   , _eCSServiceLoadBalancerTargetGroupArn :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -28,25 +29,25 @@
   toJSON ECSServiceLoadBalancer{..} =
     object $
     catMaybes
-    [ ("ContainerName" .=) <$> _eCSServiceLoadBalancerContainerName
-    , Just ("ContainerPort" .= _eCSServiceLoadBalancerContainerPort)
-    , ("LoadBalancerName" .=) <$> _eCSServiceLoadBalancerLoadBalancerName
-    , ("TargetGroupArn" .=) <$> _eCSServiceLoadBalancerTargetGroupArn
+    [ fmap (("ContainerName",) . toJSON) _eCSServiceLoadBalancerContainerName
+    , (Just . ("ContainerPort",) . toJSON . fmap Integer') _eCSServiceLoadBalancerContainerPort
+    , fmap (("LoadBalancerName",) . toJSON) _eCSServiceLoadBalancerLoadBalancerName
+    , fmap (("TargetGroupArn",) . toJSON) _eCSServiceLoadBalancerTargetGroupArn
     ]
 
 instance FromJSON ECSServiceLoadBalancer where
   parseJSON (Object obj) =
     ECSServiceLoadBalancer <$>
-      obj .:? "ContainerName" <*>
-      obj .: "ContainerPort" <*>
-      obj .:? "LoadBalancerName" <*>
-      obj .:? "TargetGroupArn"
+      (obj .:? "ContainerName") <*>
+      fmap (fmap unInteger') (obj .: "ContainerPort") <*>
+      (obj .:? "LoadBalancerName") <*>
+      (obj .:? "TargetGroupArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSServiceLoadBalancer' containing required fields as
 -- arguments.
 ecsServiceLoadBalancer
-  :: Val Integer' -- ^ 'ecsslbContainerPort'
+  :: Val Integer -- ^ 'ecsslbContainerPort'
   -> ECSServiceLoadBalancer
 ecsServiceLoadBalancer containerPortarg =
   ECSServiceLoadBalancer
@@ -61,7 +62,7 @@
 ecsslbContainerName = lens _eCSServiceLoadBalancerContainerName (\s a -> s { _eCSServiceLoadBalancerContainerName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-containerport
-ecsslbContainerPort :: Lens' ECSServiceLoadBalancer (Val Integer')
+ecsslbContainerPort :: Lens' ECSServiceLoadBalancer (Val Integer)
 ecsslbContainerPort = lens _eCSServiceLoadBalancerContainerPort (\s a -> s { _eCSServiceLoadBalancerContainerPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-loadbalancername
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementconstraint.html
 
@@ -26,15 +27,15 @@
   toJSON ECSServicePlacementConstraint{..} =
     object $
     catMaybes
-    [ ("Expression" .=) <$> _eCSServicePlacementConstraintExpression
-    , Just ("Type" .= _eCSServicePlacementConstraintType)
+    [ fmap (("Expression",) . toJSON) _eCSServicePlacementConstraintExpression
+    , (Just . ("Type",) . toJSON) _eCSServicePlacementConstraintType
     ]
 
 instance FromJSON ECSServicePlacementConstraint where
   parseJSON (Object obj) =
     ECSServicePlacementConstraint <$>
-      obj .:? "Expression" <*>
-      obj .: "Type"
+      (obj .:? "Expression") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSServicePlacementConstraint' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServicePlacementStrategy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html
 
@@ -26,15 +27,15 @@
   toJSON ECSServicePlacementStrategy{..} =
     object $
     catMaybes
-    [ ("Field" .=) <$> _eCSServicePlacementStrategyField
-    , Just ("Type" .= _eCSServicePlacementStrategyType)
+    [ fmap (("Field",) . toJSON) _eCSServicePlacementStrategyField
+    , (Just . ("Type",) . toJSON) _eCSServicePlacementStrategyType
     ]
 
 instance FromJSON ECSServicePlacementStrategy where
   parseJSON (Object obj) =
     ECSServicePlacementStrategy <$>
-      obj .:? "Field" <*>
-      obj .: "Type"
+      (obj .:? "Field") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSServicePlacementStrategy' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html
 
@@ -24,28 +25,28 @@
 -- 'ecsTaskDefinitionContainerDefinition' for a more convenient constructor.
 data ECSTaskDefinitionContainerDefinition =
   ECSTaskDefinitionContainerDefinition
-  { _eCSTaskDefinitionContainerDefinitionCommand :: Maybe [Val Text]
-  , _eCSTaskDefinitionContainerDefinitionCpu :: Maybe (Val Integer')
-  , _eCSTaskDefinitionContainerDefinitionDisableNetworking :: Maybe (Val Bool')
-  , _eCSTaskDefinitionContainerDefinitionDnsSearchDomains :: Maybe [Val Text]
-  , _eCSTaskDefinitionContainerDefinitionDnsServers :: Maybe [Val Text]
+  { _eCSTaskDefinitionContainerDefinitionCommand :: Maybe (ValList Text)
+  , _eCSTaskDefinitionContainerDefinitionCpu :: Maybe (Val Integer)
+  , _eCSTaskDefinitionContainerDefinitionDisableNetworking :: Maybe (Val Bool)
+  , _eCSTaskDefinitionContainerDefinitionDnsSearchDomains :: Maybe (ValList Text)
+  , _eCSTaskDefinitionContainerDefinitionDnsServers :: Maybe (ValList Text)
   , _eCSTaskDefinitionContainerDefinitionDockerLabels :: Maybe Object
-  , _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions :: Maybe [Val Text]
-  , _eCSTaskDefinitionContainerDefinitionEntryPoint :: Maybe [Val Text]
+  , _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions :: Maybe (ValList Text)
+  , _eCSTaskDefinitionContainerDefinitionEntryPoint :: Maybe (ValList Text)
   , _eCSTaskDefinitionContainerDefinitionEnvironment :: Maybe [ECSTaskDefinitionKeyValuePair]
-  , _eCSTaskDefinitionContainerDefinitionEssential :: Maybe (Val Bool')
+  , _eCSTaskDefinitionContainerDefinitionEssential :: Maybe (Val Bool)
   , _eCSTaskDefinitionContainerDefinitionExtraHosts :: Maybe [ECSTaskDefinitionHostEntry]
   , _eCSTaskDefinitionContainerDefinitionHostname :: Maybe (Val Text)
   , _eCSTaskDefinitionContainerDefinitionImage :: Val Text
-  , _eCSTaskDefinitionContainerDefinitionLinks :: Maybe [Val Text]
+  , _eCSTaskDefinitionContainerDefinitionLinks :: Maybe (ValList Text)
   , _eCSTaskDefinitionContainerDefinitionLogConfiguration :: Maybe ECSTaskDefinitionLogConfiguration
-  , _eCSTaskDefinitionContainerDefinitionMemory :: Maybe (Val Integer')
-  , _eCSTaskDefinitionContainerDefinitionMemoryReservation :: Maybe (Val Integer')
+  , _eCSTaskDefinitionContainerDefinitionMemory :: Maybe (Val Integer)
+  , _eCSTaskDefinitionContainerDefinitionMemoryReservation :: Maybe (Val Integer)
   , _eCSTaskDefinitionContainerDefinitionMountPoints :: Maybe [ECSTaskDefinitionMountPoint]
   , _eCSTaskDefinitionContainerDefinitionName :: Val Text
   , _eCSTaskDefinitionContainerDefinitionPortMappings :: Maybe [ECSTaskDefinitionPortMapping]
-  , _eCSTaskDefinitionContainerDefinitionPrivileged :: Maybe (Val Bool')
-  , _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem :: Maybe (Val Bool')
+  , _eCSTaskDefinitionContainerDefinitionPrivileged :: Maybe (Val Bool)
+  , _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem :: Maybe (Val Bool)
   , _eCSTaskDefinitionContainerDefinitionUlimits :: Maybe [ECSTaskDefinitionUlimit]
   , _eCSTaskDefinitionContainerDefinitionUser :: Maybe (Val Text)
   , _eCSTaskDefinitionContainerDefinitionVolumesFrom :: Maybe [ECSTaskDefinitionVolumeFrom]
@@ -56,63 +57,63 @@
   toJSON ECSTaskDefinitionContainerDefinition{..} =
     object $
     catMaybes
-    [ ("Command" .=) <$> _eCSTaskDefinitionContainerDefinitionCommand
-    , ("Cpu" .=) <$> _eCSTaskDefinitionContainerDefinitionCpu
-    , ("DisableNetworking" .=) <$> _eCSTaskDefinitionContainerDefinitionDisableNetworking
-    , ("DnsSearchDomains" .=) <$> _eCSTaskDefinitionContainerDefinitionDnsSearchDomains
-    , ("DnsServers" .=) <$> _eCSTaskDefinitionContainerDefinitionDnsServers
-    , ("DockerLabels" .=) <$> _eCSTaskDefinitionContainerDefinitionDockerLabels
-    , ("DockerSecurityOptions" .=) <$> _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions
-    , ("EntryPoint" .=) <$> _eCSTaskDefinitionContainerDefinitionEntryPoint
-    , ("Environment" .=) <$> _eCSTaskDefinitionContainerDefinitionEnvironment
-    , ("Essential" .=) <$> _eCSTaskDefinitionContainerDefinitionEssential
-    , ("ExtraHosts" .=) <$> _eCSTaskDefinitionContainerDefinitionExtraHosts
-    , ("Hostname" .=) <$> _eCSTaskDefinitionContainerDefinitionHostname
-    , Just ("Image" .= _eCSTaskDefinitionContainerDefinitionImage)
-    , ("Links" .=) <$> _eCSTaskDefinitionContainerDefinitionLinks
-    , ("LogConfiguration" .=) <$> _eCSTaskDefinitionContainerDefinitionLogConfiguration
-    , ("Memory" .=) <$> _eCSTaskDefinitionContainerDefinitionMemory
-    , ("MemoryReservation" .=) <$> _eCSTaskDefinitionContainerDefinitionMemoryReservation
-    , ("MountPoints" .=) <$> _eCSTaskDefinitionContainerDefinitionMountPoints
-    , Just ("Name" .= _eCSTaskDefinitionContainerDefinitionName)
-    , ("PortMappings" .=) <$> _eCSTaskDefinitionContainerDefinitionPortMappings
-    , ("Privileged" .=) <$> _eCSTaskDefinitionContainerDefinitionPrivileged
-    , ("ReadonlyRootFilesystem" .=) <$> _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem
-    , ("Ulimits" .=) <$> _eCSTaskDefinitionContainerDefinitionUlimits
-    , ("User" .=) <$> _eCSTaskDefinitionContainerDefinitionUser
-    , ("VolumesFrom" .=) <$> _eCSTaskDefinitionContainerDefinitionVolumesFrom
-    , ("WorkingDirectory" .=) <$> _eCSTaskDefinitionContainerDefinitionWorkingDirectory
+    [ fmap (("Command",) . toJSON) _eCSTaskDefinitionContainerDefinitionCommand
+    , fmap (("Cpu",) . toJSON . fmap Integer') _eCSTaskDefinitionContainerDefinitionCpu
+    , fmap (("DisableNetworking",) . toJSON . fmap Bool') _eCSTaskDefinitionContainerDefinitionDisableNetworking
+    , fmap (("DnsSearchDomains",) . toJSON) _eCSTaskDefinitionContainerDefinitionDnsSearchDomains
+    , fmap (("DnsServers",) . toJSON) _eCSTaskDefinitionContainerDefinitionDnsServers
+    , fmap (("DockerLabels",) . toJSON) _eCSTaskDefinitionContainerDefinitionDockerLabels
+    , fmap (("DockerSecurityOptions",) . toJSON) _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions
+    , fmap (("EntryPoint",) . toJSON) _eCSTaskDefinitionContainerDefinitionEntryPoint
+    , fmap (("Environment",) . toJSON) _eCSTaskDefinitionContainerDefinitionEnvironment
+    , fmap (("Essential",) . toJSON . fmap Bool') _eCSTaskDefinitionContainerDefinitionEssential
+    , fmap (("ExtraHosts",) . toJSON) _eCSTaskDefinitionContainerDefinitionExtraHosts
+    , fmap (("Hostname",) . toJSON) _eCSTaskDefinitionContainerDefinitionHostname
+    , (Just . ("Image",) . toJSON) _eCSTaskDefinitionContainerDefinitionImage
+    , fmap (("Links",) . toJSON) _eCSTaskDefinitionContainerDefinitionLinks
+    , fmap (("LogConfiguration",) . toJSON) _eCSTaskDefinitionContainerDefinitionLogConfiguration
+    , fmap (("Memory",) . toJSON . fmap Integer') _eCSTaskDefinitionContainerDefinitionMemory
+    , fmap (("MemoryReservation",) . toJSON . fmap Integer') _eCSTaskDefinitionContainerDefinitionMemoryReservation
+    , fmap (("MountPoints",) . toJSON) _eCSTaskDefinitionContainerDefinitionMountPoints
+    , (Just . ("Name",) . toJSON) _eCSTaskDefinitionContainerDefinitionName
+    , fmap (("PortMappings",) . toJSON) _eCSTaskDefinitionContainerDefinitionPortMappings
+    , fmap (("Privileged",) . toJSON . fmap Bool') _eCSTaskDefinitionContainerDefinitionPrivileged
+    , fmap (("ReadonlyRootFilesystem",) . toJSON . fmap Bool') _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem
+    , fmap (("Ulimits",) . toJSON) _eCSTaskDefinitionContainerDefinitionUlimits
+    , fmap (("User",) . toJSON) _eCSTaskDefinitionContainerDefinitionUser
+    , fmap (("VolumesFrom",) . toJSON) _eCSTaskDefinitionContainerDefinitionVolumesFrom
+    , fmap (("WorkingDirectory",) . toJSON) _eCSTaskDefinitionContainerDefinitionWorkingDirectory
     ]
 
 instance FromJSON ECSTaskDefinitionContainerDefinition where
   parseJSON (Object obj) =
     ECSTaskDefinitionContainerDefinition <$>
-      obj .:? "Command" <*>
-      obj .:? "Cpu" <*>
-      obj .:? "DisableNetworking" <*>
-      obj .:? "DnsSearchDomains" <*>
-      obj .:? "DnsServers" <*>
-      obj .:? "DockerLabels" <*>
-      obj .:? "DockerSecurityOptions" <*>
-      obj .:? "EntryPoint" <*>
-      obj .:? "Environment" <*>
-      obj .:? "Essential" <*>
-      obj .:? "ExtraHosts" <*>
-      obj .:? "Hostname" <*>
-      obj .: "Image" <*>
-      obj .:? "Links" <*>
-      obj .:? "LogConfiguration" <*>
-      obj .:? "Memory" <*>
-      obj .:? "MemoryReservation" <*>
-      obj .:? "MountPoints" <*>
-      obj .: "Name" <*>
-      obj .:? "PortMappings" <*>
-      obj .:? "Privileged" <*>
-      obj .:? "ReadonlyRootFilesystem" <*>
-      obj .:? "Ulimits" <*>
-      obj .:? "User" <*>
-      obj .:? "VolumesFrom" <*>
-      obj .:? "WorkingDirectory"
+      (obj .:? "Command") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Cpu") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableNetworking") <*>
+      (obj .:? "DnsSearchDomains") <*>
+      (obj .:? "DnsServers") <*>
+      (obj .:? "DockerLabels") <*>
+      (obj .:? "DockerSecurityOptions") <*>
+      (obj .:? "EntryPoint") <*>
+      (obj .:? "Environment") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Essential") <*>
+      (obj .:? "ExtraHosts") <*>
+      (obj .:? "Hostname") <*>
+      (obj .: "Image") <*>
+      (obj .:? "Links") <*>
+      (obj .:? "LogConfiguration") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Memory") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MemoryReservation") <*>
+      (obj .:? "MountPoints") <*>
+      (obj .: "Name") <*>
+      (obj .:? "PortMappings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Privileged") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ReadonlyRootFilesystem") <*>
+      (obj .:? "Ulimits") <*>
+      (obj .:? "User") <*>
+      (obj .:? "VolumesFrom") <*>
+      (obj .:? "WorkingDirectory")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionContainerDefinition' containing
@@ -152,23 +153,23 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-command
-ecstdcdCommand :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdCommand :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdCommand = lens _eCSTaskDefinitionContainerDefinitionCommand (\s a -> s { _eCSTaskDefinitionContainerDefinitionCommand = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-cpu
-ecstdcdCpu :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer'))
+ecstdcdCpu :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer))
 ecstdcdCpu = lens _eCSTaskDefinitionContainerDefinitionCpu (\s a -> s { _eCSTaskDefinitionContainerDefinitionCpu = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-disablenetworking
-ecstdcdDisableNetworking :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool'))
+ecstdcdDisableNetworking :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool))
 ecstdcdDisableNetworking = lens _eCSTaskDefinitionContainerDefinitionDisableNetworking (\s a -> s { _eCSTaskDefinitionContainerDefinitionDisableNetworking = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dnssearchdomains
-ecstdcdDnsSearchDomains :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdDnsSearchDomains :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdDnsSearchDomains = lens _eCSTaskDefinitionContainerDefinitionDnsSearchDomains (\s a -> s { _eCSTaskDefinitionContainerDefinitionDnsSearchDomains = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dnsservers
-ecstdcdDnsServers :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdDnsServers :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdDnsServers = lens _eCSTaskDefinitionContainerDefinitionDnsServers (\s a -> s { _eCSTaskDefinitionContainerDefinitionDnsServers = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dockerlabels
@@ -176,11 +177,11 @@
 ecstdcdDockerLabels = lens _eCSTaskDefinitionContainerDefinitionDockerLabels (\s a -> s { _eCSTaskDefinitionContainerDefinitionDockerLabels = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dockersecurityoptions
-ecstdcdDockerSecurityOptions :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdDockerSecurityOptions :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdDockerSecurityOptions = lens _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions (\s a -> s { _eCSTaskDefinitionContainerDefinitionDockerSecurityOptions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-entrypoint
-ecstdcdEntryPoint :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdEntryPoint :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdEntryPoint = lens _eCSTaskDefinitionContainerDefinitionEntryPoint (\s a -> s { _eCSTaskDefinitionContainerDefinitionEntryPoint = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment
@@ -188,7 +189,7 @@
 ecstdcdEnvironment = lens _eCSTaskDefinitionContainerDefinitionEnvironment (\s a -> s { _eCSTaskDefinitionContainerDefinitionEnvironment = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-essential
-ecstdcdEssential :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool'))
+ecstdcdEssential :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool))
 ecstdcdEssential = lens _eCSTaskDefinitionContainerDefinitionEssential (\s a -> s { _eCSTaskDefinitionContainerDefinitionEssential = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-extrahosts
@@ -204,7 +205,7 @@
 ecstdcdImage = lens _eCSTaskDefinitionContainerDefinitionImage (\s a -> s { _eCSTaskDefinitionContainerDefinitionImage = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-links
-ecstdcdLinks :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [Val Text])
+ecstdcdLinks :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (ValList Text))
 ecstdcdLinks = lens _eCSTaskDefinitionContainerDefinitionLinks (\s a -> s { _eCSTaskDefinitionContainerDefinitionLinks = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-logconfiguration
@@ -212,11 +213,11 @@
 ecstdcdLogConfiguration = lens _eCSTaskDefinitionContainerDefinitionLogConfiguration (\s a -> s { _eCSTaskDefinitionContainerDefinitionLogConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-memory
-ecstdcdMemory :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer'))
+ecstdcdMemory :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer))
 ecstdcdMemory = lens _eCSTaskDefinitionContainerDefinitionMemory (\s a -> s { _eCSTaskDefinitionContainerDefinitionMemory = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-memoryreservation
-ecstdcdMemoryReservation :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer'))
+ecstdcdMemoryReservation :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer))
 ecstdcdMemoryReservation = lens _eCSTaskDefinitionContainerDefinitionMemoryReservation (\s a -> s { _eCSTaskDefinitionContainerDefinitionMemoryReservation = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints
@@ -232,11 +233,11 @@
 ecstdcdPortMappings = lens _eCSTaskDefinitionContainerDefinitionPortMappings (\s a -> s { _eCSTaskDefinitionContainerDefinitionPortMappings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-privileged
-ecstdcdPrivileged :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool'))
+ecstdcdPrivileged :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool))
 ecstdcdPrivileged = lens _eCSTaskDefinitionContainerDefinitionPrivileged (\s a -> s { _eCSTaskDefinitionContainerDefinitionPrivileged = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-readonlyrootfilesystem
-ecstdcdReadonlyRootFilesystem :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool'))
+ecstdcdReadonlyRootFilesystem :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Bool))
 ecstdcdReadonlyRootFilesystem = lens _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem (\s a -> s { _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-ulimits
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html
 
@@ -26,15 +27,15 @@
   toJSON ECSTaskDefinitionHostEntry{..} =
     object $
     catMaybes
-    [ Just ("Hostname" .= _eCSTaskDefinitionHostEntryHostname)
-    , Just ("IpAddress" .= _eCSTaskDefinitionHostEntryIpAddress)
+    [ (Just . ("Hostname",) . toJSON) _eCSTaskDefinitionHostEntryHostname
+    , (Just . ("IpAddress",) . toJSON) _eCSTaskDefinitionHostEntryIpAddress
     ]
 
 instance FromJSON ECSTaskDefinitionHostEntry where
   parseJSON (Object obj) =
     ECSTaskDefinitionHostEntry <$>
-      obj .: "Hostname" <*>
-      obj .: "IpAddress"
+      (obj .: "Hostname") <*>
+      (obj .: "IpAddress")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionHostEntry' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHostVolumeProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes-host.html
 
@@ -26,13 +27,13 @@
   toJSON ECSTaskDefinitionHostVolumeProperties{..} =
     object $
     catMaybes
-    [ ("SourcePath" .=) <$> _eCSTaskDefinitionHostVolumePropertiesSourcePath
+    [ fmap (("SourcePath",) . toJSON) _eCSTaskDefinitionHostVolumePropertiesSourcePath
     ]
 
 instance FromJSON ECSTaskDefinitionHostVolumeProperties where
   parseJSON (Object obj) =
     ECSTaskDefinitionHostVolumeProperties <$>
-      obj .:? "SourcePath"
+      (obj .:? "SourcePath")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionHostVolumeProperties' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionKeyValuePair.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html
 
@@ -26,15 +27,15 @@
   toJSON ECSTaskDefinitionKeyValuePair{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _eCSTaskDefinitionKeyValuePairName
-    , ("Value" .=) <$> _eCSTaskDefinitionKeyValuePairValue
+    [ fmap (("Name",) . toJSON) _eCSTaskDefinitionKeyValuePairName
+    , fmap (("Value",) . toJSON) _eCSTaskDefinitionKeyValuePairValue
     ]
 
 instance FromJSON ECSTaskDefinitionKeyValuePair where
   parseJSON (Object obj) =
     ECSTaskDefinitionKeyValuePair <$>
-      obj .:? "Name" <*>
-      obj .:? "Value"
+      (obj .:? "Name") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionKeyValuePair' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionLogConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-logconfiguration.html
 
@@ -26,15 +27,15 @@
   toJSON ECSTaskDefinitionLogConfiguration{..} =
     object $
     catMaybes
-    [ Just ("LogDriver" .= _eCSTaskDefinitionLogConfigurationLogDriver)
-    , ("Options" .=) <$> _eCSTaskDefinitionLogConfigurationOptions
+    [ (Just . ("LogDriver",) . toJSON) _eCSTaskDefinitionLogConfigurationLogDriver
+    , fmap (("Options",) . toJSON) _eCSTaskDefinitionLogConfigurationOptions
     ]
 
 instance FromJSON ECSTaskDefinitionLogConfiguration where
   parseJSON (Object obj) =
     ECSTaskDefinitionLogConfiguration <$>
-      obj .: "LogDriver" <*>
-      obj .:? "Options"
+      (obj .: "LogDriver") <*>
+      (obj .:? "Options")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionLogConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionMountPoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html
 
@@ -19,7 +20,7 @@
 data ECSTaskDefinitionMountPoint =
   ECSTaskDefinitionMountPoint
   { _eCSTaskDefinitionMountPointContainerPath :: Maybe (Val Text)
-  , _eCSTaskDefinitionMountPointReadOnly :: Maybe (Val Bool')
+  , _eCSTaskDefinitionMountPointReadOnly :: Maybe (Val Bool)
   , _eCSTaskDefinitionMountPointSourceVolume :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON ECSTaskDefinitionMountPoint{..} =
     object $
     catMaybes
-    [ ("ContainerPath" .=) <$> _eCSTaskDefinitionMountPointContainerPath
-    , ("ReadOnly" .=) <$> _eCSTaskDefinitionMountPointReadOnly
-    , ("SourceVolume" .=) <$> _eCSTaskDefinitionMountPointSourceVolume
+    [ fmap (("ContainerPath",) . toJSON) _eCSTaskDefinitionMountPointContainerPath
+    , fmap (("ReadOnly",) . toJSON . fmap Bool') _eCSTaskDefinitionMountPointReadOnly
+    , fmap (("SourceVolume",) . toJSON) _eCSTaskDefinitionMountPointSourceVolume
     ]
 
 instance FromJSON ECSTaskDefinitionMountPoint where
   parseJSON (Object obj) =
     ECSTaskDefinitionMountPoint <$>
-      obj .:? "ContainerPath" <*>
-      obj .:? "ReadOnly" <*>
-      obj .:? "SourceVolume"
+      (obj .:? "ContainerPath") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ReadOnly") <*>
+      (obj .:? "SourceVolume")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionMountPoint' containing required fields
@@ -56,7 +57,7 @@
 ecstdmpContainerPath = lens _eCSTaskDefinitionMountPointContainerPath (\s a -> s { _eCSTaskDefinitionMountPointContainerPath = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints-readonly
-ecstdmpReadOnly :: Lens' ECSTaskDefinitionMountPoint (Maybe (Val Bool'))
+ecstdmpReadOnly :: Lens' ECSTaskDefinitionMountPoint (Maybe (Val Bool))
 ecstdmpReadOnly = lens _eCSTaskDefinitionMountPointReadOnly (\s a -> s { _eCSTaskDefinitionMountPointReadOnly = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints-sourcevolume
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionPortMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html
 
@@ -18,8 +19,8 @@
 -- 'ecsTaskDefinitionPortMapping' for a more convenient constructor.
 data ECSTaskDefinitionPortMapping =
   ECSTaskDefinitionPortMapping
-  { _eCSTaskDefinitionPortMappingContainerPort :: Maybe (Val Integer')
-  , _eCSTaskDefinitionPortMappingHostPort :: Maybe (Val Integer')
+  { _eCSTaskDefinitionPortMappingContainerPort :: Maybe (Val Integer)
+  , _eCSTaskDefinitionPortMappingHostPort :: Maybe (Val Integer)
   , _eCSTaskDefinitionPortMappingProtocol :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON ECSTaskDefinitionPortMapping{..} =
     object $
     catMaybes
-    [ ("ContainerPort" .=) <$> _eCSTaskDefinitionPortMappingContainerPort
-    , ("HostPort" .=) <$> _eCSTaskDefinitionPortMappingHostPort
-    , ("Protocol" .=) <$> _eCSTaskDefinitionPortMappingProtocol
+    [ fmap (("ContainerPort",) . toJSON . fmap Integer') _eCSTaskDefinitionPortMappingContainerPort
+    , fmap (("HostPort",) . toJSON . fmap Integer') _eCSTaskDefinitionPortMappingHostPort
+    , fmap (("Protocol",) . toJSON) _eCSTaskDefinitionPortMappingProtocol
     ]
 
 instance FromJSON ECSTaskDefinitionPortMapping where
   parseJSON (Object obj) =
     ECSTaskDefinitionPortMapping <$>
-      obj .:? "ContainerPort" <*>
-      obj .:? "HostPort" <*>
-      obj .:? "Protocol"
+      fmap (fmap (fmap unInteger')) (obj .:? "ContainerPort") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HostPort") <*>
+      (obj .:? "Protocol")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionPortMapping' containing required fields
@@ -52,11 +53,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-containerport
-ecstdpmContainerPort :: Lens' ECSTaskDefinitionPortMapping (Maybe (Val Integer'))
+ecstdpmContainerPort :: Lens' ECSTaskDefinitionPortMapping (Maybe (Val Integer))
 ecstdpmContainerPort = lens _eCSTaskDefinitionPortMappingContainerPort (\s a -> s { _eCSTaskDefinitionPortMappingContainerPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-readonly
-ecstdpmHostPort :: Lens' ECSTaskDefinitionPortMapping (Maybe (Val Integer'))
+ecstdpmHostPort :: Lens' ECSTaskDefinitionPortMapping (Maybe (Val Integer))
 ecstdpmHostPort = lens _eCSTaskDefinitionPortMappingHostPort (\s a -> s { _eCSTaskDefinitionPortMappingHostPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-sourcevolume
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionTaskDefinitionPlacementConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html
 
@@ -28,15 +29,15 @@
   toJSON ECSTaskDefinitionTaskDefinitionPlacementConstraint{..} =
     object $
     catMaybes
-    [ ("Expression" .=) <$> _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression
-    , Just ("Type" .= _eCSTaskDefinitionTaskDefinitionPlacementConstraintType)
+    [ fmap (("Expression",) . toJSON) _eCSTaskDefinitionTaskDefinitionPlacementConstraintExpression
+    , (Just . ("Type",) . toJSON) _eCSTaskDefinitionTaskDefinitionPlacementConstraintType
     ]
 
 instance FromJSON ECSTaskDefinitionTaskDefinitionPlacementConstraint where
   parseJSON (Object obj) =
     ECSTaskDefinitionTaskDefinitionPlacementConstraint <$>
-      obj .:? "Expression" <*>
-      obj .: "Type"
+      (obj .:? "Expression") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionTaskDefinitionPlacementConstraint'
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionUlimit.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html
 
@@ -18,34 +19,34 @@
 -- 'ecsTaskDefinitionUlimit' for a more convenient constructor.
 data ECSTaskDefinitionUlimit =
   ECSTaskDefinitionUlimit
-  { _eCSTaskDefinitionUlimitHardLimit :: Val Integer'
+  { _eCSTaskDefinitionUlimitHardLimit :: Val Integer
   , _eCSTaskDefinitionUlimitName :: Val Text
-  , _eCSTaskDefinitionUlimitSoftLimit :: Val Integer'
+  , _eCSTaskDefinitionUlimitSoftLimit :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON ECSTaskDefinitionUlimit where
   toJSON ECSTaskDefinitionUlimit{..} =
     object $
     catMaybes
-    [ Just ("HardLimit" .= _eCSTaskDefinitionUlimitHardLimit)
-    , Just ("Name" .= _eCSTaskDefinitionUlimitName)
-    , Just ("SoftLimit" .= _eCSTaskDefinitionUlimitSoftLimit)
+    [ (Just . ("HardLimit",) . toJSON . fmap Integer') _eCSTaskDefinitionUlimitHardLimit
+    , (Just . ("Name",) . toJSON) _eCSTaskDefinitionUlimitName
+    , (Just . ("SoftLimit",) . toJSON . fmap Integer') _eCSTaskDefinitionUlimitSoftLimit
     ]
 
 instance FromJSON ECSTaskDefinitionUlimit where
   parseJSON (Object obj) =
     ECSTaskDefinitionUlimit <$>
-      obj .: "HardLimit" <*>
-      obj .: "Name" <*>
-      obj .: "SoftLimit"
+      fmap (fmap unInteger') (obj .: "HardLimit") <*>
+      (obj .: "Name") <*>
+      fmap (fmap unInteger') (obj .: "SoftLimit")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionUlimit' containing required fields as
 -- arguments.
 ecsTaskDefinitionUlimit
-  :: Val Integer' -- ^ 'ecstduHardLimit'
+  :: Val Integer -- ^ 'ecstduHardLimit'
   -> Val Text -- ^ 'ecstduName'
-  -> Val Integer' -- ^ 'ecstduSoftLimit'
+  -> Val Integer -- ^ 'ecstduSoftLimit'
   -> ECSTaskDefinitionUlimit
 ecsTaskDefinitionUlimit hardLimitarg namearg softLimitarg =
   ECSTaskDefinitionUlimit
@@ -55,7 +56,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-hardlimit
-ecstduHardLimit :: Lens' ECSTaskDefinitionUlimit (Val Integer')
+ecstduHardLimit :: Lens' ECSTaskDefinitionUlimit (Val Integer)
 ecstduHardLimit = lens _eCSTaskDefinitionUlimitHardLimit (\s a -> s { _eCSTaskDefinitionUlimitHardLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-name
@@ -63,5 +64,5 @@
 ecstduName = lens _eCSTaskDefinitionUlimitName (\s a -> s { _eCSTaskDefinitionUlimitName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-softlimit
-ecstduSoftLimit :: Lens' ECSTaskDefinitionUlimit (Val Integer')
+ecstduSoftLimit :: Lens' ECSTaskDefinitionUlimit (Val Integer)
 ecstduSoftLimit = lens _eCSTaskDefinitionUlimitSoftLimit (\s a -> s { _eCSTaskDefinitionUlimitSoftLimit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html
 
@@ -26,15 +27,15 @@
   toJSON ECSTaskDefinitionVolume{..} =
     object $
     catMaybes
-    [ ("Host" .=) <$> _eCSTaskDefinitionVolumeHost
-    , ("Name" .=) <$> _eCSTaskDefinitionVolumeName
+    [ fmap (("Host",) . toJSON) _eCSTaskDefinitionVolumeHost
+    , fmap (("Name",) . toJSON) _eCSTaskDefinitionVolumeName
     ]
 
 instance FromJSON ECSTaskDefinitionVolume where
   parseJSON (Object obj) =
     ECSTaskDefinitionVolume <$>
-      obj .:? "Host" <*>
-      obj .:? "Name"
+      (obj .:? "Host") <*>
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionVolume' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionVolumeFrom.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html
 
@@ -18,7 +19,7 @@
 -- 'ecsTaskDefinitionVolumeFrom' for a more convenient constructor.
 data ECSTaskDefinitionVolumeFrom =
   ECSTaskDefinitionVolumeFrom
-  { _eCSTaskDefinitionVolumeFromReadOnly :: Maybe (Val Bool')
+  { _eCSTaskDefinitionVolumeFromReadOnly :: Maybe (Val Bool)
   , _eCSTaskDefinitionVolumeFromSourceContainer :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -26,15 +27,15 @@
   toJSON ECSTaskDefinitionVolumeFrom{..} =
     object $
     catMaybes
-    [ ("ReadOnly" .=) <$> _eCSTaskDefinitionVolumeFromReadOnly
-    , ("SourceContainer" .=) <$> _eCSTaskDefinitionVolumeFromSourceContainer
+    [ fmap (("ReadOnly",) . toJSON . fmap Bool') _eCSTaskDefinitionVolumeFromReadOnly
+    , fmap (("SourceContainer",) . toJSON) _eCSTaskDefinitionVolumeFromSourceContainer
     ]
 
 instance FromJSON ECSTaskDefinitionVolumeFrom where
   parseJSON (Object obj) =
     ECSTaskDefinitionVolumeFrom <$>
-      obj .:? "ReadOnly" <*>
-      obj .:? "SourceContainer"
+      fmap (fmap (fmap unBool')) (obj .:? "ReadOnly") <*>
+      (obj .:? "SourceContainer")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinitionVolumeFrom' containing required fields
@@ -48,7 +49,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html#cfn-ecs-taskdefinition-containerdefinition-volumesfrom-readonly
-ecstdvfReadOnly :: Lens' ECSTaskDefinitionVolumeFrom (Maybe (Val Bool'))
+ecstdvfReadOnly :: Lens' ECSTaskDefinitionVolumeFrom (Maybe (Val Bool))
 ecstdvfReadOnly = lens _eCSTaskDefinitionVolumeFromReadOnly (\s a -> s { _eCSTaskDefinitionVolumeFromReadOnly = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html#cfn-ecs-taskdefinition-containerdefinition-volumesfrom-sourcecontainer
diff --git a/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemElasticFileSystemTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-efs-filesystem-filesystemtags.html
 
@@ -26,15 +27,15 @@
   toJSON EFSFileSystemElasticFileSystemTag{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _eFSFileSystemElasticFileSystemTagKey)
-    , Just ("Value" .= _eFSFileSystemElasticFileSystemTagValue)
+    [ (Just . ("Key",) . toJSON) _eFSFileSystemElasticFileSystemTagKey
+    , (Just . ("Value",) . toJSON) _eFSFileSystemElasticFileSystemTagValue
     ]
 
 instance FromJSON EFSFileSystemElasticFileSystemTag where
   parseJSON (Object obj) =
     EFSFileSystemElasticFileSystemTag <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'EFSFileSystemElasticFileSystemTag' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html
 
@@ -19,7 +20,7 @@
 data EMRClusterApplication =
   EMRClusterApplication
   { _eMRClusterApplicationAdditionalInfo :: Maybe Object
-  , _eMRClusterApplicationArgs :: Maybe [Val Text]
+  , _eMRClusterApplicationArgs :: Maybe (ValList Text)
   , _eMRClusterApplicationName :: Maybe (Val Text)
   , _eMRClusterApplicationVersion :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -28,19 +29,19 @@
   toJSON EMRClusterApplication{..} =
     object $
     catMaybes
-    [ ("AdditionalInfo" .=) <$> _eMRClusterApplicationAdditionalInfo
-    , ("Args" .=) <$> _eMRClusterApplicationArgs
-    , ("Name" .=) <$> _eMRClusterApplicationName
-    , ("Version" .=) <$> _eMRClusterApplicationVersion
+    [ fmap (("AdditionalInfo",) . toJSON) _eMRClusterApplicationAdditionalInfo
+    , fmap (("Args",) . toJSON) _eMRClusterApplicationArgs
+    , fmap (("Name",) . toJSON) _eMRClusterApplicationName
+    , fmap (("Version",) . toJSON) _eMRClusterApplicationVersion
     ]
 
 instance FromJSON EMRClusterApplication where
   parseJSON (Object obj) =
     EMRClusterApplication <$>
-      obj .:? "AdditionalInfo" <*>
-      obj .:? "Args" <*>
-      obj .:? "Name" <*>
-      obj .:? "Version"
+      (obj .:? "AdditionalInfo") <*>
+      (obj .:? "Args") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterApplication' containing required fields as
@@ -60,7 +61,7 @@
 emrcaAdditionalInfo = lens _eMRClusterApplicationAdditionalInfo (\s a -> s { _eMRClusterApplicationAdditionalInfo = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-args
-emrcaArgs :: Lens' EMRClusterApplication (Maybe [Val Text])
+emrcaArgs :: Lens' EMRClusterApplication (Maybe (ValList Text))
 emrcaArgs = lens _eMRClusterApplicationArgs (\s a -> s { _eMRClusterApplicationArgs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-name
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterAutoScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html
 
@@ -27,15 +28,15 @@
   toJSON EMRClusterAutoScalingPolicy{..} =
     object $
     catMaybes
-    [ Just ("Constraints" .= _eMRClusterAutoScalingPolicyConstraints)
-    , Just ("Rules" .= _eMRClusterAutoScalingPolicyRules)
+    [ (Just . ("Constraints",) . toJSON) _eMRClusterAutoScalingPolicyConstraints
+    , (Just . ("Rules",) . toJSON) _eMRClusterAutoScalingPolicyRules
     ]
 
 instance FromJSON EMRClusterAutoScalingPolicy where
   parseJSON (Object obj) =
     EMRClusterAutoScalingPolicy <$>
-      obj .: "Constraints" <*>
-      obj .: "Rules"
+      (obj .: "Constraints") <*>
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterAutoScalingPolicy' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html
 
@@ -26,15 +27,15 @@
   toJSON EMRClusterBootstrapActionConfig{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _eMRClusterBootstrapActionConfigName)
-    , Just ("ScriptBootstrapAction" .= _eMRClusterBootstrapActionConfigScriptBootstrapAction)
+    [ (Just . ("Name",) . toJSON) _eMRClusterBootstrapActionConfigName
+    , (Just . ("ScriptBootstrapAction",) . toJSON) _eMRClusterBootstrapActionConfigScriptBootstrapAction
     ]
 
 instance FromJSON EMRClusterBootstrapActionConfig where
   parseJSON (Object obj) =
     EMRClusterBootstrapActionConfig <$>
-      obj .: "Name" <*>
-      obj .: "ScriptBootstrapAction"
+      (obj .: "Name") <*>
+      (obj .: "ScriptBootstrapAction")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterBootstrapActionConfig' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html
 
@@ -20,12 +21,12 @@
   EMRClusterCloudWatchAlarmDefinition
   { _eMRClusterCloudWatchAlarmDefinitionComparisonOperator :: Val Text
   , _eMRClusterCloudWatchAlarmDefinitionDimensions :: Maybe [EMRClusterMetricDimension]
-  , _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods :: Maybe (Val Integer')
+  , _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods :: Maybe (Val Integer)
   , _eMRClusterCloudWatchAlarmDefinitionMetricName :: Val Text
   , _eMRClusterCloudWatchAlarmDefinitionNamespace :: Maybe (Val Text)
-  , _eMRClusterCloudWatchAlarmDefinitionPeriod :: Val Integer'
+  , _eMRClusterCloudWatchAlarmDefinitionPeriod :: Val Integer
   , _eMRClusterCloudWatchAlarmDefinitionStatistic :: Maybe (Val Text)
-  , _eMRClusterCloudWatchAlarmDefinitionThreshold :: Val Double'
+  , _eMRClusterCloudWatchAlarmDefinitionThreshold :: Val Double
   , _eMRClusterCloudWatchAlarmDefinitionUnit :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -33,29 +34,29 @@
   toJSON EMRClusterCloudWatchAlarmDefinition{..} =
     object $
     catMaybes
-    [ Just ("ComparisonOperator" .= _eMRClusterCloudWatchAlarmDefinitionComparisonOperator)
-    , ("Dimensions" .=) <$> _eMRClusterCloudWatchAlarmDefinitionDimensions
-    , ("EvaluationPeriods" .=) <$> _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods
-    , Just ("MetricName" .= _eMRClusterCloudWatchAlarmDefinitionMetricName)
-    , ("Namespace" .=) <$> _eMRClusterCloudWatchAlarmDefinitionNamespace
-    , Just ("Period" .= _eMRClusterCloudWatchAlarmDefinitionPeriod)
-    , ("Statistic" .=) <$> _eMRClusterCloudWatchAlarmDefinitionStatistic
-    , Just ("Threshold" .= _eMRClusterCloudWatchAlarmDefinitionThreshold)
-    , ("Unit" .=) <$> _eMRClusterCloudWatchAlarmDefinitionUnit
+    [ (Just . ("ComparisonOperator",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionComparisonOperator
+    , fmap (("Dimensions",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionDimensions
+    , fmap (("EvaluationPeriods",) . toJSON . fmap Integer') _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods
+    , (Just . ("MetricName",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionMetricName
+    , fmap (("Namespace",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionNamespace
+    , (Just . ("Period",) . toJSON . fmap Integer') _eMRClusterCloudWatchAlarmDefinitionPeriod
+    , fmap (("Statistic",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionStatistic
+    , (Just . ("Threshold",) . toJSON . fmap Double') _eMRClusterCloudWatchAlarmDefinitionThreshold
+    , fmap (("Unit",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionUnit
     ]
 
 instance FromJSON EMRClusterCloudWatchAlarmDefinition where
   parseJSON (Object obj) =
     EMRClusterCloudWatchAlarmDefinition <$>
-      obj .: "ComparisonOperator" <*>
-      obj .:? "Dimensions" <*>
-      obj .:? "EvaluationPeriods" <*>
-      obj .: "MetricName" <*>
-      obj .:? "Namespace" <*>
-      obj .: "Period" <*>
-      obj .:? "Statistic" <*>
-      obj .: "Threshold" <*>
-      obj .:? "Unit"
+      (obj .: "ComparisonOperator") <*>
+      (obj .:? "Dimensions") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "EvaluationPeriods") <*>
+      (obj .: "MetricName") <*>
+      (obj .:? "Namespace") <*>
+      fmap (fmap unInteger') (obj .: "Period") <*>
+      (obj .:? "Statistic") <*>
+      fmap (fmap unDouble') (obj .: "Threshold") <*>
+      (obj .:? "Unit")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterCloudWatchAlarmDefinition' containing required
@@ -63,8 +64,8 @@
 emrClusterCloudWatchAlarmDefinition
   :: Val Text -- ^ 'emrccwadComparisonOperator'
   -> Val Text -- ^ 'emrccwadMetricName'
-  -> Val Integer' -- ^ 'emrccwadPeriod'
-  -> Val Double' -- ^ 'emrccwadThreshold'
+  -> Val Integer -- ^ 'emrccwadPeriod'
+  -> Val Double -- ^ 'emrccwadThreshold'
   -> EMRClusterCloudWatchAlarmDefinition
 emrClusterCloudWatchAlarmDefinition comparisonOperatorarg metricNamearg periodarg thresholdarg =
   EMRClusterCloudWatchAlarmDefinition
@@ -88,7 +89,7 @@
 emrccwadDimensions = lens _eMRClusterCloudWatchAlarmDefinitionDimensions (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionDimensions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-evaluationperiods
-emrccwadEvaluationPeriods :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Integer'))
+emrccwadEvaluationPeriods :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Integer))
 emrccwadEvaluationPeriods = lens _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-metricname
@@ -100,7 +101,7 @@
 emrccwadNamespace = lens _eMRClusterCloudWatchAlarmDefinitionNamespace (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionNamespace = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-period
-emrccwadPeriod :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Integer')
+emrccwadPeriod :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Integer)
 emrccwadPeriod = lens _eMRClusterCloudWatchAlarmDefinitionPeriod (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-statistic
@@ -108,7 +109,7 @@
 emrccwadStatistic = lens _eMRClusterCloudWatchAlarmDefinitionStatistic (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionStatistic = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-threshold
-emrccwadThreshold :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Double')
+emrccwadThreshold :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Double)
 emrccwadThreshold = lens _eMRClusterCloudWatchAlarmDefinitionThreshold (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-unit
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
 
@@ -27,17 +28,17 @@
   toJSON EMRClusterConfiguration{..} =
     object $
     catMaybes
-    [ ("Classification" .=) <$> _eMRClusterConfigurationClassification
-    , ("ConfigurationProperties" .=) <$> _eMRClusterConfigurationConfigurationProperties
-    , ("Configurations" .=) <$> _eMRClusterConfigurationConfigurations
+    [ fmap (("Classification",) . toJSON) _eMRClusterConfigurationClassification
+    , fmap (("ConfigurationProperties",) . toJSON) _eMRClusterConfigurationConfigurationProperties
+    , fmap (("Configurations",) . toJSON) _eMRClusterConfigurationConfigurations
     ]
 
 instance FromJSON EMRClusterConfiguration where
   parseJSON (Object obj) =
     EMRClusterConfiguration <$>
-      obj .:? "Classification" <*>
-      obj .:? "ConfigurationProperties" <*>
-      obj .:? "Configurations"
+      (obj .:? "Classification") <*>
+      (obj .:? "ConfigurationProperties") <*>
+      (obj .:? "Configurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterConfiguration' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
 
@@ -19,22 +20,22 @@
 data EMRClusterEbsBlockDeviceConfig =
   EMRClusterEbsBlockDeviceConfig
   { _eMRClusterEbsBlockDeviceConfigVolumeSpecification :: EMRClusterVolumeSpecification
-  , _eMRClusterEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer')
+  , _eMRClusterEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterEbsBlockDeviceConfig where
   toJSON EMRClusterEbsBlockDeviceConfig{..} =
     object $
     catMaybes
-    [ Just ("VolumeSpecification" .= _eMRClusterEbsBlockDeviceConfigVolumeSpecification)
-    , ("VolumesPerInstance" .=) <$> _eMRClusterEbsBlockDeviceConfigVolumesPerInstance
+    [ (Just . ("VolumeSpecification",) . toJSON) _eMRClusterEbsBlockDeviceConfigVolumeSpecification
+    , fmap (("VolumesPerInstance",) . toJSON . fmap Integer') _eMRClusterEbsBlockDeviceConfigVolumesPerInstance
     ]
 
 instance FromJSON EMRClusterEbsBlockDeviceConfig where
   parseJSON (Object obj) =
     EMRClusterEbsBlockDeviceConfig <$>
-      obj .: "VolumeSpecification" <*>
-      obj .:? "VolumesPerInstance"
+      (obj .: "VolumeSpecification") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumesPerInstance")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterEbsBlockDeviceConfig' containing required
@@ -53,5 +54,5 @@
 emrcebdcVolumeSpecification = lens _eMRClusterEbsBlockDeviceConfigVolumeSpecification (\s a -> s { _eMRClusterEbsBlockDeviceConfigVolumeSpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumesperinstance
-emrcebdcVolumesPerInstance :: Lens' EMRClusterEbsBlockDeviceConfig (Maybe (Val Integer'))
+emrcebdcVolumesPerInstance :: Lens' EMRClusterEbsBlockDeviceConfig (Maybe (Val Integer))
 emrcebdcVolumesPerInstance = lens _eMRClusterEbsBlockDeviceConfigVolumesPerInstance (\s a -> s { _eMRClusterEbsBlockDeviceConfigVolumesPerInstance = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
 
@@ -19,22 +20,22 @@
 data EMRClusterEbsConfiguration =
   EMRClusterEbsConfiguration
   { _eMRClusterEbsConfigurationEbsBlockDeviceConfigs :: Maybe [EMRClusterEbsBlockDeviceConfig]
-  , _eMRClusterEbsConfigurationEbsOptimized :: Maybe (Val Bool')
+  , _eMRClusterEbsConfigurationEbsOptimized :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterEbsConfiguration where
   toJSON EMRClusterEbsConfiguration{..} =
     object $
     catMaybes
-    [ ("EbsBlockDeviceConfigs" .=) <$> _eMRClusterEbsConfigurationEbsBlockDeviceConfigs
-    , ("EbsOptimized" .=) <$> _eMRClusterEbsConfigurationEbsOptimized
+    [ fmap (("EbsBlockDeviceConfigs",) . toJSON) _eMRClusterEbsConfigurationEbsBlockDeviceConfigs
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eMRClusterEbsConfigurationEbsOptimized
     ]
 
 instance FromJSON EMRClusterEbsConfiguration where
   parseJSON (Object obj) =
     EMRClusterEbsConfiguration <$>
-      obj .:? "EbsBlockDeviceConfigs" <*>
-      obj .:? "EbsOptimized"
+      (obj .:? "EbsBlockDeviceConfigs") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterEbsConfiguration' containing required fields
@@ -52,5 +53,5 @@
 emrcecEbsBlockDeviceConfigs = lens _eMRClusterEbsConfigurationEbsBlockDeviceConfigs (\s a -> s { _eMRClusterEbsConfigurationEbsBlockDeviceConfigs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsoptimized
-emrcecEbsOptimized :: Lens' EMRClusterEbsConfiguration (Maybe (Val Bool'))
+emrcecEbsOptimized :: Lens' EMRClusterEbsConfiguration (Maybe (Val Bool))
 emrcecEbsOptimized = lens _eMRClusterEbsConfigurationEbsOptimized (\s a -> s { _eMRClusterEbsConfigurationEbsOptimized = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html
 
@@ -22,29 +23,29 @@
   { _eMRClusterInstanceFleetConfigInstanceTypeConfigs :: Maybe [EMRClusterInstanceTypeConfig]
   , _eMRClusterInstanceFleetConfigLaunchSpecifications :: Maybe EMRClusterInstanceFleetProvisioningSpecifications
   , _eMRClusterInstanceFleetConfigName :: Maybe (Val Text)
-  , _eMRClusterInstanceFleetConfigTargetOnDemandCapacity :: Maybe (Val Integer')
-  , _eMRClusterInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer')
+  , _eMRClusterInstanceFleetConfigTargetOnDemandCapacity :: Maybe (Val Integer)
+  , _eMRClusterInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterInstanceFleetConfig where
   toJSON EMRClusterInstanceFleetConfig{..} =
     object $
     catMaybes
-    [ ("InstanceTypeConfigs" .=) <$> _eMRClusterInstanceFleetConfigInstanceTypeConfigs
-    , ("LaunchSpecifications" .=) <$> _eMRClusterInstanceFleetConfigLaunchSpecifications
-    , ("Name" .=) <$> _eMRClusterInstanceFleetConfigName
-    , ("TargetOnDemandCapacity" .=) <$> _eMRClusterInstanceFleetConfigTargetOnDemandCapacity
-    , ("TargetSpotCapacity" .=) <$> _eMRClusterInstanceFleetConfigTargetSpotCapacity
+    [ fmap (("InstanceTypeConfigs",) . toJSON) _eMRClusterInstanceFleetConfigInstanceTypeConfigs
+    , fmap (("LaunchSpecifications",) . toJSON) _eMRClusterInstanceFleetConfigLaunchSpecifications
+    , fmap (("Name",) . toJSON) _eMRClusterInstanceFleetConfigName
+    , fmap (("TargetOnDemandCapacity",) . toJSON . fmap Integer') _eMRClusterInstanceFleetConfigTargetOnDemandCapacity
+    , fmap (("TargetSpotCapacity",) . toJSON . fmap Integer') _eMRClusterInstanceFleetConfigTargetSpotCapacity
     ]
 
 instance FromJSON EMRClusterInstanceFleetConfig where
   parseJSON (Object obj) =
     EMRClusterInstanceFleetConfig <$>
-      obj .:? "InstanceTypeConfigs" <*>
-      obj .:? "LaunchSpecifications" <*>
-      obj .:? "Name" <*>
-      obj .:? "TargetOnDemandCapacity" <*>
-      obj .:? "TargetSpotCapacity"
+      (obj .:? "InstanceTypeConfigs") <*>
+      (obj .:? "LaunchSpecifications") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TargetOnDemandCapacity") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TargetSpotCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterInstanceFleetConfig' containing required
@@ -73,9 +74,9 @@
 emrcifcName = lens _eMRClusterInstanceFleetConfigName (\s a -> s { _eMRClusterInstanceFleetConfigName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetondemandcapacity
-emrcifcTargetOnDemandCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer'))
+emrcifcTargetOnDemandCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer))
 emrcifcTargetOnDemandCapacity = lens _eMRClusterInstanceFleetConfigTargetOnDemandCapacity (\s a -> s { _eMRClusterInstanceFleetConfigTargetOnDemandCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetspotcapacity
-emrcifcTargetSpotCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer'))
+emrcifcTargetSpotCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer))
 emrcifcTargetSpotCapacity = lens _eMRClusterInstanceFleetConfigTargetSpotCapacity (\s a -> s { _eMRClusterInstanceFleetConfigTargetSpotCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetProvisioningSpecifications.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetprovisioningspecifications.html
 
@@ -27,13 +28,13 @@
   toJSON EMRClusterInstanceFleetProvisioningSpecifications{..} =
     object $
     catMaybes
-    [ Just ("SpotSpecification" .= _eMRClusterInstanceFleetProvisioningSpecificationsSpotSpecification)
+    [ (Just . ("SpotSpecification",) . toJSON) _eMRClusterInstanceFleetProvisioningSpecificationsSpotSpecification
     ]
 
 instance FromJSON EMRClusterInstanceFleetProvisioningSpecifications where
   parseJSON (Object obj) =
     EMRClusterInstanceFleetProvisioningSpecifications <$>
-      obj .: "SpotSpecification"
+      (obj .: "SpotSpecification")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterInstanceFleetProvisioningSpecifications'
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html
 
@@ -24,7 +25,7 @@
   , _eMRClusterInstanceGroupConfigBidPrice :: Maybe (Val Text)
   , _eMRClusterInstanceGroupConfigConfigurations :: Maybe [EMRClusterConfiguration]
   , _eMRClusterInstanceGroupConfigEbsConfiguration :: Maybe EMRClusterEbsConfiguration
-  , _eMRClusterInstanceGroupConfigInstanceCount :: Val Integer'
+  , _eMRClusterInstanceGroupConfigInstanceCount :: Val Integer
   , _eMRClusterInstanceGroupConfigInstanceType :: Val Text
   , _eMRClusterInstanceGroupConfigMarket :: Maybe (Val Text)
   , _eMRClusterInstanceGroupConfigName :: Maybe (Val Text)
@@ -34,33 +35,33 @@
   toJSON EMRClusterInstanceGroupConfig{..} =
     object $
     catMaybes
-    [ ("AutoScalingPolicy" .=) <$> _eMRClusterInstanceGroupConfigAutoScalingPolicy
-    , ("BidPrice" .=) <$> _eMRClusterInstanceGroupConfigBidPrice
-    , ("Configurations" .=) <$> _eMRClusterInstanceGroupConfigConfigurations
-    , ("EbsConfiguration" .=) <$> _eMRClusterInstanceGroupConfigEbsConfiguration
-    , Just ("InstanceCount" .= _eMRClusterInstanceGroupConfigInstanceCount)
-    , Just ("InstanceType" .= _eMRClusterInstanceGroupConfigInstanceType)
-    , ("Market" .=) <$> _eMRClusterInstanceGroupConfigMarket
-    , ("Name" .=) <$> _eMRClusterInstanceGroupConfigName
+    [ fmap (("AutoScalingPolicy",) . toJSON) _eMRClusterInstanceGroupConfigAutoScalingPolicy
+    , fmap (("BidPrice",) . toJSON) _eMRClusterInstanceGroupConfigBidPrice
+    , fmap (("Configurations",) . toJSON) _eMRClusterInstanceGroupConfigConfigurations
+    , fmap (("EbsConfiguration",) . toJSON) _eMRClusterInstanceGroupConfigEbsConfiguration
+    , (Just . ("InstanceCount",) . toJSON . fmap Integer') _eMRClusterInstanceGroupConfigInstanceCount
+    , (Just . ("InstanceType",) . toJSON) _eMRClusterInstanceGroupConfigInstanceType
+    , fmap (("Market",) . toJSON) _eMRClusterInstanceGroupConfigMarket
+    , fmap (("Name",) . toJSON) _eMRClusterInstanceGroupConfigName
     ]
 
 instance FromJSON EMRClusterInstanceGroupConfig where
   parseJSON (Object obj) =
     EMRClusterInstanceGroupConfig <$>
-      obj .:? "AutoScalingPolicy" <*>
-      obj .:? "BidPrice" <*>
-      obj .:? "Configurations" <*>
-      obj .:? "EbsConfiguration" <*>
-      obj .: "InstanceCount" <*>
-      obj .: "InstanceType" <*>
-      obj .:? "Market" <*>
-      obj .:? "Name"
+      (obj .:? "AutoScalingPolicy") <*>
+      (obj .:? "BidPrice") <*>
+      (obj .:? "Configurations") <*>
+      (obj .:? "EbsConfiguration") <*>
+      fmap (fmap unInteger') (obj .: "InstanceCount") <*>
+      (obj .: "InstanceType") <*>
+      (obj .:? "Market") <*>
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterInstanceGroupConfig' containing required
 -- fields as arguments.
 emrClusterInstanceGroupConfig
-  :: Val Integer' -- ^ 'emrcigcInstanceCount'
+  :: Val Integer -- ^ 'emrcigcInstanceCount'
   -> Val Text -- ^ 'emrcigcInstanceType'
   -> EMRClusterInstanceGroupConfig
 emrClusterInstanceGroupConfig instanceCountarg instanceTypearg =
@@ -92,7 +93,7 @@
 emrcigcEbsConfiguration = lens _eMRClusterInstanceGroupConfigEbsConfiguration (\s a -> s { _eMRClusterInstanceGroupConfigEbsConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancecount
-emrcigcInstanceCount :: Lens' EMRClusterInstanceGroupConfig (Val Integer')
+emrcigcInstanceCount :: Lens' EMRClusterInstanceGroupConfig (Val Integer)
 emrcigcInstanceCount = lens _eMRClusterInstanceGroupConfigInstanceCount (\s a -> s { _eMRClusterInstanceGroupConfigInstanceCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceTypeConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html
 
@@ -20,34 +21,34 @@
 data EMRClusterInstanceTypeConfig =
   EMRClusterInstanceTypeConfig
   { _eMRClusterInstanceTypeConfigBidPrice :: Maybe (Val Text)
-  , _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice :: Maybe (Val Double')
+  , _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice :: Maybe (Val Double)
   , _eMRClusterInstanceTypeConfigConfigurations :: Maybe [EMRClusterConfiguration]
   , _eMRClusterInstanceTypeConfigEbsConfiguration :: Maybe EMRClusterEbsConfiguration
   , _eMRClusterInstanceTypeConfigInstanceType :: Val Text
-  , _eMRClusterInstanceTypeConfigWeightedCapacity :: Maybe (Val Integer')
+  , _eMRClusterInstanceTypeConfigWeightedCapacity :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterInstanceTypeConfig where
   toJSON EMRClusterInstanceTypeConfig{..} =
     object $
     catMaybes
-    [ ("BidPrice" .=) <$> _eMRClusterInstanceTypeConfigBidPrice
-    , ("BidPriceAsPercentageOfOnDemandPrice" .=) <$> _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice
-    , ("Configurations" .=) <$> _eMRClusterInstanceTypeConfigConfigurations
-    , ("EbsConfiguration" .=) <$> _eMRClusterInstanceTypeConfigEbsConfiguration
-    , Just ("InstanceType" .= _eMRClusterInstanceTypeConfigInstanceType)
-    , ("WeightedCapacity" .=) <$> _eMRClusterInstanceTypeConfigWeightedCapacity
+    [ fmap (("BidPrice",) . toJSON) _eMRClusterInstanceTypeConfigBidPrice
+    , fmap (("BidPriceAsPercentageOfOnDemandPrice",) . toJSON . fmap Double') _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice
+    , fmap (("Configurations",) . toJSON) _eMRClusterInstanceTypeConfigConfigurations
+    , fmap (("EbsConfiguration",) . toJSON) _eMRClusterInstanceTypeConfigEbsConfiguration
+    , (Just . ("InstanceType",) . toJSON) _eMRClusterInstanceTypeConfigInstanceType
+    , fmap (("WeightedCapacity",) . toJSON . fmap Integer') _eMRClusterInstanceTypeConfigWeightedCapacity
     ]
 
 instance FromJSON EMRClusterInstanceTypeConfig where
   parseJSON (Object obj) =
     EMRClusterInstanceTypeConfig <$>
-      obj .:? "BidPrice" <*>
-      obj .:? "BidPriceAsPercentageOfOnDemandPrice" <*>
-      obj .:? "Configurations" <*>
-      obj .:? "EbsConfiguration" <*>
-      obj .: "InstanceType" <*>
-      obj .:? "WeightedCapacity"
+      (obj .:? "BidPrice") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "BidPriceAsPercentageOfOnDemandPrice") <*>
+      (obj .:? "Configurations") <*>
+      (obj .:? "EbsConfiguration") <*>
+      (obj .: "InstanceType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "WeightedCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterInstanceTypeConfig' containing required fields
@@ -70,7 +71,7 @@
 emrcitcBidPrice = lens _eMRClusterInstanceTypeConfigBidPrice (\s a -> s { _eMRClusterInstanceTypeConfigBidPrice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-bidpriceaspercentageofondemandprice
-emrcitcBidPriceAsPercentageOfOnDemandPrice :: Lens' EMRClusterInstanceTypeConfig (Maybe (Val Double'))
+emrcitcBidPriceAsPercentageOfOnDemandPrice :: Lens' EMRClusterInstanceTypeConfig (Maybe (Val Double))
 emrcitcBidPriceAsPercentageOfOnDemandPrice = lens _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice (\s a -> s { _eMRClusterInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-configurations
@@ -86,5 +87,5 @@
 emrcitcInstanceType = lens _eMRClusterInstanceTypeConfigInstanceType (\s a -> s { _eMRClusterInstanceTypeConfigInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-weightedcapacity
-emrcitcWeightedCapacity :: Lens' EMRClusterInstanceTypeConfig (Maybe (Val Integer'))
+emrcitcWeightedCapacity :: Lens' EMRClusterInstanceTypeConfig (Maybe (Val Integer))
 emrcitcWeightedCapacity = lens _eMRClusterInstanceTypeConfigWeightedCapacity (\s a -> s { _eMRClusterInstanceTypeConfigWeightedCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html
 
@@ -20,8 +21,8 @@
 -- 'emrClusterJobFlowInstancesConfig' for a more convenient constructor.
 data EMRClusterJobFlowInstancesConfig =
   EMRClusterJobFlowInstancesConfig
-  { _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups :: Maybe [Val Text]
-  , _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups :: Maybe [Val Text]
+  { _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups :: Maybe (ValList Text)
+  , _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups :: Maybe (ValList Text)
   , _eMRClusterJobFlowInstancesConfigCoreInstanceFleet :: Maybe EMRClusterInstanceFleetConfig
   , _eMRClusterJobFlowInstancesConfigCoreInstanceGroup :: Maybe EMRClusterInstanceGroupConfig
   , _eMRClusterJobFlowInstancesConfigEc2KeyName :: Maybe (Val Text)
@@ -33,46 +34,46 @@
   , _eMRClusterJobFlowInstancesConfigMasterInstanceGroup :: Maybe EMRClusterInstanceGroupConfig
   , _eMRClusterJobFlowInstancesConfigPlacement :: Maybe EMRClusterPlacementType
   , _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup :: Maybe (Val Text)
-  , _eMRClusterJobFlowInstancesConfigTerminationProtected :: Maybe (Val Bool')
+  , _eMRClusterJobFlowInstancesConfigTerminationProtected :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterJobFlowInstancesConfig where
   toJSON EMRClusterJobFlowInstancesConfig{..} =
     object $
     catMaybes
-    [ ("AdditionalMasterSecurityGroups" .=) <$> _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups
-    , ("AdditionalSlaveSecurityGroups" .=) <$> _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups
-    , ("CoreInstanceFleet" .=) <$> _eMRClusterJobFlowInstancesConfigCoreInstanceFleet
-    , ("CoreInstanceGroup" .=) <$> _eMRClusterJobFlowInstancesConfigCoreInstanceGroup
-    , ("Ec2KeyName" .=) <$> _eMRClusterJobFlowInstancesConfigEc2KeyName
-    , ("Ec2SubnetId" .=) <$> _eMRClusterJobFlowInstancesConfigEc2SubnetId
-    , ("EmrManagedMasterSecurityGroup" .=) <$> _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup
-    , ("EmrManagedSlaveSecurityGroup" .=) <$> _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup
-    , ("HadoopVersion" .=) <$> _eMRClusterJobFlowInstancesConfigHadoopVersion
-    , ("MasterInstanceFleet" .=) <$> _eMRClusterJobFlowInstancesConfigMasterInstanceFleet
-    , ("MasterInstanceGroup" .=) <$> _eMRClusterJobFlowInstancesConfigMasterInstanceGroup
-    , ("Placement" .=) <$> _eMRClusterJobFlowInstancesConfigPlacement
-    , ("ServiceAccessSecurityGroup" .=) <$> _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup
-    , ("TerminationProtected" .=) <$> _eMRClusterJobFlowInstancesConfigTerminationProtected
+    [ fmap (("AdditionalMasterSecurityGroups",) . toJSON) _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups
+    , fmap (("AdditionalSlaveSecurityGroups",) . toJSON) _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups
+    , fmap (("CoreInstanceFleet",) . toJSON) _eMRClusterJobFlowInstancesConfigCoreInstanceFleet
+    , fmap (("CoreInstanceGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigCoreInstanceGroup
+    , fmap (("Ec2KeyName",) . toJSON) _eMRClusterJobFlowInstancesConfigEc2KeyName
+    , fmap (("Ec2SubnetId",) . toJSON) _eMRClusterJobFlowInstancesConfigEc2SubnetId
+    , fmap (("EmrManagedMasterSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup
+    , fmap (("EmrManagedSlaveSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup
+    , fmap (("HadoopVersion",) . toJSON) _eMRClusterJobFlowInstancesConfigHadoopVersion
+    , fmap (("MasterInstanceFleet",) . toJSON) _eMRClusterJobFlowInstancesConfigMasterInstanceFleet
+    , fmap (("MasterInstanceGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigMasterInstanceGroup
+    , fmap (("Placement",) . toJSON) _eMRClusterJobFlowInstancesConfigPlacement
+    , fmap (("ServiceAccessSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup
+    , fmap (("TerminationProtected",) . toJSON . fmap Bool') _eMRClusterJobFlowInstancesConfigTerminationProtected
     ]
 
 instance FromJSON EMRClusterJobFlowInstancesConfig where
   parseJSON (Object obj) =
     EMRClusterJobFlowInstancesConfig <$>
-      obj .:? "AdditionalMasterSecurityGroups" <*>
-      obj .:? "AdditionalSlaveSecurityGroups" <*>
-      obj .:? "CoreInstanceFleet" <*>
-      obj .:? "CoreInstanceGroup" <*>
-      obj .:? "Ec2KeyName" <*>
-      obj .:? "Ec2SubnetId" <*>
-      obj .:? "EmrManagedMasterSecurityGroup" <*>
-      obj .:? "EmrManagedSlaveSecurityGroup" <*>
-      obj .:? "HadoopVersion" <*>
-      obj .:? "MasterInstanceFleet" <*>
-      obj .:? "MasterInstanceGroup" <*>
-      obj .:? "Placement" <*>
-      obj .:? "ServiceAccessSecurityGroup" <*>
-      obj .:? "TerminationProtected"
+      (obj .:? "AdditionalMasterSecurityGroups") <*>
+      (obj .:? "AdditionalSlaveSecurityGroups") <*>
+      (obj .:? "CoreInstanceFleet") <*>
+      (obj .:? "CoreInstanceGroup") <*>
+      (obj .:? "Ec2KeyName") <*>
+      (obj .:? "Ec2SubnetId") <*>
+      (obj .:? "EmrManagedMasterSecurityGroup") <*>
+      (obj .:? "EmrManagedSlaveSecurityGroup") <*>
+      (obj .:? "HadoopVersion") <*>
+      (obj .:? "MasterInstanceFleet") <*>
+      (obj .:? "MasterInstanceGroup") <*>
+      (obj .:? "Placement") <*>
+      (obj .:? "ServiceAccessSecurityGroup") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "TerminationProtected")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterJobFlowInstancesConfig' containing required
@@ -98,11 +99,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalmastersecuritygroups
-emrcjficAdditionalMasterSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe [Val Text])
+emrcjficAdditionalMasterSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (ValList Text))
 emrcjficAdditionalMasterSecurityGroups = lens _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups (\s a -> s { _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalslavesecuritygroups
-emrcjficAdditionalSlaveSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe [Val Text])
+emrcjficAdditionalSlaveSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (ValList Text))
 emrcjficAdditionalSlaveSecurityGroups = lens _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups (\s a -> s { _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-coreinstancefleet
@@ -150,5 +151,5 @@
 emrcjficServiceAccessSecurityGroup = lens _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-terminationprotected
-emrcjficTerminationProtected :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Bool'))
+emrcjficTerminationProtected :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Bool))
 emrcjficTerminationProtected = lens _eMRClusterJobFlowInstancesConfigTerminationProtected (\s a -> s { _eMRClusterJobFlowInstancesConfigTerminationProtected = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html
 
@@ -26,15 +27,15 @@
   toJSON EMRClusterMetricDimension{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _eMRClusterMetricDimensionKey)
-    , Just ("Value" .= _eMRClusterMetricDimensionValue)
+    [ (Just . ("Key",) . toJSON) _eMRClusterMetricDimensionKey
+    , (Just . ("Value",) . toJSON) _eMRClusterMetricDimensionValue
     ]
 
 instance FromJSON EMRClusterMetricDimension where
   parseJSON (Object obj) =
     EMRClusterMetricDimension <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterMetricDimension' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-placementtype.html
 
@@ -25,13 +26,13 @@
   toJSON EMRClusterPlacementType{..} =
     object $
     catMaybes
-    [ Just ("AvailabilityZone" .= _eMRClusterPlacementTypeAvailabilityZone)
+    [ (Just . ("AvailabilityZone",) . toJSON) _eMRClusterPlacementTypeAvailabilityZone
     ]
 
 instance FromJSON EMRClusterPlacementType where
   parseJSON (Object obj) =
     EMRClusterPlacementType <$>
-      obj .: "AvailabilityZone"
+      (obj .: "AvailabilityZone")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterPlacementType' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html
 
@@ -26,15 +27,15 @@
   toJSON EMRClusterScalingAction{..} =
     object $
     catMaybes
-    [ ("Market" .=) <$> _eMRClusterScalingActionMarket
-    , Just ("SimpleScalingPolicyConfiguration" .= _eMRClusterScalingActionSimpleScalingPolicyConfiguration)
+    [ fmap (("Market",) . toJSON) _eMRClusterScalingActionMarket
+    , (Just . ("SimpleScalingPolicyConfiguration",) . toJSON) _eMRClusterScalingActionSimpleScalingPolicyConfiguration
     ]
 
 instance FromJSON EMRClusterScalingAction where
   parseJSON (Object obj) =
     EMRClusterScalingAction <$>
-      obj .:? "Market" <*>
-      obj .: "SimpleScalingPolicyConfiguration"
+      (obj .:? "Market") <*>
+      (obj .: "SimpleScalingPolicyConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterScalingAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html
 
@@ -18,30 +19,30 @@
 -- 'emrClusterScalingConstraints' for a more convenient constructor.
 data EMRClusterScalingConstraints =
   EMRClusterScalingConstraints
-  { _eMRClusterScalingConstraintsMaxCapacity :: Val Integer'
-  , _eMRClusterScalingConstraintsMinCapacity :: Val Integer'
+  { _eMRClusterScalingConstraintsMaxCapacity :: Val Integer
+  , _eMRClusterScalingConstraintsMinCapacity :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterScalingConstraints where
   toJSON EMRClusterScalingConstraints{..} =
     object $
     catMaybes
-    [ Just ("MaxCapacity" .= _eMRClusterScalingConstraintsMaxCapacity)
-    , Just ("MinCapacity" .= _eMRClusterScalingConstraintsMinCapacity)
+    [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _eMRClusterScalingConstraintsMaxCapacity
+    , (Just . ("MinCapacity",) . toJSON . fmap Integer') _eMRClusterScalingConstraintsMinCapacity
     ]
 
 instance FromJSON EMRClusterScalingConstraints where
   parseJSON (Object obj) =
     EMRClusterScalingConstraints <$>
-      obj .: "MaxCapacity" <*>
-      obj .: "MinCapacity"
+      fmap (fmap unInteger') (obj .: "MaxCapacity") <*>
+      fmap (fmap unInteger') (obj .: "MinCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterScalingConstraints' containing required fields
 -- as arguments.
 emrClusterScalingConstraints
-  :: Val Integer' -- ^ 'emrcscMaxCapacity'
-  -> Val Integer' -- ^ 'emrcscMinCapacity'
+  :: Val Integer -- ^ 'emrcscMaxCapacity'
+  -> Val Integer -- ^ 'emrcscMinCapacity'
   -> EMRClusterScalingConstraints
 emrClusterScalingConstraints maxCapacityarg minCapacityarg =
   EMRClusterScalingConstraints
@@ -50,9 +51,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html#cfn-elasticmapreduce-cluster-scalingconstraints-maxcapacity
-emrcscMaxCapacity :: Lens' EMRClusterScalingConstraints (Val Integer')
+emrcscMaxCapacity :: Lens' EMRClusterScalingConstraints (Val Integer)
 emrcscMaxCapacity = lens _eMRClusterScalingConstraintsMaxCapacity (\s a -> s { _eMRClusterScalingConstraintsMaxCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html#cfn-elasticmapreduce-cluster-scalingconstraints-mincapacity
-emrcscMinCapacity :: Lens' EMRClusterScalingConstraints (Val Integer')
+emrcscMinCapacity :: Lens' EMRClusterScalingConstraints (Val Integer)
 emrcscMinCapacity = lens _eMRClusterScalingConstraintsMinCapacity (\s a -> s { _eMRClusterScalingConstraintsMinCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html
 
@@ -29,19 +30,19 @@
   toJSON EMRClusterScalingRule{..} =
     object $
     catMaybes
-    [ Just ("Action" .= _eMRClusterScalingRuleAction)
-    , ("Description" .=) <$> _eMRClusterScalingRuleDescription
-    , Just ("Name" .= _eMRClusterScalingRuleName)
-    , Just ("Trigger" .= _eMRClusterScalingRuleTrigger)
+    [ (Just . ("Action",) . toJSON) _eMRClusterScalingRuleAction
+    , fmap (("Description",) . toJSON) _eMRClusterScalingRuleDescription
+    , (Just . ("Name",) . toJSON) _eMRClusterScalingRuleName
+    , (Just . ("Trigger",) . toJSON) _eMRClusterScalingRuleTrigger
     ]
 
 instance FromJSON EMRClusterScalingRule where
   parseJSON (Object obj) =
     EMRClusterScalingRule <$>
-      obj .: "Action" <*>
-      obj .:? "Description" <*>
-      obj .: "Name" <*>
-      obj .: "Trigger"
+      (obj .: "Action") <*>
+      (obj .:? "Description") <*>
+      (obj .: "Name") <*>
+      (obj .: "Trigger")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterScalingRule' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScalingTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingtrigger.html
 
@@ -25,13 +26,13 @@
   toJSON EMRClusterScalingTrigger{..} =
     object $
     catMaybes
-    [ Just ("CloudWatchAlarmDefinition" .= _eMRClusterScalingTriggerCloudWatchAlarmDefinition)
+    [ (Just . ("CloudWatchAlarmDefinition",) . toJSON) _eMRClusterScalingTriggerCloudWatchAlarmDefinition
     ]
 
 instance FromJSON EMRClusterScalingTrigger where
   parseJSON (Object obj) =
     EMRClusterScalingTrigger <$>
-      obj .: "CloudWatchAlarmDefinition"
+      (obj .: "CloudWatchAlarmDefinition")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterScalingTrigger' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html
 
@@ -19,7 +20,7 @@
 -- constructor.
 data EMRClusterScriptBootstrapActionConfig =
   EMRClusterScriptBootstrapActionConfig
-  { _eMRClusterScriptBootstrapActionConfigArgs :: Maybe [Val Text]
+  { _eMRClusterScriptBootstrapActionConfigArgs :: Maybe (ValList Text)
   , _eMRClusterScriptBootstrapActionConfigPath :: Val Text
   } deriving (Show, Eq)
 
@@ -27,15 +28,15 @@
   toJSON EMRClusterScriptBootstrapActionConfig{..} =
     object $
     catMaybes
-    [ ("Args" .=) <$> _eMRClusterScriptBootstrapActionConfigArgs
-    , Just ("Path" .= _eMRClusterScriptBootstrapActionConfigPath)
+    [ fmap (("Args",) . toJSON) _eMRClusterScriptBootstrapActionConfigArgs
+    , (Just . ("Path",) . toJSON) _eMRClusterScriptBootstrapActionConfigPath
     ]
 
 instance FromJSON EMRClusterScriptBootstrapActionConfig where
   parseJSON (Object obj) =
     EMRClusterScriptBootstrapActionConfig <$>
-      obj .:? "Args" <*>
-      obj .: "Path"
+      (obj .:? "Args") <*>
+      (obj .: "Path")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterScriptBootstrapActionConfig' containing
@@ -50,7 +51,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-args
-emrcsbacArgs :: Lens' EMRClusterScriptBootstrapActionConfig (Maybe [Val Text])
+emrcsbacArgs :: Lens' EMRClusterScriptBootstrapActionConfig (Maybe (ValList Text))
 emrcsbacArgs = lens _eMRClusterScriptBootstrapActionConfigArgs (\s a -> s { _eMRClusterScriptBootstrapActionConfigArgs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-path
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterSimpleScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html
 
@@ -20,31 +21,31 @@
 data EMRClusterSimpleScalingPolicyConfiguration =
   EMRClusterSimpleScalingPolicyConfiguration
   { _eMRClusterSimpleScalingPolicyConfigurationAdjustmentType :: Maybe (Val Text)
-  , _eMRClusterSimpleScalingPolicyConfigurationCoolDown :: Maybe (Val Integer')
-  , _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment :: Val Integer'
+  , _eMRClusterSimpleScalingPolicyConfigurationCoolDown :: Maybe (Val Integer)
+  , _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterSimpleScalingPolicyConfiguration where
   toJSON EMRClusterSimpleScalingPolicyConfiguration{..} =
     object $
     catMaybes
-    [ ("AdjustmentType" .=) <$> _eMRClusterSimpleScalingPolicyConfigurationAdjustmentType
-    , ("CoolDown" .=) <$> _eMRClusterSimpleScalingPolicyConfigurationCoolDown
-    , Just ("ScalingAdjustment" .= _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment)
+    [ fmap (("AdjustmentType",) . toJSON) _eMRClusterSimpleScalingPolicyConfigurationAdjustmentType
+    , fmap (("CoolDown",) . toJSON . fmap Integer') _eMRClusterSimpleScalingPolicyConfigurationCoolDown
+    , (Just . ("ScalingAdjustment",) . toJSON . fmap Integer') _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment
     ]
 
 instance FromJSON EMRClusterSimpleScalingPolicyConfiguration where
   parseJSON (Object obj) =
     EMRClusterSimpleScalingPolicyConfiguration <$>
-      obj .:? "AdjustmentType" <*>
-      obj .:? "CoolDown" <*>
-      obj .: "ScalingAdjustment"
+      (obj .:? "AdjustmentType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "CoolDown") <*>
+      fmap (fmap unInteger') (obj .: "ScalingAdjustment")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterSimpleScalingPolicyConfiguration' containing
 -- required fields as arguments.
 emrClusterSimpleScalingPolicyConfiguration
-  :: Val Integer' -- ^ 'emrcsspcScalingAdjustment'
+  :: Val Integer -- ^ 'emrcsspcScalingAdjustment'
   -> EMRClusterSimpleScalingPolicyConfiguration
 emrClusterSimpleScalingPolicyConfiguration scalingAdjustmentarg =
   EMRClusterSimpleScalingPolicyConfiguration
@@ -58,9 +59,9 @@
 emrcsspcAdjustmentType = lens _eMRClusterSimpleScalingPolicyConfigurationAdjustmentType (\s a -> s { _eMRClusterSimpleScalingPolicyConfigurationAdjustmentType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-cluster-simplescalingpolicyconfiguration-cooldown
-emrcsspcCoolDown :: Lens' EMRClusterSimpleScalingPolicyConfiguration (Maybe (Val Integer'))
+emrcsspcCoolDown :: Lens' EMRClusterSimpleScalingPolicyConfiguration (Maybe (Val Integer))
 emrcsspcCoolDown = lens _eMRClusterSimpleScalingPolicyConfigurationCoolDown (\s a -> s { _eMRClusterSimpleScalingPolicyConfigurationCoolDown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-cluster-simplescalingpolicyconfiguration-scalingadjustment
-emrcsspcScalingAdjustment :: Lens' EMRClusterSimpleScalingPolicyConfiguration (Val Integer')
+emrcsspcScalingAdjustment :: Lens' EMRClusterSimpleScalingPolicyConfiguration (Val Integer)
 emrcsspcScalingAdjustment = lens _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment (\s a -> s { _eMRClusterSimpleScalingPolicyConfigurationScalingAdjustment = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html
 
@@ -19,33 +20,33 @@
 -- constructor.
 data EMRClusterSpotProvisioningSpecification =
   EMRClusterSpotProvisioningSpecification
-  { _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer')
+  { _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer)
   , _eMRClusterSpotProvisioningSpecificationTimeoutAction :: Val Text
-  , _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer'
+  , _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRClusterSpotProvisioningSpecification where
   toJSON EMRClusterSpotProvisioningSpecification{..} =
     object $
     catMaybes
-    [ ("BlockDurationMinutes" .=) <$> _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes
-    , Just ("TimeoutAction" .= _eMRClusterSpotProvisioningSpecificationTimeoutAction)
-    , Just ("TimeoutDurationMinutes" .= _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes)
+    [ fmap (("BlockDurationMinutes",) . toJSON . fmap Integer') _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes
+    , (Just . ("TimeoutAction",) . toJSON) _eMRClusterSpotProvisioningSpecificationTimeoutAction
+    , (Just . ("TimeoutDurationMinutes",) . toJSON . fmap Integer') _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes
     ]
 
 instance FromJSON EMRClusterSpotProvisioningSpecification where
   parseJSON (Object obj) =
     EMRClusterSpotProvisioningSpecification <$>
-      obj .:? "BlockDurationMinutes" <*>
-      obj .: "TimeoutAction" <*>
-      obj .: "TimeoutDurationMinutes"
+      fmap (fmap (fmap unInteger')) (obj .:? "BlockDurationMinutes") <*>
+      (obj .: "TimeoutAction") <*>
+      fmap (fmap unInteger') (obj .: "TimeoutDurationMinutes")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterSpotProvisioningSpecification' containing
 -- required fields as arguments.
 emrClusterSpotProvisioningSpecification
   :: Val Text -- ^ 'emrcspsTimeoutAction'
-  -> Val Integer' -- ^ 'emrcspsTimeoutDurationMinutes'
+  -> Val Integer -- ^ 'emrcspsTimeoutDurationMinutes'
   -> EMRClusterSpotProvisioningSpecification
 emrClusterSpotProvisioningSpecification timeoutActionarg timeoutDurationMinutesarg =
   EMRClusterSpotProvisioningSpecification
@@ -55,7 +56,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-blockdurationminutes
-emrcspsBlockDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Maybe (Val Integer'))
+emrcspsBlockDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Maybe (Val Integer))
 emrcspsBlockDurationMinutes = lens _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes (\s a -> s { _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutaction
@@ -63,5 +64,5 @@
 emrcspsTimeoutAction = lens _eMRClusterSpotProvisioningSpecificationTimeoutAction (\s a -> s { _eMRClusterSpotProvisioningSpecificationTimeoutAction = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutdurationminutes
-emrcspsTimeoutDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Val Integer')
+emrcspsTimeoutDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Val Integer)
 emrcspsTimeoutDurationMinutes = lens _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes (\s a -> s { _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
 
@@ -18,8 +19,8 @@
 -- 'emrClusterVolumeSpecification' for a more convenient constructor.
 data EMRClusterVolumeSpecification =
   EMRClusterVolumeSpecification
-  { _eMRClusterVolumeSpecificationIops :: Maybe (Val Integer')
-  , _eMRClusterVolumeSpecificationSizeInGB :: Val Integer'
+  { _eMRClusterVolumeSpecificationIops :: Maybe (Val Integer)
+  , _eMRClusterVolumeSpecificationSizeInGB :: Val Integer
   , _eMRClusterVolumeSpecificationVolumeType :: Val Text
   } deriving (Show, Eq)
 
@@ -27,23 +28,23 @@
   toJSON EMRClusterVolumeSpecification{..} =
     object $
     catMaybes
-    [ ("Iops" .=) <$> _eMRClusterVolumeSpecificationIops
-    , Just ("SizeInGB" .= _eMRClusterVolumeSpecificationSizeInGB)
-    , Just ("VolumeType" .= _eMRClusterVolumeSpecificationVolumeType)
+    [ fmap (("Iops",) . toJSON . fmap Integer') _eMRClusterVolumeSpecificationIops
+    , (Just . ("SizeInGB",) . toJSON . fmap Integer') _eMRClusterVolumeSpecificationSizeInGB
+    , (Just . ("VolumeType",) . toJSON) _eMRClusterVolumeSpecificationVolumeType
     ]
 
 instance FromJSON EMRClusterVolumeSpecification where
   parseJSON (Object obj) =
     EMRClusterVolumeSpecification <$>
-      obj .:? "Iops" <*>
-      obj .: "SizeInGB" <*>
-      obj .: "VolumeType"
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      fmap (fmap unInteger') (obj .: "SizeInGB") <*>
+      (obj .: "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRClusterVolumeSpecification' containing required
 -- fields as arguments.
 emrClusterVolumeSpecification
-  :: Val Integer' -- ^ 'emrcvsSizeInGB'
+  :: Val Integer -- ^ 'emrcvsSizeInGB'
   -> Val Text -- ^ 'emrcvsVolumeType'
   -> EMRClusterVolumeSpecification
 emrClusterVolumeSpecification sizeInGBarg volumeTypearg =
@@ -54,11 +55,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-iops
-emrcvsIops :: Lens' EMRClusterVolumeSpecification (Maybe (Val Integer'))
+emrcvsIops :: Lens' EMRClusterVolumeSpecification (Maybe (Val Integer))
 emrcvsIops = lens _eMRClusterVolumeSpecificationIops (\s a -> s { _eMRClusterVolumeSpecificationIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-sizeingb
-emrcvsSizeInGB :: Lens' EMRClusterVolumeSpecification (Val Integer')
+emrcvsSizeInGB :: Lens' EMRClusterVolumeSpecification (Val Integer)
 emrcvsSizeInGB = lens _eMRClusterVolumeSpecificationSizeInGB (\s a -> s { _eMRClusterVolumeSpecificationSizeInGB = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html
 
@@ -27,17 +28,17 @@
   toJSON EMRInstanceFleetConfigConfiguration{..} =
     object $
     catMaybes
-    [ ("Classification" .=) <$> _eMRInstanceFleetConfigConfigurationClassification
-    , ("ConfigurationProperties" .=) <$> _eMRInstanceFleetConfigConfigurationConfigurationProperties
-    , ("Configurations" .=) <$> _eMRInstanceFleetConfigConfigurationConfigurations
+    [ fmap (("Classification",) . toJSON) _eMRInstanceFleetConfigConfigurationClassification
+    , fmap (("ConfigurationProperties",) . toJSON) _eMRInstanceFleetConfigConfigurationConfigurationProperties
+    , fmap (("Configurations",) . toJSON) _eMRInstanceFleetConfigConfigurationConfigurations
     ]
 
 instance FromJSON EMRInstanceFleetConfigConfiguration where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigConfiguration <$>
-      obj .:? "Classification" <*>
-      obj .:? "ConfigurationProperties" <*>
-      obj .:? "Configurations"
+      (obj .:? "Classification") <*>
+      (obj .:? "ConfigurationProperties") <*>
+      (obj .:? "Configurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html
 
@@ -20,22 +21,22 @@
 data EMRInstanceFleetConfigEbsBlockDeviceConfig =
   EMRInstanceFleetConfigEbsBlockDeviceConfig
   { _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumeSpecification :: EMRInstanceFleetConfigVolumeSpecification
-  , _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer')
+  , _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceFleetConfigEbsBlockDeviceConfig where
   toJSON EMRInstanceFleetConfigEbsBlockDeviceConfig{..} =
     object $
     catMaybes
-    [ Just ("VolumeSpecification" .= _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumeSpecification)
-    , ("VolumesPerInstance" .=) <$> _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance
+    [ (Just . ("VolumeSpecification",) . toJSON) _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumeSpecification
+    , fmap (("VolumesPerInstance",) . toJSON . fmap Integer') _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance
     ]
 
 instance FromJSON EMRInstanceFleetConfigEbsBlockDeviceConfig where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigEbsBlockDeviceConfig <$>
-      obj .: "VolumeSpecification" <*>
-      obj .:? "VolumesPerInstance"
+      (obj .: "VolumeSpecification") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumesPerInstance")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigEbsBlockDeviceConfig' containing
@@ -54,5 +55,5 @@
 emrifcebdcVolumeSpecification = lens _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumeSpecification (\s a -> s { _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumeSpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html#cfn-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig-volumesperinstance
-emrifcebdcVolumesPerInstance :: Lens' EMRInstanceFleetConfigEbsBlockDeviceConfig (Maybe (Val Integer'))
+emrifcebdcVolumesPerInstance :: Lens' EMRInstanceFleetConfigEbsBlockDeviceConfig (Maybe (Val Integer))
 emrifcebdcVolumesPerInstance = lens _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance (\s a -> s { _eMRInstanceFleetConfigEbsBlockDeviceConfigVolumesPerInstance = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html
 
@@ -20,22 +21,22 @@
 data EMRInstanceFleetConfigEbsConfiguration =
   EMRInstanceFleetConfigEbsConfiguration
   { _eMRInstanceFleetConfigEbsConfigurationEbsBlockDeviceConfigs :: Maybe [EMRInstanceFleetConfigEbsBlockDeviceConfig]
-  , _eMRInstanceFleetConfigEbsConfigurationEbsOptimized :: Maybe (Val Bool')
+  , _eMRInstanceFleetConfigEbsConfigurationEbsOptimized :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceFleetConfigEbsConfiguration where
   toJSON EMRInstanceFleetConfigEbsConfiguration{..} =
     object $
     catMaybes
-    [ ("EbsBlockDeviceConfigs" .=) <$> _eMRInstanceFleetConfigEbsConfigurationEbsBlockDeviceConfigs
-    , ("EbsOptimized" .=) <$> _eMRInstanceFleetConfigEbsConfigurationEbsOptimized
+    [ fmap (("EbsBlockDeviceConfigs",) . toJSON) _eMRInstanceFleetConfigEbsConfigurationEbsBlockDeviceConfigs
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eMRInstanceFleetConfigEbsConfigurationEbsOptimized
     ]
 
 instance FromJSON EMRInstanceFleetConfigEbsConfiguration where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigEbsConfiguration <$>
-      obj .:? "EbsBlockDeviceConfigs" <*>
-      obj .:? "EbsOptimized"
+      (obj .:? "EbsBlockDeviceConfigs") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigEbsConfiguration' containing
@@ -53,5 +54,5 @@
 emrifcecEbsBlockDeviceConfigs = lens _eMRInstanceFleetConfigEbsConfigurationEbsBlockDeviceConfigs (\s a -> s { _eMRInstanceFleetConfigEbsConfigurationEbsBlockDeviceConfigs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html#cfn-elasticmapreduce-instancefleetconfig-ebsconfiguration-ebsoptimized
-emrifcecEbsOptimized :: Lens' EMRInstanceFleetConfigEbsConfiguration (Maybe (Val Bool'))
+emrifcecEbsOptimized :: Lens' EMRInstanceFleetConfigEbsConfiguration (Maybe (Val Bool))
 emrifcecEbsOptimized = lens _eMRInstanceFleetConfigEbsConfigurationEbsOptimized (\s a -> s { _eMRInstanceFleetConfigEbsConfigurationEbsOptimized = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications.html
 
@@ -27,13 +28,13 @@
   toJSON EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications{..} =
     object $
     catMaybes
-    [ Just ("SpotSpecification" .= _eMRInstanceFleetConfigInstanceFleetProvisioningSpecificationsSpotSpecification)
+    [ (Just . ("SpotSpecification",) . toJSON) _eMRInstanceFleetConfigInstanceFleetProvisioningSpecificationsSpotSpecification
     ]
 
 instance FromJSON EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications <$>
-      obj .: "SpotSpecification"
+      (obj .: "SpotSpecification")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigInstanceTypeConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html
 
@@ -21,34 +22,34 @@
 data EMRInstanceFleetConfigInstanceTypeConfig =
   EMRInstanceFleetConfigInstanceTypeConfig
   { _eMRInstanceFleetConfigInstanceTypeConfigBidPrice :: Maybe (Val Text)
-  , _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice :: Maybe (Val Double')
+  , _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice :: Maybe (Val Double)
   , _eMRInstanceFleetConfigInstanceTypeConfigConfigurations :: Maybe [EMRInstanceFleetConfigConfiguration]
   , _eMRInstanceFleetConfigInstanceTypeConfigEbsConfiguration :: Maybe EMRInstanceFleetConfigEbsConfiguration
   , _eMRInstanceFleetConfigInstanceTypeConfigInstanceType :: Val Text
-  , _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity :: Maybe (Val Integer')
+  , _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceFleetConfigInstanceTypeConfig where
   toJSON EMRInstanceFleetConfigInstanceTypeConfig{..} =
     object $
     catMaybes
-    [ ("BidPrice" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigBidPrice
-    , ("BidPriceAsPercentageOfOnDemandPrice" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice
-    , ("Configurations" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigConfigurations
-    , ("EbsConfiguration" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigEbsConfiguration
-    , Just ("InstanceType" .= _eMRInstanceFleetConfigInstanceTypeConfigInstanceType)
-    , ("WeightedCapacity" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity
+    [ fmap (("BidPrice",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigBidPrice
+    , fmap (("BidPriceAsPercentageOfOnDemandPrice",) . toJSON . fmap Double') _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice
+    , fmap (("Configurations",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigConfigurations
+    , fmap (("EbsConfiguration",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigEbsConfiguration
+    , (Just . ("InstanceType",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigInstanceType
+    , fmap (("WeightedCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity
     ]
 
 instance FromJSON EMRInstanceFleetConfigInstanceTypeConfig where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigInstanceTypeConfig <$>
-      obj .:? "BidPrice" <*>
-      obj .:? "BidPriceAsPercentageOfOnDemandPrice" <*>
-      obj .:? "Configurations" <*>
-      obj .:? "EbsConfiguration" <*>
-      obj .: "InstanceType" <*>
-      obj .:? "WeightedCapacity"
+      (obj .:? "BidPrice") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "BidPriceAsPercentageOfOnDemandPrice") <*>
+      (obj .:? "Configurations") <*>
+      (obj .:? "EbsConfiguration") <*>
+      (obj .: "InstanceType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "WeightedCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigInstanceTypeConfig' containing
@@ -71,7 +72,7 @@
 emrifcitcBidPrice = lens _eMRInstanceFleetConfigInstanceTypeConfigBidPrice (\s a -> s { _eMRInstanceFleetConfigInstanceTypeConfigBidPrice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-bidpriceaspercentageofondemandprice
-emrifcitcBidPriceAsPercentageOfOnDemandPrice :: Lens' EMRInstanceFleetConfigInstanceTypeConfig (Maybe (Val Double'))
+emrifcitcBidPriceAsPercentageOfOnDemandPrice :: Lens' EMRInstanceFleetConfigInstanceTypeConfig (Maybe (Val Double))
 emrifcitcBidPriceAsPercentageOfOnDemandPrice = lens _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice (\s a -> s { _eMRInstanceFleetConfigInstanceTypeConfigBidPriceAsPercentageOfOnDemandPrice = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-configurations
@@ -87,5 +88,5 @@
 emrifcitcInstanceType = lens _eMRInstanceFleetConfigInstanceTypeConfigInstanceType (\s a -> s { _eMRInstanceFleetConfigInstanceTypeConfigInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-weightedcapacity
-emrifcitcWeightedCapacity :: Lens' EMRInstanceFleetConfigInstanceTypeConfig (Maybe (Val Integer'))
+emrifcitcWeightedCapacity :: Lens' EMRInstanceFleetConfigInstanceTypeConfig (Maybe (Val Integer))
 emrifcitcWeightedCapacity = lens _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity (\s a -> s { _eMRInstanceFleetConfigInstanceTypeConfigWeightedCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html
 
@@ -20,33 +21,33 @@
 -- convenient constructor.
 data EMRInstanceFleetConfigSpotProvisioningSpecification =
   EMRInstanceFleetConfigSpotProvisioningSpecification
-  { _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer')
+  { _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer)
   , _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction :: Val Text
-  , _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer'
+  , _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceFleetConfigSpotProvisioningSpecification where
   toJSON EMRInstanceFleetConfigSpotProvisioningSpecification{..} =
     object $
     catMaybes
-    [ ("BlockDurationMinutes" .=) <$> _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes
-    , Just ("TimeoutAction" .= _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction)
-    , Just ("TimeoutDurationMinutes" .= _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes)
+    [ fmap (("BlockDurationMinutes",) . toJSON . fmap Integer') _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes
+    , (Just . ("TimeoutAction",) . toJSON) _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction
+    , (Just . ("TimeoutDurationMinutes",) . toJSON . fmap Integer') _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes
     ]
 
 instance FromJSON EMRInstanceFleetConfigSpotProvisioningSpecification where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigSpotProvisioningSpecification <$>
-      obj .:? "BlockDurationMinutes" <*>
-      obj .: "TimeoutAction" <*>
-      obj .: "TimeoutDurationMinutes"
+      fmap (fmap (fmap unInteger')) (obj .:? "BlockDurationMinutes") <*>
+      (obj .: "TimeoutAction") <*>
+      fmap (fmap unInteger') (obj .: "TimeoutDurationMinutes")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigSpotProvisioningSpecification'
 -- containing required fields as arguments.
 emrInstanceFleetConfigSpotProvisioningSpecification
   :: Val Text -- ^ 'emrifcspsTimeoutAction'
-  -> Val Integer' -- ^ 'emrifcspsTimeoutDurationMinutes'
+  -> Val Integer -- ^ 'emrifcspsTimeoutDurationMinutes'
   -> EMRInstanceFleetConfigSpotProvisioningSpecification
 emrInstanceFleetConfigSpotProvisioningSpecification timeoutActionarg timeoutDurationMinutesarg =
   EMRInstanceFleetConfigSpotProvisioningSpecification
@@ -56,7 +57,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-blockdurationminutes
-emrifcspsBlockDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Maybe (Val Integer'))
+emrifcspsBlockDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Maybe (Val Integer))
 emrifcspsBlockDurationMinutes = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutaction
@@ -64,5 +65,5 @@
 emrifcspsTimeoutAction = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutdurationminutes
-emrifcspsTimeoutDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Val Integer')
+emrifcspsTimeoutDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Val Integer)
 emrifcspsTimeoutDurationMinutes = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html
 
@@ -19,8 +20,8 @@
 -- constructor.
 data EMRInstanceFleetConfigVolumeSpecification =
   EMRInstanceFleetConfigVolumeSpecification
-  { _eMRInstanceFleetConfigVolumeSpecificationIops :: Maybe (Val Integer')
-  , _eMRInstanceFleetConfigVolumeSpecificationSizeInGB :: Val Integer'
+  { _eMRInstanceFleetConfigVolumeSpecificationIops :: Maybe (Val Integer)
+  , _eMRInstanceFleetConfigVolumeSpecificationSizeInGB :: Val Integer
   , _eMRInstanceFleetConfigVolumeSpecificationVolumeType :: Val Text
   } deriving (Show, Eq)
 
@@ -28,23 +29,23 @@
   toJSON EMRInstanceFleetConfigVolumeSpecification{..} =
     object $
     catMaybes
-    [ ("Iops" .=) <$> _eMRInstanceFleetConfigVolumeSpecificationIops
-    , Just ("SizeInGB" .= _eMRInstanceFleetConfigVolumeSpecificationSizeInGB)
-    , Just ("VolumeType" .= _eMRInstanceFleetConfigVolumeSpecificationVolumeType)
+    [ fmap (("Iops",) . toJSON . fmap Integer') _eMRInstanceFleetConfigVolumeSpecificationIops
+    , (Just . ("SizeInGB",) . toJSON . fmap Integer') _eMRInstanceFleetConfigVolumeSpecificationSizeInGB
+    , (Just . ("VolumeType",) . toJSON) _eMRInstanceFleetConfigVolumeSpecificationVolumeType
     ]
 
 instance FromJSON EMRInstanceFleetConfigVolumeSpecification where
   parseJSON (Object obj) =
     EMRInstanceFleetConfigVolumeSpecification <$>
-      obj .:? "Iops" <*>
-      obj .: "SizeInGB" <*>
-      obj .: "VolumeType"
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      fmap (fmap unInteger') (obj .: "SizeInGB") <*>
+      (obj .: "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfigVolumeSpecification' containing
 -- required fields as arguments.
 emrInstanceFleetConfigVolumeSpecification
-  :: Val Integer' -- ^ 'emrifcvsSizeInGB'
+  :: Val Integer -- ^ 'emrifcvsSizeInGB'
   -> Val Text -- ^ 'emrifcvsVolumeType'
   -> EMRInstanceFleetConfigVolumeSpecification
 emrInstanceFleetConfigVolumeSpecification sizeInGBarg volumeTypearg =
@@ -55,11 +56,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-iops
-emrifcvsIops :: Lens' EMRInstanceFleetConfigVolumeSpecification (Maybe (Val Integer'))
+emrifcvsIops :: Lens' EMRInstanceFleetConfigVolumeSpecification (Maybe (Val Integer))
 emrifcvsIops = lens _eMRInstanceFleetConfigVolumeSpecificationIops (\s a -> s { _eMRInstanceFleetConfigVolumeSpecificationIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-sizeingb
-emrifcvsSizeInGB :: Lens' EMRInstanceFleetConfigVolumeSpecification (Val Integer')
+emrifcvsSizeInGB :: Lens' EMRInstanceFleetConfigVolumeSpecification (Val Integer)
 emrifcvsSizeInGB = lens _eMRInstanceFleetConfigVolumeSpecificationSizeInGB (\s a -> s { _eMRInstanceFleetConfigVolumeSpecificationSizeInGB = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigAutoScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html
 
@@ -28,15 +29,15 @@
   toJSON EMRInstanceGroupConfigAutoScalingPolicy{..} =
     object $
     catMaybes
-    [ Just ("Constraints" .= _eMRInstanceGroupConfigAutoScalingPolicyConstraints)
-    , Just ("Rules" .= _eMRInstanceGroupConfigAutoScalingPolicyRules)
+    [ (Just . ("Constraints",) . toJSON) _eMRInstanceGroupConfigAutoScalingPolicyConstraints
+    , (Just . ("Rules",) . toJSON) _eMRInstanceGroupConfigAutoScalingPolicyRules
     ]
 
 instance FromJSON EMRInstanceGroupConfigAutoScalingPolicy where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigAutoScalingPolicy <$>
-      obj .: "Constraints" <*>
-      obj .: "Rules"
+      (obj .: "Constraints") <*>
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigAutoScalingPolicy' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigCloudWatchAlarmDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html
 
@@ -22,12 +23,12 @@
   EMRInstanceGroupConfigCloudWatchAlarmDefinition
   { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionComparisonOperator :: Val Text
   , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionDimensions :: Maybe [EMRInstanceGroupConfigMetricDimension]
-  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods :: Maybe (Val Integer')
+  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods :: Maybe (Val Integer)
   , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionMetricName :: Val Text
   , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionNamespace :: Maybe (Val Text)
-  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod :: Val Integer'
+  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod :: Val Integer
   , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionStatistic :: Maybe (Val Text)
-  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold :: Val Double'
+  , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold :: Val Double
   , _eMRInstanceGroupConfigCloudWatchAlarmDefinitionUnit :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -35,29 +36,29 @@
   toJSON EMRInstanceGroupConfigCloudWatchAlarmDefinition{..} =
     object $
     catMaybes
-    [ Just ("ComparisonOperator" .= _eMRInstanceGroupConfigCloudWatchAlarmDefinitionComparisonOperator)
-    , ("Dimensions" .=) <$> _eMRInstanceGroupConfigCloudWatchAlarmDefinitionDimensions
-    , ("EvaluationPeriods" .=) <$> _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods
-    , Just ("MetricName" .= _eMRInstanceGroupConfigCloudWatchAlarmDefinitionMetricName)
-    , ("Namespace" .=) <$> _eMRInstanceGroupConfigCloudWatchAlarmDefinitionNamespace
-    , Just ("Period" .= _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod)
-    , ("Statistic" .=) <$> _eMRInstanceGroupConfigCloudWatchAlarmDefinitionStatistic
-    , Just ("Threshold" .= _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold)
-    , ("Unit" .=) <$> _eMRInstanceGroupConfigCloudWatchAlarmDefinitionUnit
+    [ (Just . ("ComparisonOperator",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionComparisonOperator
+    , fmap (("Dimensions",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionDimensions
+    , fmap (("EvaluationPeriods",) . toJSON . fmap Integer') _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods
+    , (Just . ("MetricName",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionMetricName
+    , fmap (("Namespace",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionNamespace
+    , (Just . ("Period",) . toJSON . fmap Integer') _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod
+    , fmap (("Statistic",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionStatistic
+    , (Just . ("Threshold",) . toJSON . fmap Double') _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold
+    , fmap (("Unit",) . toJSON) _eMRInstanceGroupConfigCloudWatchAlarmDefinitionUnit
     ]
 
 instance FromJSON EMRInstanceGroupConfigCloudWatchAlarmDefinition where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigCloudWatchAlarmDefinition <$>
-      obj .: "ComparisonOperator" <*>
-      obj .:? "Dimensions" <*>
-      obj .:? "EvaluationPeriods" <*>
-      obj .: "MetricName" <*>
-      obj .:? "Namespace" <*>
-      obj .: "Period" <*>
-      obj .:? "Statistic" <*>
-      obj .: "Threshold" <*>
-      obj .:? "Unit"
+      (obj .: "ComparisonOperator") <*>
+      (obj .:? "Dimensions") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "EvaluationPeriods") <*>
+      (obj .: "MetricName") <*>
+      (obj .:? "Namespace") <*>
+      fmap (fmap unInteger') (obj .: "Period") <*>
+      (obj .:? "Statistic") <*>
+      fmap (fmap unDouble') (obj .: "Threshold") <*>
+      (obj .:? "Unit")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigCloudWatchAlarmDefinition'
@@ -65,8 +66,8 @@
 emrInstanceGroupConfigCloudWatchAlarmDefinition
   :: Val Text -- ^ 'emrigccwadComparisonOperator'
   -> Val Text -- ^ 'emrigccwadMetricName'
-  -> Val Integer' -- ^ 'emrigccwadPeriod'
-  -> Val Double' -- ^ 'emrigccwadThreshold'
+  -> Val Integer -- ^ 'emrigccwadPeriod'
+  -> Val Double -- ^ 'emrigccwadThreshold'
   -> EMRInstanceGroupConfigCloudWatchAlarmDefinition
 emrInstanceGroupConfigCloudWatchAlarmDefinition comparisonOperatorarg metricNamearg periodarg thresholdarg =
   EMRInstanceGroupConfigCloudWatchAlarmDefinition
@@ -90,7 +91,7 @@
 emrigccwadDimensions = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionDimensions (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionDimensions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-evaluationperiods
-emrigccwadEvaluationPeriods :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Maybe (Val Integer'))
+emrigccwadEvaluationPeriods :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Maybe (Val Integer))
 emrigccwadEvaluationPeriods = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionEvaluationPeriods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-metricname
@@ -102,7 +103,7 @@
 emrigccwadNamespace = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionNamespace (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionNamespace = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-period
-emrigccwadPeriod :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Val Integer')
+emrigccwadPeriod :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Val Integer)
 emrigccwadPeriod = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-statistic
@@ -110,7 +111,7 @@
 emrigccwadStatistic = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionStatistic (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionStatistic = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-threshold
-emrigccwadThreshold :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Val Double')
+emrigccwadThreshold :: Lens' EMRInstanceGroupConfigCloudWatchAlarmDefinition (Val Double)
 emrigccwadThreshold = lens _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold (\s a -> s { _eMRInstanceGroupConfigCloudWatchAlarmDefinitionThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-unit
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
 
@@ -27,17 +28,17 @@
   toJSON EMRInstanceGroupConfigConfiguration{..} =
     object $
     catMaybes
-    [ ("Classification" .=) <$> _eMRInstanceGroupConfigConfigurationClassification
-    , ("ConfigurationProperties" .=) <$> _eMRInstanceGroupConfigConfigurationConfigurationProperties
-    , ("Configurations" .=) <$> _eMRInstanceGroupConfigConfigurationConfigurations
+    [ fmap (("Classification",) . toJSON) _eMRInstanceGroupConfigConfigurationClassification
+    , fmap (("ConfigurationProperties",) . toJSON) _eMRInstanceGroupConfigConfigurationConfigurationProperties
+    , fmap (("Configurations",) . toJSON) _eMRInstanceGroupConfigConfigurationConfigurations
     ]
 
 instance FromJSON EMRInstanceGroupConfigConfiguration where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigConfiguration <$>
-      obj .:? "Classification" <*>
-      obj .:? "ConfigurationProperties" <*>
-      obj .:? "Configurations"
+      (obj .:? "Classification") <*>
+      (obj .:? "ConfigurationProperties") <*>
+      (obj .:? "Configurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsBlockDeviceConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
 
@@ -20,22 +21,22 @@
 data EMRInstanceGroupConfigEbsBlockDeviceConfig =
   EMRInstanceGroupConfigEbsBlockDeviceConfig
   { _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumeSpecification :: EMRInstanceGroupConfigVolumeSpecification
-  , _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer')
+  , _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceGroupConfigEbsBlockDeviceConfig where
   toJSON EMRInstanceGroupConfigEbsBlockDeviceConfig{..} =
     object $
     catMaybes
-    [ Just ("VolumeSpecification" .= _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumeSpecification)
-    , ("VolumesPerInstance" .=) <$> _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance
+    [ (Just . ("VolumeSpecification",) . toJSON) _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumeSpecification
+    , fmap (("VolumesPerInstance",) . toJSON . fmap Integer') _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance
     ]
 
 instance FromJSON EMRInstanceGroupConfigEbsBlockDeviceConfig where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigEbsBlockDeviceConfig <$>
-      obj .: "VolumeSpecification" <*>
-      obj .:? "VolumesPerInstance"
+      (obj .: "VolumeSpecification") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumesPerInstance")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigEbsBlockDeviceConfig' containing
@@ -54,5 +55,5 @@
 emrigcebdcVolumeSpecification = lens _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumeSpecification (\s a -> s { _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumeSpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumesperinstance
-emrigcebdcVolumesPerInstance :: Lens' EMRInstanceGroupConfigEbsBlockDeviceConfig (Maybe (Val Integer'))
+emrigcebdcVolumesPerInstance :: Lens' EMRInstanceGroupConfigEbsBlockDeviceConfig (Maybe (Val Integer))
 emrigcebdcVolumesPerInstance = lens _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance (\s a -> s { _eMRInstanceGroupConfigEbsBlockDeviceConfigVolumesPerInstance = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigEbsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
 
@@ -20,22 +21,22 @@
 data EMRInstanceGroupConfigEbsConfiguration =
   EMRInstanceGroupConfigEbsConfiguration
   { _eMRInstanceGroupConfigEbsConfigurationEbsBlockDeviceConfigs :: Maybe [EMRInstanceGroupConfigEbsBlockDeviceConfig]
-  , _eMRInstanceGroupConfigEbsConfigurationEbsOptimized :: Maybe (Val Bool')
+  , _eMRInstanceGroupConfigEbsConfigurationEbsOptimized :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceGroupConfigEbsConfiguration where
   toJSON EMRInstanceGroupConfigEbsConfiguration{..} =
     object $
     catMaybes
-    [ ("EbsBlockDeviceConfigs" .=) <$> _eMRInstanceGroupConfigEbsConfigurationEbsBlockDeviceConfigs
-    , ("EbsOptimized" .=) <$> _eMRInstanceGroupConfigEbsConfigurationEbsOptimized
+    [ fmap (("EbsBlockDeviceConfigs",) . toJSON) _eMRInstanceGroupConfigEbsConfigurationEbsBlockDeviceConfigs
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eMRInstanceGroupConfigEbsConfigurationEbsOptimized
     ]
 
 instance FromJSON EMRInstanceGroupConfigEbsConfiguration where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigEbsConfiguration <$>
-      obj .:? "EbsBlockDeviceConfigs" <*>
-      obj .:? "EbsOptimized"
+      (obj .:? "EbsBlockDeviceConfigs") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigEbsConfiguration' containing
@@ -53,5 +54,5 @@
 emrigcecEbsBlockDeviceConfigs = lens _eMRInstanceGroupConfigEbsConfigurationEbsBlockDeviceConfigs (\s a -> s { _eMRInstanceGroupConfigEbsConfigurationEbsBlockDeviceConfigs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsoptimized
-emrigcecEbsOptimized :: Lens' EMRInstanceGroupConfigEbsConfiguration (Maybe (Val Bool'))
+emrigcecEbsOptimized :: Lens' EMRInstanceGroupConfigEbsConfiguration (Maybe (Val Bool))
 emrigcecEbsOptimized = lens _eMRInstanceGroupConfigEbsConfigurationEbsOptimized (\s a -> s { _eMRInstanceGroupConfigEbsConfigurationEbsOptimized = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigMetricDimension.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html
 
@@ -27,15 +28,15 @@
   toJSON EMRInstanceGroupConfigMetricDimension{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _eMRInstanceGroupConfigMetricDimensionKey)
-    , Just ("Value" .= _eMRInstanceGroupConfigMetricDimensionValue)
+    [ (Just . ("Key",) . toJSON) _eMRInstanceGroupConfigMetricDimensionKey
+    , (Just . ("Value",) . toJSON) _eMRInstanceGroupConfigMetricDimensionValue
     ]
 
 instance FromJSON EMRInstanceGroupConfigMetricDimension where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigMetricDimension <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigMetricDimension' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html
 
@@ -26,15 +27,15 @@
   toJSON EMRInstanceGroupConfigScalingAction{..} =
     object $
     catMaybes
-    [ ("Market" .=) <$> _eMRInstanceGroupConfigScalingActionMarket
-    , Just ("SimpleScalingPolicyConfiguration" .= _eMRInstanceGroupConfigScalingActionSimpleScalingPolicyConfiguration)
+    [ fmap (("Market",) . toJSON) _eMRInstanceGroupConfigScalingActionMarket
+    , (Just . ("SimpleScalingPolicyConfiguration",) . toJSON) _eMRInstanceGroupConfigScalingActionSimpleScalingPolicyConfiguration
     ]
 
 instance FromJSON EMRInstanceGroupConfigScalingAction where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigScalingAction <$>
-      obj .:? "Market" <*>
-      obj .: "SimpleScalingPolicyConfiguration"
+      (obj .:? "Market") <*>
+      (obj .: "SimpleScalingPolicyConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigScalingAction' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingConstraints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html
 
@@ -19,30 +20,30 @@
 -- constructor.
 data EMRInstanceGroupConfigScalingConstraints =
   EMRInstanceGroupConfigScalingConstraints
-  { _eMRInstanceGroupConfigScalingConstraintsMaxCapacity :: Val Integer'
-  , _eMRInstanceGroupConfigScalingConstraintsMinCapacity :: Val Integer'
+  { _eMRInstanceGroupConfigScalingConstraintsMaxCapacity :: Val Integer
+  , _eMRInstanceGroupConfigScalingConstraintsMinCapacity :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceGroupConfigScalingConstraints where
   toJSON EMRInstanceGroupConfigScalingConstraints{..} =
     object $
     catMaybes
-    [ Just ("MaxCapacity" .= _eMRInstanceGroupConfigScalingConstraintsMaxCapacity)
-    , Just ("MinCapacity" .= _eMRInstanceGroupConfigScalingConstraintsMinCapacity)
+    [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _eMRInstanceGroupConfigScalingConstraintsMaxCapacity
+    , (Just . ("MinCapacity",) . toJSON . fmap Integer') _eMRInstanceGroupConfigScalingConstraintsMinCapacity
     ]
 
 instance FromJSON EMRInstanceGroupConfigScalingConstraints where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigScalingConstraints <$>
-      obj .: "MaxCapacity" <*>
-      obj .: "MinCapacity"
+      fmap (fmap unInteger') (obj .: "MaxCapacity") <*>
+      fmap (fmap unInteger') (obj .: "MinCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigScalingConstraints' containing
 -- required fields as arguments.
 emrInstanceGroupConfigScalingConstraints
-  :: Val Integer' -- ^ 'emrigcscMaxCapacity'
-  -> Val Integer' -- ^ 'emrigcscMinCapacity'
+  :: Val Integer -- ^ 'emrigcscMaxCapacity'
+  -> Val Integer -- ^ 'emrigcscMinCapacity'
   -> EMRInstanceGroupConfigScalingConstraints
 emrInstanceGroupConfigScalingConstraints maxCapacityarg minCapacityarg =
   EMRInstanceGroupConfigScalingConstraints
@@ -51,9 +52,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html#cfn-elasticmapreduce-instancegroupconfig-scalingconstraints-maxcapacity
-emrigcscMaxCapacity :: Lens' EMRInstanceGroupConfigScalingConstraints (Val Integer')
+emrigcscMaxCapacity :: Lens' EMRInstanceGroupConfigScalingConstraints (Val Integer)
 emrigcscMaxCapacity = lens _eMRInstanceGroupConfigScalingConstraintsMaxCapacity (\s a -> s { _eMRInstanceGroupConfigScalingConstraintsMaxCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html#cfn-elasticmapreduce-instancegroupconfig-scalingconstraints-mincapacity
-emrigcscMinCapacity :: Lens' EMRInstanceGroupConfigScalingConstraints (Val Integer')
+emrigcscMinCapacity :: Lens' EMRInstanceGroupConfigScalingConstraints (Val Integer)
 emrigcscMinCapacity = lens _eMRInstanceGroupConfigScalingConstraintsMinCapacity (\s a -> s { _eMRInstanceGroupConfigScalingConstraintsMinCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html
 
@@ -29,19 +30,19 @@
   toJSON EMRInstanceGroupConfigScalingRule{..} =
     object $
     catMaybes
-    [ Just ("Action" .= _eMRInstanceGroupConfigScalingRuleAction)
-    , ("Description" .=) <$> _eMRInstanceGroupConfigScalingRuleDescription
-    , Just ("Name" .= _eMRInstanceGroupConfigScalingRuleName)
-    , Just ("Trigger" .= _eMRInstanceGroupConfigScalingRuleTrigger)
+    [ (Just . ("Action",) . toJSON) _eMRInstanceGroupConfigScalingRuleAction
+    , fmap (("Description",) . toJSON) _eMRInstanceGroupConfigScalingRuleDescription
+    , (Just . ("Name",) . toJSON) _eMRInstanceGroupConfigScalingRuleName
+    , (Just . ("Trigger",) . toJSON) _eMRInstanceGroupConfigScalingRuleTrigger
     ]
 
 instance FromJSON EMRInstanceGroupConfigScalingRule where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigScalingRule <$>
-      obj .: "Action" <*>
-      obj .:? "Description" <*>
-      obj .: "Name" <*>
-      obj .: "Trigger"
+      (obj .: "Action") <*>
+      (obj .:? "Description") <*>
+      (obj .: "Name") <*>
+      (obj .: "Trigger")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigScalingRule' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigScalingTrigger.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingtrigger.html
 
@@ -25,13 +26,13 @@
   toJSON EMRInstanceGroupConfigScalingTrigger{..} =
     object $
     catMaybes
-    [ Just ("CloudWatchAlarmDefinition" .= _eMRInstanceGroupConfigScalingTriggerCloudWatchAlarmDefinition)
+    [ (Just . ("CloudWatchAlarmDefinition",) . toJSON) _eMRInstanceGroupConfigScalingTriggerCloudWatchAlarmDefinition
     ]
 
 instance FromJSON EMRInstanceGroupConfigScalingTrigger where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigScalingTrigger <$>
-      obj .: "CloudWatchAlarmDefinition"
+      (obj .: "CloudWatchAlarmDefinition")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigScalingTrigger' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigSimpleScalingPolicyConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html
 
@@ -21,31 +22,31 @@
 data EMRInstanceGroupConfigSimpleScalingPolicyConfiguration =
   EMRInstanceGroupConfigSimpleScalingPolicyConfiguration
   { _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationAdjustmentType :: Maybe (Val Text)
-  , _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown :: Maybe (Val Integer')
-  , _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment :: Val Integer'
+  , _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown :: Maybe (Val Integer)
+  , _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceGroupConfigSimpleScalingPolicyConfiguration where
   toJSON EMRInstanceGroupConfigSimpleScalingPolicyConfiguration{..} =
     object $
     catMaybes
-    [ ("AdjustmentType" .=) <$> _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationAdjustmentType
-    , ("CoolDown" .=) <$> _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown
-    , Just ("ScalingAdjustment" .= _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment)
+    [ fmap (("AdjustmentType",) . toJSON) _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationAdjustmentType
+    , fmap (("CoolDown",) . toJSON . fmap Integer') _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown
+    , (Just . ("ScalingAdjustment",) . toJSON . fmap Integer') _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment
     ]
 
 instance FromJSON EMRInstanceGroupConfigSimpleScalingPolicyConfiguration where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigSimpleScalingPolicyConfiguration <$>
-      obj .:? "AdjustmentType" <*>
-      obj .:? "CoolDown" <*>
-      obj .: "ScalingAdjustment"
+      (obj .:? "AdjustmentType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "CoolDown") <*>
+      fmap (fmap unInteger') (obj .: "ScalingAdjustment")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigSimpleScalingPolicyConfiguration'
 -- containing required fields as arguments.
 emrInstanceGroupConfigSimpleScalingPolicyConfiguration
-  :: Val Integer' -- ^ 'emrigcsspcScalingAdjustment'
+  :: Val Integer -- ^ 'emrigcsspcScalingAdjustment'
   -> EMRInstanceGroupConfigSimpleScalingPolicyConfiguration
 emrInstanceGroupConfigSimpleScalingPolicyConfiguration scalingAdjustmentarg =
   EMRInstanceGroupConfigSimpleScalingPolicyConfiguration
@@ -59,9 +60,9 @@
 emrigcsspcAdjustmentType = lens _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationAdjustmentType (\s a -> s { _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationAdjustmentType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration-cooldown
-emrigcsspcCoolDown :: Lens' EMRInstanceGroupConfigSimpleScalingPolicyConfiguration (Maybe (Val Integer'))
+emrigcsspcCoolDown :: Lens' EMRInstanceGroupConfigSimpleScalingPolicyConfiguration (Maybe (Val Integer))
 emrigcsspcCoolDown = lens _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown (\s a -> s { _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationCoolDown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration-scalingadjustment
-emrigcsspcScalingAdjustment :: Lens' EMRInstanceGroupConfigSimpleScalingPolicyConfiguration (Val Integer')
+emrigcsspcScalingAdjustment :: Lens' EMRInstanceGroupConfigSimpleScalingPolicyConfiguration (Val Integer)
 emrigcsspcScalingAdjustment = lens _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment (\s a -> s { _eMRInstanceGroupConfigSimpleScalingPolicyConfigurationScalingAdjustment = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRInstanceGroupConfigVolumeSpecification.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
 
@@ -19,8 +20,8 @@
 -- constructor.
 data EMRInstanceGroupConfigVolumeSpecification =
   EMRInstanceGroupConfigVolumeSpecification
-  { _eMRInstanceGroupConfigVolumeSpecificationIops :: Maybe (Val Integer')
-  , _eMRInstanceGroupConfigVolumeSpecificationSizeInGB :: Val Integer'
+  { _eMRInstanceGroupConfigVolumeSpecificationIops :: Maybe (Val Integer)
+  , _eMRInstanceGroupConfigVolumeSpecificationSizeInGB :: Val Integer
   , _eMRInstanceGroupConfigVolumeSpecificationVolumeType :: Val Text
   } deriving (Show, Eq)
 
@@ -28,23 +29,23 @@
   toJSON EMRInstanceGroupConfigVolumeSpecification{..} =
     object $
     catMaybes
-    [ ("Iops" .=) <$> _eMRInstanceGroupConfigVolumeSpecificationIops
-    , Just ("SizeInGB" .= _eMRInstanceGroupConfigVolumeSpecificationSizeInGB)
-    , Just ("VolumeType" .= _eMRInstanceGroupConfigVolumeSpecificationVolumeType)
+    [ fmap (("Iops",) . toJSON . fmap Integer') _eMRInstanceGroupConfigVolumeSpecificationIops
+    , (Just . ("SizeInGB",) . toJSON . fmap Integer') _eMRInstanceGroupConfigVolumeSpecificationSizeInGB
+    , (Just . ("VolumeType",) . toJSON) _eMRInstanceGroupConfigVolumeSpecificationVolumeType
     ]
 
 instance FromJSON EMRInstanceGroupConfigVolumeSpecification where
   parseJSON (Object obj) =
     EMRInstanceGroupConfigVolumeSpecification <$>
-      obj .:? "Iops" <*>
-      obj .: "SizeInGB" <*>
-      obj .: "VolumeType"
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      fmap (fmap unInteger') (obj .: "SizeInGB") <*>
+      (obj .: "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfigVolumeSpecification' containing
 -- required fields as arguments.
 emrInstanceGroupConfigVolumeSpecification
-  :: Val Integer' -- ^ 'emrigcvsSizeInGB'
+  :: Val Integer -- ^ 'emrigcvsSizeInGB'
   -> Val Text -- ^ 'emrigcvsVolumeType'
   -> EMRInstanceGroupConfigVolumeSpecification
 emrInstanceGroupConfigVolumeSpecification sizeInGBarg volumeTypearg =
@@ -55,11 +56,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-iops
-emrigcvsIops :: Lens' EMRInstanceGroupConfigVolumeSpecification (Maybe (Val Integer'))
+emrigcvsIops :: Lens' EMRInstanceGroupConfigVolumeSpecification (Maybe (Val Integer))
 emrigcvsIops = lens _eMRInstanceGroupConfigVolumeSpecificationIops (\s a -> s { _eMRInstanceGroupConfigVolumeSpecificationIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-sizeingb
-emrigcvsSizeInGB :: Lens' EMRInstanceGroupConfigVolumeSpecification (Val Integer')
+emrigcvsSizeInGB :: Lens' EMRInstanceGroupConfigVolumeSpecification (Val Integer)
 emrigcvsSizeInGB = lens _eMRInstanceGroupConfigVolumeSpecificationSizeInGB (\s a -> s { _eMRInstanceGroupConfigVolumeSpecificationSizeInGB = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRStepHadoopJarStepConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html
 
@@ -18,7 +19,7 @@
 -- 'emrStepHadoopJarStepConfig' for a more convenient constructor.
 data EMRStepHadoopJarStepConfig =
   EMRStepHadoopJarStepConfig
-  { _eMRStepHadoopJarStepConfigArgs :: Maybe [Val Text]
+  { _eMRStepHadoopJarStepConfigArgs :: Maybe (ValList Text)
   , _eMRStepHadoopJarStepConfigJar :: Val Text
   , _eMRStepHadoopJarStepConfigMainClass :: Maybe (Val Text)
   , _eMRStepHadoopJarStepConfigStepProperties :: Maybe [EMRStepKeyValue]
@@ -28,19 +29,19 @@
   toJSON EMRStepHadoopJarStepConfig{..} =
     object $
     catMaybes
-    [ ("Args" .=) <$> _eMRStepHadoopJarStepConfigArgs
-    , Just ("Jar" .= _eMRStepHadoopJarStepConfigJar)
-    , ("MainClass" .=) <$> _eMRStepHadoopJarStepConfigMainClass
-    , ("StepProperties" .=) <$> _eMRStepHadoopJarStepConfigStepProperties
+    [ fmap (("Args",) . toJSON) _eMRStepHadoopJarStepConfigArgs
+    , (Just . ("Jar",) . toJSON) _eMRStepHadoopJarStepConfigJar
+    , fmap (("MainClass",) . toJSON) _eMRStepHadoopJarStepConfigMainClass
+    , fmap (("StepProperties",) . toJSON) _eMRStepHadoopJarStepConfigStepProperties
     ]
 
 instance FromJSON EMRStepHadoopJarStepConfig where
   parseJSON (Object obj) =
     EMRStepHadoopJarStepConfig <$>
-      obj .:? "Args" <*>
-      obj .: "Jar" <*>
-      obj .:? "MainClass" <*>
-      obj .:? "StepProperties"
+      (obj .:? "Args") <*>
+      (obj .: "Jar") <*>
+      (obj .:? "MainClass") <*>
+      (obj .:? "StepProperties")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRStepHadoopJarStepConfig' containing required fields
@@ -57,7 +58,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-args
-emrshjscArgs :: Lens' EMRStepHadoopJarStepConfig (Maybe [Val Text])
+emrshjscArgs :: Lens' EMRStepHadoopJarStepConfig (Maybe (ValList Text))
 emrshjscArgs = lens _eMRStepHadoopJarStepConfigArgs (\s a -> s { _eMRStepHadoopJarStepConfigArgs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-jar
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs b/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRStepKeyValue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html
 
@@ -26,15 +27,15 @@
   toJSON EMRStepKeyValue{..} =
     object $
     catMaybes
-    [ ("Key" .=) <$> _eMRStepKeyValueKey
-    , ("Value" .=) <$> _eMRStepKeyValueValue
+    [ fmap (("Key",) . toJSON) _eMRStepKeyValueKey
+    , fmap (("Value",) . toJSON) _eMRStepKeyValueValue
     ]
 
 instance FromJSON EMRStepKeyValue where
   parseJSON (Object obj) =
     EMRStepKeyValue <$>
-      obj .:? "Key" <*>
-      obj .:? "Value"
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRStepKeyValue' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElastiCacheReplicationGroupNodeGroupConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html
 
@@ -21,8 +22,8 @@
 data ElastiCacheReplicationGroupNodeGroupConfiguration =
   ElastiCacheReplicationGroupNodeGroupConfiguration
   { _elastiCacheReplicationGroupNodeGroupConfigurationPrimaryAvailabilityZone :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones :: Maybe [Val Text]
-  , _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount :: Maybe (Val Integer')
+  , _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones :: Maybe (ValList Text)
+  , _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount :: Maybe (Val Integer)
   , _elastiCacheReplicationGroupNodeGroupConfigurationSlots :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,19 +31,19 @@
   toJSON ElastiCacheReplicationGroupNodeGroupConfiguration{..} =
     object $
     catMaybes
-    [ ("PrimaryAvailabilityZone" .=) <$> _elastiCacheReplicationGroupNodeGroupConfigurationPrimaryAvailabilityZone
-    , ("ReplicaAvailabilityZones" .=) <$> _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones
-    , ("ReplicaCount" .=) <$> _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount
-    , ("Slots" .=) <$> _elastiCacheReplicationGroupNodeGroupConfigurationSlots
+    [ fmap (("PrimaryAvailabilityZone",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfigurationPrimaryAvailabilityZone
+    , fmap (("ReplicaAvailabilityZones",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones
+    , fmap (("ReplicaCount",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount
+    , fmap (("Slots",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfigurationSlots
     ]
 
 instance FromJSON ElastiCacheReplicationGroupNodeGroupConfiguration where
   parseJSON (Object obj) =
     ElastiCacheReplicationGroupNodeGroupConfiguration <$>
-      obj .:? "PrimaryAvailabilityZone" <*>
-      obj .:? "ReplicaAvailabilityZones" <*>
-      obj .:? "ReplicaCount" <*>
-      obj .:? "Slots"
+      (obj .:? "PrimaryAvailabilityZone") <*>
+      (obj .:? "ReplicaAvailabilityZones") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ReplicaCount") <*>
+      (obj .:? "Slots")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheReplicationGroupNodeGroupConfiguration'
@@ -62,11 +63,11 @@
 ecrgngcPrimaryAvailabilityZone = lens _elastiCacheReplicationGroupNodeGroupConfigurationPrimaryAvailabilityZone (\s a -> s { _elastiCacheReplicationGroupNodeGroupConfigurationPrimaryAvailabilityZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-replicaavailabilityzones
-ecrgngcReplicaAvailabilityZones :: Lens' ElastiCacheReplicationGroupNodeGroupConfiguration (Maybe [Val Text])
+ecrgngcReplicaAvailabilityZones :: Lens' ElastiCacheReplicationGroupNodeGroupConfiguration (Maybe (ValList Text))
 ecrgngcReplicaAvailabilityZones = lens _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones (\s a -> s { _elastiCacheReplicationGroupNodeGroupConfigurationReplicaAvailabilityZones = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-replicacount
-ecrgngcReplicaCount :: Lens' ElastiCacheReplicationGroupNodeGroupConfiguration (Maybe (Val Integer'))
+ecrgngcReplicaCount :: Lens' ElastiCacheReplicationGroupNodeGroupConfiguration (Maybe (Val Integer))
 ecrgngcReplicaCount = lens _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount (\s a -> s { _elastiCacheReplicationGroupNodeGroupConfigurationReplicaCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-slots
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationVersionSourceBundle.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticBeanstalkApplicationVersionSourceBundle{..} =
     object $
     catMaybes
-    [ Just ("S3Bucket" .= _elasticBeanstalkApplicationVersionSourceBundleS3Bucket)
-    , Just ("S3Key" .= _elasticBeanstalkApplicationVersionSourceBundleS3Key)
+    [ (Just . ("S3Bucket",) . toJSON) _elasticBeanstalkApplicationVersionSourceBundleS3Bucket
+    , (Just . ("S3Key",) . toJSON) _elasticBeanstalkApplicationVersionSourceBundleS3Key
     ]
 
 instance FromJSON ElasticBeanstalkApplicationVersionSourceBundle where
   parseJSON (Object obj) =
     ElasticBeanstalkApplicationVersionSourceBundle <$>
-      obj .: "S3Bucket" <*>
-      obj .: "S3Key"
+      (obj .: "S3Bucket") <*>
+      (obj .: "S3Key")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkApplicationVersionSourceBundle'
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
 
@@ -29,17 +30,17 @@
   toJSON ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting{..} =
     object $
     catMaybes
-    [ Just ("Namespace" .= _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace)
-    , Just ("OptionName" .= _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName)
-    , Just ("Value" .= _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue)
+    [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace
+    , (Just . ("OptionName",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName
+    , (Just . ("Value",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue
     ]
 
 instance FromJSON ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting where
   parseJSON (Object obj) =
     ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting <$>
-      obj .: "Namespace" <*>
-      obj .: "OptionName" <*>
-      obj .: "Value"
+      (obj .: "Namespace") <*>
+      (obj .: "OptionName") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateSourceConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-configurationtemplate-sourceconfiguration.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticBeanstalkConfigurationTemplateSourceConfiguration{..} =
     object $
     catMaybes
-    [ Just ("ApplicationName" .= _elasticBeanstalkConfigurationTemplateSourceConfigurationApplicationName)
-    , Just ("TemplateName" .= _elasticBeanstalkConfigurationTemplateSourceConfigurationTemplateName)
+    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfigurationApplicationName
+    , (Just . ("TemplateName",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfigurationTemplateName
     ]
 
 instance FromJSON ElasticBeanstalkConfigurationTemplateSourceConfiguration where
   parseJSON (Object obj) =
     ElasticBeanstalkConfigurationTemplateSourceConfiguration <$>
-      obj .: "ApplicationName" <*>
-      obj .: "TemplateName"
+      (obj .: "ApplicationName") <*>
+      (obj .: "TemplateName")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
 
@@ -28,17 +29,17 @@
   toJSON ElasticBeanstalkEnvironmentOptionSettings{..} =
     object $
     catMaybes
-    [ Just ("Namespace" .= _elasticBeanstalkEnvironmentOptionSettingsNamespace)
-    , Just ("OptionName" .= _elasticBeanstalkEnvironmentOptionSettingsOptionName)
-    , Just ("Value" .= _elasticBeanstalkEnvironmentOptionSettingsValue)
+    [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsNamespace
+    , (Just . ("OptionName",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsOptionName
+    , (Just . ("Value",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsValue
     ]
 
 instance FromJSON ElasticBeanstalkEnvironmentOptionSettings where
   parseJSON (Object obj) =
     ElasticBeanstalkEnvironmentOptionSettings <$>
-      obj .: "Namespace" <*>
-      obj .: "OptionName" <*>
-      obj .: "Value"
+      (obj .: "Namespace") <*>
+      (obj .: "OptionName") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkEnvironmentOptionSettings' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentTier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html
 
@@ -27,17 +28,17 @@
   toJSON ElasticBeanstalkEnvironmentTier{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _elasticBeanstalkEnvironmentTierName
-    , ("Type" .=) <$> _elasticBeanstalkEnvironmentTierType
-    , ("Version" .=) <$> _elasticBeanstalkEnvironmentTierVersion
+    [ fmap (("Name",) . toJSON) _elasticBeanstalkEnvironmentTierName
+    , fmap (("Type",) . toJSON) _elasticBeanstalkEnvironmentTierType
+    , fmap (("Version",) . toJSON) _elasticBeanstalkEnvironmentTierVersion
     ]
 
 instance FromJSON ElasticBeanstalkEnvironmentTier where
   parseJSON (Object obj) =
     ElasticBeanstalkEnvironmentTier <$>
-      obj .:? "Name" <*>
-      obj .:? "Type" <*>
-      obj .:? "Version"
+      (obj .:? "Name") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkEnvironmentTier' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAccessLoggingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html
 
@@ -20,8 +21,8 @@
 -- convenient constructor.
 data ElasticLoadBalancingLoadBalancerAccessLoggingPolicy =
   ElasticLoadBalancingLoadBalancerAccessLoggingPolicy
-  { _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval :: Maybe (Val Integer')
-  , _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled :: Val Bool'
+  { _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval :: Maybe (Val Integer)
+  , _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled :: Val Bool
   , _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketName :: Val Text
   , _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketPrefix :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -30,25 +31,25 @@
   toJSON ElasticLoadBalancingLoadBalancerAccessLoggingPolicy{..} =
     object $
     catMaybes
-    [ ("EmitInterval" .=) <$> _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval
-    , Just ("Enabled" .= _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled)
-    , Just ("S3BucketName" .= _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketName)
-    , ("S3BucketPrefix" .=) <$> _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketPrefix
+    [ fmap (("EmitInterval",) . toJSON . fmap Integer') _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled
+    , (Just . ("S3BucketName",) . toJSON) _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketName
+    , fmap (("S3BucketPrefix",) . toJSON) _elasticLoadBalancingLoadBalancerAccessLoggingPolicyS3BucketPrefix
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerAccessLoggingPolicy where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerAccessLoggingPolicy <$>
-      obj .:? "EmitInterval" <*>
-      obj .: "Enabled" <*>
-      obj .: "S3BucketName" <*>
-      obj .:? "S3BucketPrefix"
+      fmap (fmap (fmap unInteger')) (obj .:? "EmitInterval") <*>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .: "S3BucketName") <*>
+      (obj .:? "S3BucketPrefix")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancerAccessLoggingPolicy'
 -- containing required fields as arguments.
 elasticLoadBalancingLoadBalancerAccessLoggingPolicy
-  :: Val Bool' -- ^ 'elblbalpEnabled'
+  :: Val Bool -- ^ 'elblbalpEnabled'
   -> Val Text -- ^ 'elblbalpS3BucketName'
   -> ElasticLoadBalancingLoadBalancerAccessLoggingPolicy
 elasticLoadBalancingLoadBalancerAccessLoggingPolicy enabledarg s3BucketNamearg =
@@ -60,11 +61,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-emitinterval
-elblbalpEmitInterval :: Lens' ElasticLoadBalancingLoadBalancerAccessLoggingPolicy (Maybe (Val Integer'))
+elblbalpEmitInterval :: Lens' ElasticLoadBalancingLoadBalancerAccessLoggingPolicy (Maybe (Val Integer))
 elblbalpEmitInterval = lens _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval (\s a -> s { _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEmitInterval = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-enabled
-elblbalpEnabled :: Lens' ElasticLoadBalancingLoadBalancerAccessLoggingPolicy (Val Bool')
+elblbalpEnabled :: Lens' ElasticLoadBalancingLoadBalancerAccessLoggingPolicy (Val Bool)
 elblbalpEnabled = lens _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled (\s a -> s { _elasticLoadBalancingLoadBalancerAccessLoggingPolicyEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-s3bucketname
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy{..} =
     object $
     catMaybes
-    [ Just ("CookieName" .= _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicyCookieName)
-    , Just ("PolicyName" .= _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicyPolicyName)
+    [ (Just . ("CookieName",) . toJSON) _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicyCookieName
+    , (Just . ("PolicyName",) . toJSON) _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicyPolicyName
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy <$>
-      obj .: "CookieName" <*>
-      obj .: "PolicyName"
+      (obj .: "CookieName") <*>
+      (obj .: "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html
 
@@ -20,30 +21,30 @@
 -- convenient constructor.
 data ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy =
   ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy
-  { _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled :: Val Bool'
-  , _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout :: Maybe (Val Integer')
+  { _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled :: Val Bool
+  , _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy where
   toJSON ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy{..} =
     object $
     catMaybes
-    [ Just ("Enabled" .= _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled)
-    , ("Timeout" .=) <$> _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout
+    [ (Just . ("Enabled",) . toJSON . fmap Bool') _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled
+    , fmap (("Timeout",) . toJSON . fmap Integer') _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy <$>
-      obj .: "Enabled" <*>
-      obj .:? "Timeout"
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Timeout")
   parseJSON _ = mempty
 
 -- | Constructor for
 -- 'ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy' containing
 -- required fields as arguments.
 elasticLoadBalancingLoadBalancerConnectionDrainingPolicy
-  :: Val Bool' -- ^ 'elblbcdpEnabled'
+  :: Val Bool -- ^ 'elblbcdpEnabled'
   -> ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy
 elasticLoadBalancingLoadBalancerConnectionDrainingPolicy enabledarg =
   ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy
@@ -52,9 +53,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-enabled
-elblbcdpEnabled :: Lens' ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy (Val Bool')
+elblbcdpEnabled :: Lens' ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy (Val Bool)
 elblbcdpEnabled = lens _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled (\s a -> s { _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-timeout
-elblbcdpTimeout :: Lens' ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy (Maybe (Val Integer'))
+elblbcdpTimeout :: Lens' ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy (Maybe (Val Integer))
 elblbcdpTimeout = lens _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout (\s a -> s { _elasticLoadBalancingLoadBalancerConnectionDrainingPolicyTimeout = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerConnectionSettings.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html
 
@@ -20,26 +21,26 @@
 -- convenient constructor.
 data ElasticLoadBalancingLoadBalancerConnectionSettings =
   ElasticLoadBalancingLoadBalancerConnectionSettings
-  { _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout :: Val Integer'
+  { _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON ElasticLoadBalancingLoadBalancerConnectionSettings where
   toJSON ElasticLoadBalancingLoadBalancerConnectionSettings{..} =
     object $
     catMaybes
-    [ Just ("IdleTimeout" .= _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout)
+    [ (Just . ("IdleTimeout",) . toJSON . fmap Integer') _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerConnectionSettings where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerConnectionSettings <$>
-      obj .: "IdleTimeout"
+      fmap (fmap unInteger') (obj .: "IdleTimeout")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancerConnectionSettings'
 -- containing required fields as arguments.
 elasticLoadBalancingLoadBalancerConnectionSettings
-  :: Val Integer' -- ^ 'elblbcsIdleTimeout'
+  :: Val Integer -- ^ 'elblbcsIdleTimeout'
   -> ElasticLoadBalancingLoadBalancerConnectionSettings
 elasticLoadBalancingLoadBalancerConnectionSettings idleTimeoutarg =
   ElasticLoadBalancingLoadBalancerConnectionSettings
@@ -47,5 +48,5 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html#cfn-elb-connectionsettings-idletimeout
-elblbcsIdleTimeout :: Lens' ElasticLoadBalancingLoadBalancerConnectionSettings (Val Integer')
+elblbcsIdleTimeout :: Lens' ElasticLoadBalancingLoadBalancerConnectionSettings (Val Integer)
 elblbcsIdleTimeout = lens _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout (\s a -> s { _elasticLoadBalancingLoadBalancerConnectionSettingsIdleTimeout = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerHealthCheck.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html
 
@@ -31,21 +32,21 @@
   toJSON ElasticLoadBalancingLoadBalancerHealthCheck{..} =
     object $
     catMaybes
-    [ Just ("HealthyThreshold" .= _elasticLoadBalancingLoadBalancerHealthCheckHealthyThreshold)
-    , Just ("Interval" .= _elasticLoadBalancingLoadBalancerHealthCheckInterval)
-    , Just ("Target" .= _elasticLoadBalancingLoadBalancerHealthCheckTarget)
-    , Just ("Timeout" .= _elasticLoadBalancingLoadBalancerHealthCheckTimeout)
-    , Just ("UnhealthyThreshold" .= _elasticLoadBalancingLoadBalancerHealthCheckUnhealthyThreshold)
+    [ (Just . ("HealthyThreshold",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheckHealthyThreshold
+    , (Just . ("Interval",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheckInterval
+    , (Just . ("Target",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheckTarget
+    , (Just . ("Timeout",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheckTimeout
+    , (Just . ("UnhealthyThreshold",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheckUnhealthyThreshold
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerHealthCheck where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerHealthCheck <$>
-      obj .: "HealthyThreshold" <*>
-      obj .: "Interval" <*>
-      obj .: "Target" <*>
-      obj .: "Timeout" <*>
-      obj .: "UnhealthyThreshold"
+      (obj .: "HealthyThreshold") <*>
+      (obj .: "Interval") <*>
+      (obj .: "Target") <*>
+      (obj .: "Timeout") <*>
+      (obj .: "UnhealthyThreshold")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancerHealthCheck' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy{..} =
     object $
     catMaybes
-    [ ("CookieExpirationPeriod" .=) <$> _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicyCookieExpirationPeriod
-    , ("PolicyName" .=) <$> _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicyPolicyName
+    [ fmap (("CookieExpirationPeriod",) . toJSON) _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicyCookieExpirationPeriod
+    , fmap (("PolicyName",) . toJSON) _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicyPolicyName
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy <$>
-      obj .:? "CookieExpirationPeriod" <*>
-      obj .:? "PolicyName"
+      (obj .:? "CookieExpirationPeriod") <*>
+      (obj .:? "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerListeners.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html
 
@@ -22,7 +23,7 @@
   { _elasticLoadBalancingLoadBalancerListenersInstancePort :: Val Text
   , _elasticLoadBalancingLoadBalancerListenersInstanceProtocol :: Maybe (Val Text)
   , _elasticLoadBalancingLoadBalancerListenersLoadBalancerPort :: Val Text
-  , _elasticLoadBalancingLoadBalancerListenersPolicyNames :: Maybe [Val Text]
+  , _elasticLoadBalancingLoadBalancerListenersPolicyNames :: Maybe (ValList Text)
   , _elasticLoadBalancingLoadBalancerListenersProtocol :: Val Text
   , _elasticLoadBalancingLoadBalancerListenersSSLCertificateId :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -31,23 +32,23 @@
   toJSON ElasticLoadBalancingLoadBalancerListeners{..} =
     object $
     catMaybes
-    [ Just ("InstancePort" .= _elasticLoadBalancingLoadBalancerListenersInstancePort)
-    , ("InstanceProtocol" .=) <$> _elasticLoadBalancingLoadBalancerListenersInstanceProtocol
-    , Just ("LoadBalancerPort" .= _elasticLoadBalancingLoadBalancerListenersLoadBalancerPort)
-    , ("PolicyNames" .=) <$> _elasticLoadBalancingLoadBalancerListenersPolicyNames
-    , Just ("Protocol" .= _elasticLoadBalancingLoadBalancerListenersProtocol)
-    , ("SSLCertificateId" .=) <$> _elasticLoadBalancingLoadBalancerListenersSSLCertificateId
+    [ (Just . ("InstancePort",) . toJSON) _elasticLoadBalancingLoadBalancerListenersInstancePort
+    , fmap (("InstanceProtocol",) . toJSON) _elasticLoadBalancingLoadBalancerListenersInstanceProtocol
+    , (Just . ("LoadBalancerPort",) . toJSON) _elasticLoadBalancingLoadBalancerListenersLoadBalancerPort
+    , fmap (("PolicyNames",) . toJSON) _elasticLoadBalancingLoadBalancerListenersPolicyNames
+    , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingLoadBalancerListenersProtocol
+    , fmap (("SSLCertificateId",) . toJSON) _elasticLoadBalancingLoadBalancerListenersSSLCertificateId
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerListeners where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerListeners <$>
-      obj .: "InstancePort" <*>
-      obj .:? "InstanceProtocol" <*>
-      obj .: "LoadBalancerPort" <*>
-      obj .:? "PolicyNames" <*>
-      obj .: "Protocol" <*>
-      obj .:? "SSLCertificateId"
+      (obj .: "InstancePort") <*>
+      (obj .:? "InstanceProtocol") <*>
+      (obj .: "LoadBalancerPort") <*>
+      (obj .:? "PolicyNames") <*>
+      (obj .: "Protocol") <*>
+      (obj .:? "SSLCertificateId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancerListeners' containing
@@ -80,7 +81,7 @@
 elblblLoadBalancerPort = lens _elasticLoadBalancingLoadBalancerListenersLoadBalancerPort (\s a -> s { _elasticLoadBalancingLoadBalancerListenersLoadBalancerPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-policynames
-elblblPolicyNames :: Lens' ElasticLoadBalancingLoadBalancerListeners (Maybe [Val Text])
+elblblPolicyNames :: Lens' ElasticLoadBalancingLoadBalancerListeners (Maybe (ValList Text))
 elblblPolicyNames = lens _elasticLoadBalancingLoadBalancerListenersPolicyNames (\s a -> s { _elasticLoadBalancingLoadBalancerListenersPolicyNames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-protocol
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingLoadBalancerPolicies.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html
 
@@ -20,8 +21,8 @@
 data ElasticLoadBalancingLoadBalancerPolicies =
   ElasticLoadBalancingLoadBalancerPolicies
   { _elasticLoadBalancingLoadBalancerPoliciesAttributes :: [Object]
-  , _elasticLoadBalancingLoadBalancerPoliciesInstancePorts :: Maybe [Val Text]
-  , _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts :: Maybe [Val Text]
+  , _elasticLoadBalancingLoadBalancerPoliciesInstancePorts :: Maybe (ValList Text)
+  , _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts :: Maybe (ValList Text)
   , _elasticLoadBalancingLoadBalancerPoliciesPolicyName :: Val Text
   , _elasticLoadBalancingLoadBalancerPoliciesPolicyType :: Val Text
   } deriving (Show, Eq)
@@ -30,21 +31,21 @@
   toJSON ElasticLoadBalancingLoadBalancerPolicies{..} =
     object $
     catMaybes
-    [ Just ("Attributes" .= _elasticLoadBalancingLoadBalancerPoliciesAttributes)
-    , ("InstancePorts" .=) <$> _elasticLoadBalancingLoadBalancerPoliciesInstancePorts
-    , ("LoadBalancerPorts" .=) <$> _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts
-    , Just ("PolicyName" .= _elasticLoadBalancingLoadBalancerPoliciesPolicyName)
-    , Just ("PolicyType" .= _elasticLoadBalancingLoadBalancerPoliciesPolicyType)
+    [ (Just . ("Attributes",) . toJSON) _elasticLoadBalancingLoadBalancerPoliciesAttributes
+    , fmap (("InstancePorts",) . toJSON) _elasticLoadBalancingLoadBalancerPoliciesInstancePorts
+    , fmap (("LoadBalancerPorts",) . toJSON) _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts
+    , (Just . ("PolicyName",) . toJSON) _elasticLoadBalancingLoadBalancerPoliciesPolicyName
+    , (Just . ("PolicyType",) . toJSON) _elasticLoadBalancingLoadBalancerPoliciesPolicyType
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancerPolicies where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancerPolicies <$>
-      obj .: "Attributes" <*>
-      obj .:? "InstancePorts" <*>
-      obj .:? "LoadBalancerPorts" <*>
-      obj .: "PolicyName" <*>
-      obj .: "PolicyType"
+      (obj .: "Attributes") <*>
+      (obj .:? "InstancePorts") <*>
+      (obj .:? "LoadBalancerPorts") <*>
+      (obj .: "PolicyName") <*>
+      (obj .: "PolicyType")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancerPolicies' containing
@@ -68,11 +69,11 @@
 elblbpAttributes = lens _elasticLoadBalancingLoadBalancerPoliciesAttributes (\s a -> s { _elasticLoadBalancingLoadBalancerPoliciesAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-instanceports
-elblbpInstancePorts :: Lens' ElasticLoadBalancingLoadBalancerPolicies (Maybe [Val Text])
+elblbpInstancePorts :: Lens' ElasticLoadBalancingLoadBalancerPolicies (Maybe (ValList Text))
 elblbpInstancePorts = lens _elasticLoadBalancingLoadBalancerPoliciesInstancePorts (\s a -> s { _elasticLoadBalancingLoadBalancerPoliciesInstancePorts = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-loadbalancerports
-elblbpLoadBalancerPorts :: Lens' ElasticLoadBalancingLoadBalancerPolicies (Maybe [Val Text])
+elblbpLoadBalancerPorts :: Lens' ElasticLoadBalancingLoadBalancerPolicies (Maybe (ValList Text))
 elblbpLoadBalancerPorts = lens _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts (\s a -> s { _elasticLoadBalancingLoadBalancerPoliciesLoadBalancerPorts = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-policyname
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html
 
@@ -26,15 +27,15 @@
   toJSON ElasticLoadBalancingV2ListenerAction{..} =
     object $
     catMaybes
-    [ Just ("TargetGroupArn" .= _elasticLoadBalancingV2ListenerActionTargetGroupArn)
-    , Just ("Type" .= _elasticLoadBalancingV2ListenerActionType)
+    [ (Just . ("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerActionTargetGroupArn
+    , (Just . ("Type",) . toJSON) _elasticLoadBalancingV2ListenerActionType
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerAction where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerAction <$>
-      obj .: "TargetGroupArn" <*>
-      obj .: "Type"
+      (obj .: "TargetGroupArn") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerAction' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
 
@@ -26,13 +27,13 @@
   toJSON ElasticLoadBalancingV2ListenerCertificate{..} =
     object $
     catMaybes
-    [ ("CertificateArn" .=) <$> _elasticLoadBalancingV2ListenerCertificateCertificateArn
+    [ fmap (("CertificateArn",) . toJSON) _elasticLoadBalancingV2ListenerCertificateCertificateArn
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerCertificate where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerCertificate <$>
-      obj .:? "CertificateArn"
+      (obj .:? "CertificateArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerCertificate' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html
 
@@ -27,15 +28,15 @@
   toJSON ElasticLoadBalancingV2ListenerRuleAction{..} =
     object $
     catMaybes
-    [ Just ("TargetGroupArn" .= _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn)
-    , Just ("Type" .= _elasticLoadBalancingV2ListenerRuleActionType)
+    [ (Just . ("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn
+    , (Just . ("Type",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionType
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerRuleAction where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerRuleAction <$>
-      obj .: "TargetGroupArn" <*>
-      obj .: "Type"
+      (obj .: "TargetGroupArn") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerRuleAction' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html
 
@@ -21,22 +22,22 @@
 data ElasticLoadBalancingV2ListenerRuleRuleCondition =
   ElasticLoadBalancingV2ListenerRuleRuleCondition
   { _elasticLoadBalancingV2ListenerRuleRuleConditionField :: Maybe (Val Text)
-  , _elasticLoadBalancingV2ListenerRuleRuleConditionValues :: Maybe [Val Text]
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionValues :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticLoadBalancingV2ListenerRuleRuleCondition where
   toJSON ElasticLoadBalancingV2ListenerRuleRuleCondition{..} =
     object $
     catMaybes
-    [ ("Field" .=) <$> _elasticLoadBalancingV2ListenerRuleRuleConditionField
-    , ("Values" .=) <$> _elasticLoadBalancingV2ListenerRuleRuleConditionValues
+    [ fmap (("Field",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionField
+    , fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionValues
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerRuleRuleCondition where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerRuleRuleCondition <$>
-      obj .:? "Field" <*>
-      obj .:? "Values"
+      (obj .:? "Field") <*>
+      (obj .:? "Values")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerRuleRuleCondition'
@@ -54,5 +55,5 @@
 elbvlrrcField = lens _elasticLoadBalancingV2ListenerRuleRuleConditionField (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionField = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values
-elbvlrrcValues :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe [Val Text])
+elbvlrrcValues :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe (ValList Text))
 elbvlrrcValues = lens _elasticLoadBalancingV2ListenerRuleRuleConditionValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute{..} =
     object $
     catMaybes
-    [ ("Key" .=) <$> _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributeKey
-    , ("Value" .=) <$> _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributeValue
+    [ fmap (("Key",) . toJSON) _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributeKey
+    , fmap (("Value",) . toJSON) _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributeValue
     ]
 
 instance FromJSON ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute <$>
-      obj .:? "Key" <*>
-      obj .:? "Value"
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute'
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupMatcher.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-matcher.html
 
@@ -26,13 +27,13 @@
   toJSON ElasticLoadBalancingV2TargetGroupMatcher{..} =
     object $
     catMaybes
-    [ Just ("HttpCode" .= _elasticLoadBalancingV2TargetGroupMatcherHttpCode)
+    [ (Just . ("HttpCode",) . toJSON) _elasticLoadBalancingV2TargetGroupMatcherHttpCode
     ]
 
 instance FromJSON ElasticLoadBalancingV2TargetGroupMatcher where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2TargetGroupMatcher <$>
-      obj .: "HttpCode"
+      (obj .: "HttpCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2TargetGroupMatcher' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html
 
@@ -21,22 +22,22 @@
 data ElasticLoadBalancingV2TargetGroupTargetDescription =
   ElasticLoadBalancingV2TargetGroupTargetDescription
   { _elasticLoadBalancingV2TargetGroupTargetDescriptionId :: Val Text
-  , _elasticLoadBalancingV2TargetGroupTargetDescriptionPort :: Maybe (Val Integer')
+  , _elasticLoadBalancingV2TargetGroupTargetDescriptionPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticLoadBalancingV2TargetGroupTargetDescription where
   toJSON ElasticLoadBalancingV2TargetGroupTargetDescription{..} =
     object $
     catMaybes
-    [ Just ("Id" .= _elasticLoadBalancingV2TargetGroupTargetDescriptionId)
-    , ("Port" .=) <$> _elasticLoadBalancingV2TargetGroupTargetDescriptionPort
+    [ (Just . ("Id",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetDescriptionId
+    , fmap (("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupTargetDescriptionPort
     ]
 
 instance FromJSON ElasticLoadBalancingV2TargetGroupTargetDescription where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2TargetGroupTargetDescription <$>
-      obj .: "Id" <*>
-      obj .:? "Port"
+      (obj .: "Id") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2TargetGroupTargetDescription'
@@ -55,5 +56,5 @@
 elbvtgtdId = lens _elasticLoadBalancingV2TargetGroupTargetDescriptionId (\s a -> s { _elasticLoadBalancingV2TargetGroupTargetDescriptionId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html#cfn-elasticloadbalancingv2-targetgroup-targetdescription-port
-elbvtgtdPort :: Lens' ElasticLoadBalancingV2TargetGroupTargetDescription (Maybe (Val Integer'))
+elbvtgtdPort :: Lens' ElasticLoadBalancingV2TargetGroupTargetDescription (Maybe (Val Integer))
 elbvtgtdPort = lens _elasticLoadBalancingV2TargetGroupTargetDescriptionPort (\s a -> s { _elasticLoadBalancingV2TargetGroupTargetDescriptionPort = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetGroupAttribute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattributes.html
 
@@ -28,15 +29,15 @@
   toJSON ElasticLoadBalancingV2TargetGroupTargetGroupAttribute{..} =
     object $
     catMaybes
-    [ ("Key" .=) <$> _elasticLoadBalancingV2TargetGroupTargetGroupAttributeKey
-    , ("Value" .=) <$> _elasticLoadBalancingV2TargetGroupTargetGroupAttributeValue
+    [ fmap (("Key",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetGroupAttributeKey
+    , fmap (("Value",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetGroupAttributeValue
     ]
 
 instance FromJSON ElasticLoadBalancingV2TargetGroupTargetGroupAttribute where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2TargetGroupTargetGroupAttribute <$>
-      obj .:? "Key" <*>
-      obj .:? "Value"
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2TargetGroupTargetGroupAttribute'
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEBSOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html
 
@@ -18,9 +19,9 @@
 -- 'elasticsearchDomainEBSOptions' for a more convenient constructor.
 data ElasticsearchDomainEBSOptions =
   ElasticsearchDomainEBSOptions
-  { _elasticsearchDomainEBSOptionsEBSEnabled :: Maybe (Val Bool')
-  , _elasticsearchDomainEBSOptionsIops :: Maybe (Val Integer')
-  , _elasticsearchDomainEBSOptionsVolumeSize :: Maybe (Val Integer')
+  { _elasticsearchDomainEBSOptionsEBSEnabled :: Maybe (Val Bool)
+  , _elasticsearchDomainEBSOptionsIops :: Maybe (Val Integer)
+  , _elasticsearchDomainEBSOptionsVolumeSize :: Maybe (Val Integer)
   , _elasticsearchDomainEBSOptionsVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -28,19 +29,19 @@
   toJSON ElasticsearchDomainEBSOptions{..} =
     object $
     catMaybes
-    [ ("EBSEnabled" .=) <$> _elasticsearchDomainEBSOptionsEBSEnabled
-    , ("Iops" .=) <$> _elasticsearchDomainEBSOptionsIops
-    , ("VolumeSize" .=) <$> _elasticsearchDomainEBSOptionsVolumeSize
-    , ("VolumeType" .=) <$> _elasticsearchDomainEBSOptionsVolumeType
+    [ fmap (("EBSEnabled",) . toJSON . fmap Bool') _elasticsearchDomainEBSOptionsEBSEnabled
+    , fmap (("Iops",) . toJSON . fmap Integer') _elasticsearchDomainEBSOptionsIops
+    , fmap (("VolumeSize",) . toJSON . fmap Integer') _elasticsearchDomainEBSOptionsVolumeSize
+    , fmap (("VolumeType",) . toJSON) _elasticsearchDomainEBSOptionsVolumeType
     ]
 
 instance FromJSON ElasticsearchDomainEBSOptions where
   parseJSON (Object obj) =
     ElasticsearchDomainEBSOptions <$>
-      obj .:? "EBSEnabled" <*>
-      obj .:? "Iops" <*>
-      obj .:? "VolumeSize" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "EBSEnabled") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumeSize") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticsearchDomainEBSOptions' containing required
@@ -56,15 +57,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-ebsenabled
-edebsoEBSEnabled :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Bool'))
+edebsoEBSEnabled :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Bool))
 edebsoEBSEnabled = lens _elasticsearchDomainEBSOptionsEBSEnabled (\s a -> s { _elasticsearchDomainEBSOptionsEBSEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-iops
-edebsoIops :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Integer'))
+edebsoIops :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Integer))
 edebsoIops = lens _elasticsearchDomainEBSOptionsIops (\s a -> s { _elasticsearchDomainEBSOptionsIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumesize
-edebsoVolumeSize :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Integer'))
+edebsoVolumeSize :: Lens' ElasticsearchDomainEBSOptions (Maybe (Val Integer))
 edebsoVolumeSize = lens _elasticsearchDomainEBSOptionsVolumeSize (\s a -> s { _elasticsearchDomainEBSOptionsVolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainElasticsearchClusterConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html
 
@@ -20,35 +21,35 @@
 -- constructor.
 data ElasticsearchDomainElasticsearchClusterConfig =
   ElasticsearchDomainElasticsearchClusterConfig
-  { _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount :: Maybe (Val Integer')
-  , _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled :: Maybe (Val Bool')
+  { _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount :: Maybe (Val Integer)
+  , _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled :: Maybe (Val Bool)
   , _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterType :: Maybe (Val Text)
-  , _elasticsearchDomainElasticsearchClusterConfigInstanceCount :: Maybe (Val Integer')
+  , _elasticsearchDomainElasticsearchClusterConfigInstanceCount :: Maybe (Val Integer)
   , _elasticsearchDomainElasticsearchClusterConfigInstanceType :: Maybe (Val Text)
-  , _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled :: Maybe (Val Bool')
+  , _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticsearchDomainElasticsearchClusterConfig where
   toJSON ElasticsearchDomainElasticsearchClusterConfig{..} =
     object $
     catMaybes
-    [ ("DedicatedMasterCount" .=) <$> _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount
-    , ("DedicatedMasterEnabled" .=) <$> _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled
-    , ("DedicatedMasterType" .=) <$> _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterType
-    , ("InstanceCount" .=) <$> _elasticsearchDomainElasticsearchClusterConfigInstanceCount
-    , ("InstanceType" .=) <$> _elasticsearchDomainElasticsearchClusterConfigInstanceType
-    , ("ZoneAwarenessEnabled" .=) <$> _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled
+    [ fmap (("DedicatedMasterCount",) . toJSON . fmap Integer') _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount
+    , fmap (("DedicatedMasterEnabled",) . toJSON . fmap Bool') _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled
+    , fmap (("DedicatedMasterType",) . toJSON) _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterType
+    , fmap (("InstanceCount",) . toJSON . fmap Integer') _elasticsearchDomainElasticsearchClusterConfigInstanceCount
+    , fmap (("InstanceType",) . toJSON) _elasticsearchDomainElasticsearchClusterConfigInstanceType
+    , fmap (("ZoneAwarenessEnabled",) . toJSON . fmap Bool') _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled
     ]
 
 instance FromJSON ElasticsearchDomainElasticsearchClusterConfig where
   parseJSON (Object obj) =
     ElasticsearchDomainElasticsearchClusterConfig <$>
-      obj .:? "DedicatedMasterCount" <*>
-      obj .:? "DedicatedMasterEnabled" <*>
-      obj .:? "DedicatedMasterType" <*>
-      obj .:? "InstanceCount" <*>
-      obj .:? "InstanceType" <*>
-      obj .:? "ZoneAwarenessEnabled"
+      fmap (fmap (fmap unInteger')) (obj .:? "DedicatedMasterCount") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DedicatedMasterEnabled") <*>
+      (obj .:? "DedicatedMasterType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "InstanceCount") <*>
+      (obj .:? "InstanceType") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ZoneAwarenessEnabled")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticsearchDomainElasticsearchClusterConfig'
@@ -66,11 +67,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastercount
-edeccDedicatedMasterCount :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Integer'))
+edeccDedicatedMasterCount :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Integer))
 edeccDedicatedMasterCount = lens _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmasterenabled
-edeccDedicatedMasterEnabled :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Bool'))
+edeccDedicatedMasterEnabled :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Bool))
 edeccDedicatedMasterEnabled = lens _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastertype
@@ -78,7 +79,7 @@
 edeccDedicatedMasterType = lens _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterType (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigDedicatedMasterType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instancecount
-edeccInstanceCount :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Integer'))
+edeccInstanceCount :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Integer))
 edeccInstanceCount = lens _elasticsearchDomainElasticsearchClusterConfigInstanceCount (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigInstanceCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instnacetype
@@ -86,5 +87,5 @@
 edeccInstanceType = lens _elasticsearchDomainElasticsearchClusterConfigInstanceType (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-zoneawarenessenabled
-edeccZoneAwarenessEnabled :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Bool'))
+edeccZoneAwarenessEnabled :: Lens' ElasticsearchDomainElasticsearchClusterConfig (Maybe (Val Bool))
 edeccZoneAwarenessEnabled = lens _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled (\s a -> s { _elasticsearchDomainElasticsearchClusterConfigZoneAwarenessEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainSnapshotOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html
 
@@ -18,20 +19,20 @@
 -- 'elasticsearchDomainSnapshotOptions' for a more convenient constructor.
 data ElasticsearchDomainSnapshotOptions =
   ElasticsearchDomainSnapshotOptions
-  { _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour :: Maybe (Val Integer')
+  { _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticsearchDomainSnapshotOptions where
   toJSON ElasticsearchDomainSnapshotOptions{..} =
     object $
     catMaybes
-    [ ("AutomatedSnapshotStartHour" .=) <$> _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour
+    [ fmap (("AutomatedSnapshotStartHour",) . toJSON . fmap Integer') _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour
     ]
 
 instance FromJSON ElasticsearchDomainSnapshotOptions where
   parseJSON (Object obj) =
     ElasticsearchDomainSnapshotOptions <$>
-      obj .:? "AutomatedSnapshotStartHour"
+      fmap (fmap (fmap unInteger')) (obj .:? "AutomatedSnapshotStartHour")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticsearchDomainSnapshotOptions' containing required
@@ -44,5 +45,5 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html#cfn-elasticsearch-domain-snapshotoptions-automatedsnapshotstarthour
-edsoAutomatedSnapshotStartHour :: Lens' ElasticsearchDomainSnapshotOptions (Maybe (Val Integer'))
+edsoAutomatedSnapshotStartHour :: Lens' ElasticsearchDomainSnapshotOptions (Maybe (Val Integer))
 edsoAutomatedSnapshotStartHour = lens _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour (\s a -> s { _elasticsearchDomainSnapshotOptionsAutomatedSnapshotStartHour = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs b/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EventsRuleTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
 
@@ -29,21 +30,21 @@
   toJSON EventsRuleTarget{..} =
     object $
     catMaybes
-    [ Just ("Arn" .= _eventsRuleTargetArn)
-    , Just ("Id" .= _eventsRuleTargetId)
-    , ("Input" .=) <$> _eventsRuleTargetInput
-    , ("InputPath" .=) <$> _eventsRuleTargetInputPath
-    , ("RoleArn" .=) <$> _eventsRuleTargetRoleArn
+    [ (Just . ("Arn",) . toJSON) _eventsRuleTargetArn
+    , (Just . ("Id",) . toJSON) _eventsRuleTargetId
+    , fmap (("Input",) . toJSON) _eventsRuleTargetInput
+    , fmap (("InputPath",) . toJSON) _eventsRuleTargetInputPath
+    , fmap (("RoleArn",) . toJSON) _eventsRuleTargetRoleArn
     ]
 
 instance FromJSON EventsRuleTarget where
   parseJSON (Object obj) =
     EventsRuleTarget <$>
-      obj .: "Arn" <*>
-      obj .: "Id" <*>
-      obj .:? "Input" <*>
-      obj .:? "InputPath" <*>
-      obj .:? "RoleArn"
+      (obj .: "Arn") <*>
+      (obj .: "Id") <*>
+      (obj .:? "Input") <*>
+      (obj .:? "InputPath") <*>
+      (obj .:? "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'EventsRuleTarget' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftAliasRoutingStrategy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html
 
@@ -27,17 +28,17 @@
   toJSON GameLiftAliasRoutingStrategy{..} =
     object $
     catMaybes
-    [ ("FleetId" .=) <$> _gameLiftAliasRoutingStrategyFleetId
-    , ("Message" .=) <$> _gameLiftAliasRoutingStrategyMessage
-    , Just ("Type" .= _gameLiftAliasRoutingStrategyType)
+    [ fmap (("FleetId",) . toJSON) _gameLiftAliasRoutingStrategyFleetId
+    , fmap (("Message",) . toJSON) _gameLiftAliasRoutingStrategyMessage
+    , (Just . ("Type",) . toJSON) _gameLiftAliasRoutingStrategyType
     ]
 
 instance FromJSON GameLiftAliasRoutingStrategy where
   parseJSON (Object obj) =
     GameLiftAliasRoutingStrategy <$>
-      obj .:? "FleetId" <*>
-      obj .:? "Message" <*>
-      obj .: "Type"
+      (obj .:? "FleetId") <*>
+      (obj .:? "Message") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftAliasRoutingStrategy' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftBuildS3Location.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html
 
@@ -27,17 +28,17 @@
   toJSON GameLiftBuildS3Location{..} =
     object $
     catMaybes
-    [ Just ("Bucket" .= _gameLiftBuildS3LocationBucket)
-    , Just ("Key" .= _gameLiftBuildS3LocationKey)
-    , Just ("RoleArn" .= _gameLiftBuildS3LocationRoleArn)
+    [ (Just . ("Bucket",) . toJSON) _gameLiftBuildS3LocationBucket
+    , (Just . ("Key",) . toJSON) _gameLiftBuildS3LocationKey
+    , (Just . ("RoleArn",) . toJSON) _gameLiftBuildS3LocationRoleArn
     ]
 
 instance FromJSON GameLiftBuildS3Location where
   parseJSON (Object obj) =
     GameLiftBuildS3Location <$>
-      obj .: "Bucket" <*>
-      obj .: "Key" <*>
-      obj .: "RoleArn"
+      (obj .: "Bucket") <*>
+      (obj .: "Key") <*>
+      (obj .: "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftBuildS3Location' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs b/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
--- a/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GameLiftFleetIpPermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html
 
@@ -18,38 +19,38 @@
 -- 'gameLiftFleetIpPermission' for a more convenient constructor.
 data GameLiftFleetIpPermission =
   GameLiftFleetIpPermission
-  { _gameLiftFleetIpPermissionFromPort :: Val Integer'
+  { _gameLiftFleetIpPermissionFromPort :: Val Integer
   , _gameLiftFleetIpPermissionIpRange :: Val Text
   , _gameLiftFleetIpPermissionProtocol :: Val Text
-  , _gameLiftFleetIpPermissionToPort :: Val Integer'
+  , _gameLiftFleetIpPermissionToPort :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON GameLiftFleetIpPermission where
   toJSON GameLiftFleetIpPermission{..} =
     object $
     catMaybes
-    [ Just ("FromPort" .= _gameLiftFleetIpPermissionFromPort)
-    , Just ("IpRange" .= _gameLiftFleetIpPermissionIpRange)
-    , Just ("Protocol" .= _gameLiftFleetIpPermissionProtocol)
-    , Just ("ToPort" .= _gameLiftFleetIpPermissionToPort)
+    [ (Just . ("FromPort",) . toJSON . fmap Integer') _gameLiftFleetIpPermissionFromPort
+    , (Just . ("IpRange",) . toJSON) _gameLiftFleetIpPermissionIpRange
+    , (Just . ("Protocol",) . toJSON) _gameLiftFleetIpPermissionProtocol
+    , (Just . ("ToPort",) . toJSON . fmap Integer') _gameLiftFleetIpPermissionToPort
     ]
 
 instance FromJSON GameLiftFleetIpPermission where
   parseJSON (Object obj) =
     GameLiftFleetIpPermission <$>
-      obj .: "FromPort" <*>
-      obj .: "IpRange" <*>
-      obj .: "Protocol" <*>
-      obj .: "ToPort"
+      fmap (fmap unInteger') (obj .: "FromPort") <*>
+      (obj .: "IpRange") <*>
+      (obj .: "Protocol") <*>
+      fmap (fmap unInteger') (obj .: "ToPort")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftFleetIpPermission' containing required fields as
 -- arguments.
 gameLiftFleetIpPermission
-  :: Val Integer' -- ^ 'glfipFromPort'
+  :: Val Integer -- ^ 'glfipFromPort'
   -> Val Text -- ^ 'glfipIpRange'
   -> Val Text -- ^ 'glfipProtocol'
-  -> Val Integer' -- ^ 'glfipToPort'
+  -> Val Integer -- ^ 'glfipToPort'
   -> GameLiftFleetIpPermission
 gameLiftFleetIpPermission fromPortarg ipRangearg protocolarg toPortarg =
   GameLiftFleetIpPermission
@@ -60,7 +61,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-fromport
-glfipFromPort :: Lens' GameLiftFleetIpPermission (Val Integer')
+glfipFromPort :: Lens' GameLiftFleetIpPermission (Val Integer)
 glfipFromPort = lens _gameLiftFleetIpPermissionFromPort (\s a -> s { _gameLiftFleetIpPermissionFromPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-iprange
@@ -72,5 +73,5 @@
 glfipProtocol = lens _gameLiftFleetIpPermissionProtocol (\s a -> s { _gameLiftFleetIpPermissionProtocol = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-toport
-glfipToPort :: Lens' GameLiftFleetIpPermission (Val Integer')
+glfipToPort :: Lens' GameLiftFleetIpPermission (Val Integer)
 glfipToPort = lens _gameLiftFleetIpPermissionToPort (\s a -> s { _gameLiftFleetIpPermissionToPort = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMGroupPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
 
@@ -26,15 +27,15 @@
   toJSON IAMGroupPolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _iAMGroupPolicyPolicyDocument)
-    , Just ("PolicyName" .= _iAMGroupPolicyPolicyName)
+    [ (Just . ("PolicyDocument",) . toJSON) _iAMGroupPolicyPolicyDocument
+    , (Just . ("PolicyName",) . toJSON) _iAMGroupPolicyPolicyName
     ]
 
 instance FromJSON IAMGroupPolicy where
   parseJSON (Object obj) =
     IAMGroupPolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .: "PolicyName"
+      (obj .: "PolicyDocument") <*>
+      (obj .: "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMGroupPolicy' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMRolePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
 
@@ -26,15 +27,15 @@
   toJSON IAMRolePolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _iAMRolePolicyPolicyDocument)
-    , Just ("PolicyName" .= _iAMRolePolicyPolicyName)
+    [ (Just . ("PolicyDocument",) . toJSON) _iAMRolePolicyPolicyDocument
+    , (Just . ("PolicyName",) . toJSON) _iAMRolePolicyPolicyName
     ]
 
 instance FromJSON IAMRolePolicy where
   parseJSON (Object obj) =
     IAMRolePolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .: "PolicyName"
+      (obj .: "PolicyDocument") <*>
+      (obj .: "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMRolePolicy' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs b/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMUserLoginProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html
 
@@ -19,22 +20,22 @@
 data IAMUserLoginProfile =
   IAMUserLoginProfile
   { _iAMUserLoginProfilePassword :: Val Text
-  , _iAMUserLoginProfilePasswordResetRequired :: Maybe (Val Bool')
+  , _iAMUserLoginProfilePasswordResetRequired :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON IAMUserLoginProfile where
   toJSON IAMUserLoginProfile{..} =
     object $
     catMaybes
-    [ Just ("Password" .= _iAMUserLoginProfilePassword)
-    , ("PasswordResetRequired" .=) <$> _iAMUserLoginProfilePasswordResetRequired
+    [ (Just . ("Password",) . toJSON) _iAMUserLoginProfilePassword
+    , fmap (("PasswordResetRequired",) . toJSON . fmap Bool') _iAMUserLoginProfilePasswordResetRequired
     ]
 
 instance FromJSON IAMUserLoginProfile where
   parseJSON (Object obj) =
     IAMUserLoginProfile <$>
-      obj .: "Password" <*>
-      obj .:? "PasswordResetRequired"
+      (obj .: "Password") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "PasswordResetRequired")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMUserLoginProfile' containing required fields as
@@ -53,5 +54,5 @@
 iamulpPassword = lens _iAMUserLoginProfilePassword (\s a -> s { _iAMUserLoginProfilePassword = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html#cfn-iam-user-loginprofile-passwordresetrequired
-iamulpPasswordResetRequired :: Lens' IAMUserLoginProfile (Maybe (Val Bool'))
+iamulpPasswordResetRequired :: Lens' IAMUserLoginProfile (Maybe (Val Bool))
 iamulpPasswordResetRequired = lens _iAMUserLoginProfilePasswordResetRequired (\s a -> s { _iAMUserLoginProfilePasswordResetRequired = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs b/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
--- a/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IAMUserPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
 
@@ -26,15 +27,15 @@
   toJSON IAMUserPolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _iAMUserPolicyPolicyDocument)
-    , Just ("PolicyName" .= _iAMUserPolicyPolicyName)
+    [ (Just . ("PolicyDocument",) . toJSON) _iAMUserPolicyPolicyDocument
+    , (Just . ("PolicyName",) . toJSON) _iAMUserPolicyPolicyName
     ]
 
 instance FromJSON IAMUserPolicy where
   parseJSON (Object obj) =
     IAMUserPolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .: "PolicyName"
+      (obj .: "PolicyDocument") <*>
+      (obj .: "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMUserPolicy' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs b/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTThingAttributePayload.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html
 
@@ -25,13 +26,13 @@
   toJSON IoTThingAttributePayload{..} =
     object $
     catMaybes
-    [ ("Attributes" .=) <$> _ioTThingAttributePayloadAttributes
+    [ fmap (("Attributes",) . toJSON) _ioTThingAttributePayloadAttributes
     ]
 
 instance FromJSON IoTThingAttributePayload where
   parseJSON (Object obj) =
     IoTThingAttributePayload <$>
-      obj .:? "Attributes"
+      (obj .:? "Attributes")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTThingAttributePayload' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-actions.html
 
@@ -45,33 +46,33 @@
   toJSON IoTTopicRuleAction{..} =
     object $
     catMaybes
-    [ ("CloudwatchAlarm" .=) <$> _ioTTopicRuleActionCloudwatchAlarm
-    , ("CloudwatchMetric" .=) <$> _ioTTopicRuleActionCloudwatchMetric
-    , ("DynamoDB" .=) <$> _ioTTopicRuleActionDynamoDB
-    , ("Elasticsearch" .=) <$> _ioTTopicRuleActionElasticsearch
-    , ("Firehose" .=) <$> _ioTTopicRuleActionFirehose
-    , ("Kinesis" .=) <$> _ioTTopicRuleActionKinesis
-    , ("Lambda" .=) <$> _ioTTopicRuleActionLambda
-    , ("Republish" .=) <$> _ioTTopicRuleActionRepublish
-    , ("S3" .=) <$> _ioTTopicRuleActionS3
-    , ("Sns" .=) <$> _ioTTopicRuleActionSns
-    , ("Sqs" .=) <$> _ioTTopicRuleActionSqs
+    [ fmap (("CloudwatchAlarm",) . toJSON) _ioTTopicRuleActionCloudwatchAlarm
+    , fmap (("CloudwatchMetric",) . toJSON) _ioTTopicRuleActionCloudwatchMetric
+    , fmap (("DynamoDB",) . toJSON) _ioTTopicRuleActionDynamoDB
+    , fmap (("Elasticsearch",) . toJSON) _ioTTopicRuleActionElasticsearch
+    , fmap (("Firehose",) . toJSON) _ioTTopicRuleActionFirehose
+    , fmap (("Kinesis",) . toJSON) _ioTTopicRuleActionKinesis
+    , fmap (("Lambda",) . toJSON) _ioTTopicRuleActionLambda
+    , fmap (("Republish",) . toJSON) _ioTTopicRuleActionRepublish
+    , fmap (("S3",) . toJSON) _ioTTopicRuleActionS3
+    , fmap (("Sns",) . toJSON) _ioTTopicRuleActionSns
+    , fmap (("Sqs",) . toJSON) _ioTTopicRuleActionSqs
     ]
 
 instance FromJSON IoTTopicRuleAction where
   parseJSON (Object obj) =
     IoTTopicRuleAction <$>
-      obj .:? "CloudwatchAlarm" <*>
-      obj .:? "CloudwatchMetric" <*>
-      obj .:? "DynamoDB" <*>
-      obj .:? "Elasticsearch" <*>
-      obj .:? "Firehose" <*>
-      obj .:? "Kinesis" <*>
-      obj .:? "Lambda" <*>
-      obj .:? "Republish" <*>
-      obj .:? "S3" <*>
-      obj .:? "Sns" <*>
-      obj .:? "Sqs"
+      (obj .:? "CloudwatchAlarm") <*>
+      (obj .:? "CloudwatchMetric") <*>
+      (obj .:? "DynamoDB") <*>
+      (obj .:? "Elasticsearch") <*>
+      (obj .:? "Firehose") <*>
+      (obj .:? "Kinesis") <*>
+      (obj .:? "Lambda") <*>
+      (obj .:? "Republish") <*>
+      (obj .:? "S3") <*>
+      (obj .:? "Sns") <*>
+      (obj .:? "Sqs")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchAlarmAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-cloudwatchalarm.html
 
@@ -28,19 +29,19 @@
   toJSON IoTTopicRuleCloudwatchAlarmAction{..} =
     object $
     catMaybes
-    [ Just ("AlarmName" .= _ioTTopicRuleCloudwatchAlarmActionAlarmName)
-    , Just ("RoleArn" .= _ioTTopicRuleCloudwatchAlarmActionRoleArn)
-    , Just ("StateReason" .= _ioTTopicRuleCloudwatchAlarmActionStateReason)
-    , Just ("StateValue" .= _ioTTopicRuleCloudwatchAlarmActionStateValue)
+    [ (Just . ("AlarmName",) . toJSON) _ioTTopicRuleCloudwatchAlarmActionAlarmName
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleCloudwatchAlarmActionRoleArn
+    , (Just . ("StateReason",) . toJSON) _ioTTopicRuleCloudwatchAlarmActionStateReason
+    , (Just . ("StateValue",) . toJSON) _ioTTopicRuleCloudwatchAlarmActionStateValue
     ]
 
 instance FromJSON IoTTopicRuleCloudwatchAlarmAction where
   parseJSON (Object obj) =
     IoTTopicRuleCloudwatchAlarmAction <$>
-      obj .: "AlarmName" <*>
-      obj .: "RoleArn" <*>
-      obj .: "StateReason" <*>
-      obj .: "StateValue"
+      (obj .: "AlarmName") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "StateReason") <*>
+      (obj .: "StateValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleCloudwatchAlarmAction' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleCloudwatchMetricAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-cloudwatchmetric.html
 
@@ -30,23 +31,23 @@
   toJSON IoTTopicRuleCloudwatchMetricAction{..} =
     object $
     catMaybes
-    [ Just ("MetricName" .= _ioTTopicRuleCloudwatchMetricActionMetricName)
-    , Just ("MetricNamespace" .= _ioTTopicRuleCloudwatchMetricActionMetricNamespace)
-    , ("MetricTimestamp" .=) <$> _ioTTopicRuleCloudwatchMetricActionMetricTimestamp
-    , Just ("MetricUnit" .= _ioTTopicRuleCloudwatchMetricActionMetricUnit)
-    , Just ("MetricValue" .= _ioTTopicRuleCloudwatchMetricActionMetricValue)
-    , Just ("RoleArn" .= _ioTTopicRuleCloudwatchMetricActionRoleArn)
+    [ (Just . ("MetricName",) . toJSON) _ioTTopicRuleCloudwatchMetricActionMetricName
+    , (Just . ("MetricNamespace",) . toJSON) _ioTTopicRuleCloudwatchMetricActionMetricNamespace
+    , fmap (("MetricTimestamp",) . toJSON) _ioTTopicRuleCloudwatchMetricActionMetricTimestamp
+    , (Just . ("MetricUnit",) . toJSON) _ioTTopicRuleCloudwatchMetricActionMetricUnit
+    , (Just . ("MetricValue",) . toJSON) _ioTTopicRuleCloudwatchMetricActionMetricValue
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleCloudwatchMetricActionRoleArn
     ]
 
 instance FromJSON IoTTopicRuleCloudwatchMetricAction where
   parseJSON (Object obj) =
     IoTTopicRuleCloudwatchMetricAction <$>
-      obj .: "MetricName" <*>
-      obj .: "MetricNamespace" <*>
-      obj .:? "MetricTimestamp" <*>
-      obj .: "MetricUnit" <*>
-      obj .: "MetricValue" <*>
-      obj .: "RoleArn"
+      (obj .: "MetricName") <*>
+      (obj .: "MetricNamespace") <*>
+      (obj .:? "MetricTimestamp") <*>
+      (obj .: "MetricUnit") <*>
+      (obj .: "MetricValue") <*>
+      (obj .: "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleCloudwatchMetricAction' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleDynamoDBAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-dynamodb.html
 
@@ -31,25 +32,25 @@
   toJSON IoTTopicRuleDynamoDBAction{..} =
     object $
     catMaybes
-    [ Just ("HashKeyField" .= _ioTTopicRuleDynamoDBActionHashKeyField)
-    , Just ("HashKeyValue" .= _ioTTopicRuleDynamoDBActionHashKeyValue)
-    , ("PayloadField" .=) <$> _ioTTopicRuleDynamoDBActionPayloadField
-    , Just ("RangeKeyField" .= _ioTTopicRuleDynamoDBActionRangeKeyField)
-    , Just ("RangeKeyValue" .= _ioTTopicRuleDynamoDBActionRangeKeyValue)
-    , Just ("RoleArn" .= _ioTTopicRuleDynamoDBActionRoleArn)
-    , Just ("TableName" .= _ioTTopicRuleDynamoDBActionTableName)
+    [ (Just . ("HashKeyField",) . toJSON) _ioTTopicRuleDynamoDBActionHashKeyField
+    , (Just . ("HashKeyValue",) . toJSON) _ioTTopicRuleDynamoDBActionHashKeyValue
+    , fmap (("PayloadField",) . toJSON) _ioTTopicRuleDynamoDBActionPayloadField
+    , (Just . ("RangeKeyField",) . toJSON) _ioTTopicRuleDynamoDBActionRangeKeyField
+    , (Just . ("RangeKeyValue",) . toJSON) _ioTTopicRuleDynamoDBActionRangeKeyValue
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleDynamoDBActionRoleArn
+    , (Just . ("TableName",) . toJSON) _ioTTopicRuleDynamoDBActionTableName
     ]
 
 instance FromJSON IoTTopicRuleDynamoDBAction where
   parseJSON (Object obj) =
     IoTTopicRuleDynamoDBAction <$>
-      obj .: "HashKeyField" <*>
-      obj .: "HashKeyValue" <*>
-      obj .:? "PayloadField" <*>
-      obj .: "RangeKeyField" <*>
-      obj .: "RangeKeyValue" <*>
-      obj .: "RoleArn" <*>
-      obj .: "TableName"
+      (obj .: "HashKeyField") <*>
+      (obj .: "HashKeyValue") <*>
+      (obj .:? "PayloadField") <*>
+      (obj .: "RangeKeyField") <*>
+      (obj .: "RangeKeyValue") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "TableName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleDynamoDBAction' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleElasticsearchAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-elasticsearch.html
 
@@ -29,21 +30,21 @@
   toJSON IoTTopicRuleElasticsearchAction{..} =
     object $
     catMaybes
-    [ Just ("Endpoint" .= _ioTTopicRuleElasticsearchActionEndpoint)
-    , Just ("Id" .= _ioTTopicRuleElasticsearchActionId)
-    , Just ("Index" .= _ioTTopicRuleElasticsearchActionIndex)
-    , Just ("RoleArn" .= _ioTTopicRuleElasticsearchActionRoleArn)
-    , Just ("Type" .= _ioTTopicRuleElasticsearchActionType)
+    [ (Just . ("Endpoint",) . toJSON) _ioTTopicRuleElasticsearchActionEndpoint
+    , (Just . ("Id",) . toJSON) _ioTTopicRuleElasticsearchActionId
+    , (Just . ("Index",) . toJSON) _ioTTopicRuleElasticsearchActionIndex
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleElasticsearchActionRoleArn
+    , (Just . ("Type",) . toJSON) _ioTTopicRuleElasticsearchActionType
     ]
 
 instance FromJSON IoTTopicRuleElasticsearchAction where
   parseJSON (Object obj) =
     IoTTopicRuleElasticsearchAction <$>
-      obj .: "Endpoint" <*>
-      obj .: "Id" <*>
-      obj .: "Index" <*>
-      obj .: "RoleArn" <*>
-      obj .: "Type"
+      (obj .: "Endpoint") <*>
+      (obj .: "Id") <*>
+      (obj .: "Index") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleElasticsearchAction' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleFirehoseAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-firehose.html
 
@@ -27,17 +28,17 @@
   toJSON IoTTopicRuleFirehoseAction{..} =
     object $
     catMaybes
-    [ Just ("DeliveryStreamName" .= _ioTTopicRuleFirehoseActionDeliveryStreamName)
-    , Just ("RoleArn" .= _ioTTopicRuleFirehoseActionRoleArn)
-    , ("Separator" .=) <$> _ioTTopicRuleFirehoseActionSeparator
+    [ (Just . ("DeliveryStreamName",) . toJSON) _ioTTopicRuleFirehoseActionDeliveryStreamName
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleFirehoseActionRoleArn
+    , fmap (("Separator",) . toJSON) _ioTTopicRuleFirehoseActionSeparator
     ]
 
 instance FromJSON IoTTopicRuleFirehoseAction where
   parseJSON (Object obj) =
     IoTTopicRuleFirehoseAction <$>
-      obj .: "DeliveryStreamName" <*>
-      obj .: "RoleArn" <*>
-      obj .:? "Separator"
+      (obj .: "DeliveryStreamName") <*>
+      (obj .: "RoleArn") <*>
+      (obj .:? "Separator")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleFirehoseAction' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleKinesisAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-kinesis.html
 
@@ -27,17 +28,17 @@
   toJSON IoTTopicRuleKinesisAction{..} =
     object $
     catMaybes
-    [ ("PartitionKey" .=) <$> _ioTTopicRuleKinesisActionPartitionKey
-    , Just ("RoleArn" .= _ioTTopicRuleKinesisActionRoleArn)
-    , Just ("StreamName" .= _ioTTopicRuleKinesisActionStreamName)
+    [ fmap (("PartitionKey",) . toJSON) _ioTTopicRuleKinesisActionPartitionKey
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleKinesisActionRoleArn
+    , (Just . ("StreamName",) . toJSON) _ioTTopicRuleKinesisActionStreamName
     ]
 
 instance FromJSON IoTTopicRuleKinesisAction where
   parseJSON (Object obj) =
     IoTTopicRuleKinesisAction <$>
-      obj .:? "PartitionKey" <*>
-      obj .: "RoleArn" <*>
-      obj .: "StreamName"
+      (obj .:? "PartitionKey") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "StreamName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleKinesisAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleLambdaAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-lambda.html
 
@@ -25,13 +26,13 @@
   toJSON IoTTopicRuleLambdaAction{..} =
     object $
     catMaybes
-    [ Just ("FunctionArn" .= _ioTTopicRuleLambdaActionFunctionArn)
+    [ (Just . ("FunctionArn",) . toJSON) _ioTTopicRuleLambdaActionFunctionArn
     ]
 
 instance FromJSON IoTTopicRuleLambdaAction where
   parseJSON (Object obj) =
     IoTTopicRuleLambdaAction <$>
-      obj .: "FunctionArn"
+      (obj .: "FunctionArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleLambdaAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleRepublishAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-republish.html
 
@@ -26,15 +27,15 @@
   toJSON IoTTopicRuleRepublishAction{..} =
     object $
     catMaybes
-    [ Just ("RoleArn" .= _ioTTopicRuleRepublishActionRoleArn)
-    , Just ("Topic" .= _ioTTopicRuleRepublishActionTopic)
+    [ (Just . ("RoleArn",) . toJSON) _ioTTopicRuleRepublishActionRoleArn
+    , (Just . ("Topic",) . toJSON) _ioTTopicRuleRepublishActionTopic
     ]
 
 instance FromJSON IoTTopicRuleRepublishAction where
   parseJSON (Object obj) =
     IoTTopicRuleRepublishAction <$>
-      obj .: "RoleArn" <*>
-      obj .: "Topic"
+      (obj .: "RoleArn") <*>
+      (obj .: "Topic")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleRepublishAction' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleS3Action.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-s3.html
 
@@ -27,17 +28,17 @@
   toJSON IoTTopicRuleS3Action{..} =
     object $
     catMaybes
-    [ Just ("BucketName" .= _ioTTopicRuleS3ActionBucketName)
-    , Just ("Key" .= _ioTTopicRuleS3ActionKey)
-    , Just ("RoleArn" .= _ioTTopicRuleS3ActionRoleArn)
+    [ (Just . ("BucketName",) . toJSON) _ioTTopicRuleS3ActionBucketName
+    , (Just . ("Key",) . toJSON) _ioTTopicRuleS3ActionKey
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleS3ActionRoleArn
     ]
 
 instance FromJSON IoTTopicRuleS3Action where
   parseJSON (Object obj) =
     IoTTopicRuleS3Action <$>
-      obj .: "BucketName" <*>
-      obj .: "Key" <*>
-      obj .: "RoleArn"
+      (obj .: "BucketName") <*>
+      (obj .: "Key") <*>
+      (obj .: "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleS3Action' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSnsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-sns.html
 
@@ -27,17 +28,17 @@
   toJSON IoTTopicRuleSnsAction{..} =
     object $
     catMaybes
-    [ ("MessageFormat" .=) <$> _ioTTopicRuleSnsActionMessageFormat
-    , Just ("RoleArn" .= _ioTTopicRuleSnsActionRoleArn)
-    , Just ("TargetArn" .= _ioTTopicRuleSnsActionTargetArn)
+    [ fmap (("MessageFormat",) . toJSON) _ioTTopicRuleSnsActionMessageFormat
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleSnsActionRoleArn
+    , (Just . ("TargetArn",) . toJSON) _ioTTopicRuleSnsActionTargetArn
     ]
 
 instance FromJSON IoTTopicRuleSnsAction where
   parseJSON (Object obj) =
     IoTTopicRuleSnsAction <$>
-      obj .:? "MessageFormat" <*>
-      obj .: "RoleArn" <*>
-      obj .: "TargetArn"
+      (obj .:? "MessageFormat") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "TargetArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleSnsAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleSqsAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-sqs.html
 
@@ -20,24 +21,24 @@
   IoTTopicRuleSqsAction
   { _ioTTopicRuleSqsActionQueueUrl :: Val Text
   , _ioTTopicRuleSqsActionRoleArn :: Val Text
-  , _ioTTopicRuleSqsActionUseBase64 :: Maybe (Val Bool')
+  , _ioTTopicRuleSqsActionUseBase64 :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON IoTTopicRuleSqsAction where
   toJSON IoTTopicRuleSqsAction{..} =
     object $
     catMaybes
-    [ Just ("QueueUrl" .= _ioTTopicRuleSqsActionQueueUrl)
-    , Just ("RoleArn" .= _ioTTopicRuleSqsActionRoleArn)
-    , ("UseBase64" .=) <$> _ioTTopicRuleSqsActionUseBase64
+    [ (Just . ("QueueUrl",) . toJSON) _ioTTopicRuleSqsActionQueueUrl
+    , (Just . ("RoleArn",) . toJSON) _ioTTopicRuleSqsActionRoleArn
+    , fmap (("UseBase64",) . toJSON . fmap Bool') _ioTTopicRuleSqsActionUseBase64
     ]
 
 instance FromJSON IoTTopicRuleSqsAction where
   parseJSON (Object obj) =
     IoTTopicRuleSqsAction <$>
-      obj .: "QueueUrl" <*>
-      obj .: "RoleArn" <*>
-      obj .:? "UseBase64"
+      (obj .: "QueueUrl") <*>
+      (obj .: "RoleArn") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseBase64")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleSqsAction' containing required fields as
@@ -62,5 +63,5 @@
 ittrsqaRoleArn = lens _ioTTopicRuleSqsActionRoleArn (\s a -> s { _ioTTopicRuleSqsActionRoleArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-sqs.html#cfn-iot-sqs-usebase64
-ittrsqaUseBase64 :: Lens' IoTTopicRuleSqsAction (Maybe (Val Bool'))
+ittrsqaUseBase64 :: Lens' IoTTopicRuleSqsAction (Maybe (Val Bool))
 ittrsqaUseBase64 = lens _ioTTopicRuleSqsActionUseBase64 (\s a -> s { _ioTTopicRuleSqsActionUseBase64 = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
--- a/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
+++ b/library-gen/Stratosphere/ResourceProperties/IoTTopicRuleTopicRulePayload.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrulepayload.html
 
@@ -21,7 +22,7 @@
   { _ioTTopicRuleTopicRulePayloadActions :: [IoTTopicRuleAction]
   , _ioTTopicRuleTopicRulePayloadAwsIotSqlVersion :: Maybe (Val Text)
   , _ioTTopicRuleTopicRulePayloadDescription :: Maybe (Val Text)
-  , _ioTTopicRuleTopicRulePayloadRuleDisabled :: Val Bool'
+  , _ioTTopicRuleTopicRulePayloadRuleDisabled :: Val Bool
   , _ioTTopicRuleTopicRulePayloadSql :: Val Text
   } deriving (Show, Eq)
 
@@ -29,28 +30,28 @@
   toJSON IoTTopicRuleTopicRulePayload{..} =
     object $
     catMaybes
-    [ Just ("Actions" .= _ioTTopicRuleTopicRulePayloadActions)
-    , ("AwsIotSqlVersion" .=) <$> _ioTTopicRuleTopicRulePayloadAwsIotSqlVersion
-    , ("Description" .=) <$> _ioTTopicRuleTopicRulePayloadDescription
-    , Just ("RuleDisabled" .= _ioTTopicRuleTopicRulePayloadRuleDisabled)
-    , Just ("Sql" .= _ioTTopicRuleTopicRulePayloadSql)
+    [ (Just . ("Actions",) . toJSON) _ioTTopicRuleTopicRulePayloadActions
+    , fmap (("AwsIotSqlVersion",) . toJSON) _ioTTopicRuleTopicRulePayloadAwsIotSqlVersion
+    , fmap (("Description",) . toJSON) _ioTTopicRuleTopicRulePayloadDescription
+    , (Just . ("RuleDisabled",) . toJSON . fmap Bool') _ioTTopicRuleTopicRulePayloadRuleDisabled
+    , (Just . ("Sql",) . toJSON) _ioTTopicRuleTopicRulePayloadSql
     ]
 
 instance FromJSON IoTTopicRuleTopicRulePayload where
   parseJSON (Object obj) =
     IoTTopicRuleTopicRulePayload <$>
-      obj .: "Actions" <*>
-      obj .:? "AwsIotSqlVersion" <*>
-      obj .:? "Description" <*>
-      obj .: "RuleDisabled" <*>
-      obj .: "Sql"
+      (obj .: "Actions") <*>
+      (obj .:? "AwsIotSqlVersion") <*>
+      (obj .:? "Description") <*>
+      fmap (fmap unBool') (obj .: "RuleDisabled") <*>
+      (obj .: "Sql")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRuleTopicRulePayload' containing required fields
 -- as arguments.
 ioTTopicRuleTopicRulePayload
   :: [IoTTopicRuleAction] -- ^ 'ittrtrpActions'
-  -> Val Bool' -- ^ 'ittrtrpRuleDisabled'
+  -> Val Bool -- ^ 'ittrtrpRuleDisabled'
   -> Val Text -- ^ 'ittrtrpSql'
   -> IoTTopicRuleTopicRulePayload
 ioTTopicRuleTopicRulePayload actionsarg ruleDisabledarg sqlarg =
@@ -75,7 +76,7 @@
 ittrtrpDescription = lens _ioTTopicRuleTopicRulePayloadDescription (\s a -> s { _ioTTopicRuleTopicRulePayloadDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrulepayload.html#cfn-iot-topicrulepayload-ruledisabled
-ittrtrpRuleDisabled :: Lens' IoTTopicRuleTopicRulePayload (Val Bool')
+ittrtrpRuleDisabled :: Lens' IoTTopicRuleTopicRulePayload (Val Bool)
 ittrtrpRuleDisabled = lens _ioTTopicRuleTopicRulePayloadRuleDisabled (\s a -> s { _ioTTopicRuleTopicRulePayloadRuleDisabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrulepayload.html#cfn-iot-topicrulepayload-sql
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamBufferingHints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints.html
 
@@ -20,30 +21,30 @@
 -- constructor.
 data KinesisFirehoseDeliveryStreamBufferingHints =
   KinesisFirehoseDeliveryStreamBufferingHints
-  { _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds :: Val Integer'
-  , _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs :: Val Integer'
+  { _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds :: Val Integer
+  , _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON KinesisFirehoseDeliveryStreamBufferingHints where
   toJSON KinesisFirehoseDeliveryStreamBufferingHints{..} =
     object $
     catMaybes
-    [ Just ("IntervalInSeconds" .= _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds)
-    , Just ("SizeInMBs" .= _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs)
+    [ (Just . ("IntervalInSeconds",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds
+    , (Just . ("SizeInMBs",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamBufferingHints where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamBufferingHints <$>
-      obj .: "IntervalInSeconds" <*>
-      obj .: "SizeInMBs"
+      fmap (fmap unInteger') (obj .: "IntervalInSeconds") <*>
+      fmap (fmap unInteger') (obj .: "SizeInMBs")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamBufferingHints' containing
 -- required fields as arguments.
 kinesisFirehoseDeliveryStreamBufferingHints
-  :: Val Integer' -- ^ 'kfdsbhIntervalInSeconds'
-  -> Val Integer' -- ^ 'kfdsbhSizeInMBs'
+  :: Val Integer -- ^ 'kfdsbhIntervalInSeconds'
+  -> Val Integer -- ^ 'kfdsbhSizeInMBs'
   -> KinesisFirehoseDeliveryStreamBufferingHints
 kinesisFirehoseDeliveryStreamBufferingHints intervalInSecondsarg sizeInMBsarg =
   KinesisFirehoseDeliveryStreamBufferingHints
@@ -52,9 +53,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints-intervalinseconds
-kfdsbhIntervalInSeconds :: Lens' KinesisFirehoseDeliveryStreamBufferingHints (Val Integer')
+kfdsbhIntervalInSeconds :: Lens' KinesisFirehoseDeliveryStreamBufferingHints (Val Integer)
 kfdsbhIntervalInSeconds = lens _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds (\s a -> s { _kinesisFirehoseDeliveryStreamBufferingHintsIntervalInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints.html#cfn-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-bufferinghints-sizeinmbs
-kfdsbhSizeInMBs :: Lens' KinesisFirehoseDeliveryStreamBufferingHints (Val Integer')
+kfdsbhSizeInMBs :: Lens' KinesisFirehoseDeliveryStreamBufferingHints (Val Integer)
 kfdsbhSizeInMBs = lens _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs (\s a -> s { _kinesisFirehoseDeliveryStreamBufferingHintsSizeInMBs = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-destination-cloudwatchloggingoptions.html
 
@@ -20,7 +21,7 @@
 -- convenient constructor.
 data KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions =
   KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
-  { _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled :: Maybe (Val Bool')
+  { _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled :: Maybe (Val Bool)
   , _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogGroupName :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogStreamName :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -29,17 +30,17 @@
   toJSON KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions{..} =
     object $
     catMaybes
-    [ ("Enabled" .=) <$> _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled
-    , ("LogGroupName" .=) <$> _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogGroupName
-    , ("LogStreamName" .=) <$> _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogStreamName
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled
+    , fmap (("LogGroupName",) . toJSON) _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogGroupName
+    , fmap (("LogStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsLogStreamName
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions <$>
-      obj .:? "Enabled" <*>
-      obj .:? "LogGroupName" <*>
-      obj .:? "LogStreamName"
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "LogGroupName") <*>
+      (obj .:? "LogStreamName")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions'
@@ -54,7 +55,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-destination-cloudwatchloggingoptions.html#cfn-kinesisfirehose-kinesisdeliverystream-destination-cloudwatchloggingoptions-enabled
-kfdscwloEnabled :: Lens' KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions (Maybe (Val Bool'))
+kfdscwloEnabled :: Lens' KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions (Maybe (Val Bool))
 kfdscwloEnabled = lens _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled (\s a -> s { _kinesisFirehoseDeliveryStreamCloudWatchLoggingOptionsEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-destination-cloudwatchloggingoptions.html#cfn-kinesisfirehose-kinesisdeliverystream-destination-cloudwatchloggingoptions-loggroupname
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamCopyCommand.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration-copycommand.html
 
@@ -28,17 +29,17 @@
   toJSON KinesisFirehoseDeliveryStreamCopyCommand{..} =
     object $
     catMaybes
-    [ ("CopyOptions" .=) <$> _kinesisFirehoseDeliveryStreamCopyCommandCopyOptions
-    , ("DataTableColumns" .=) <$> _kinesisFirehoseDeliveryStreamCopyCommandDataTableColumns
-    , Just ("DataTableName" .= _kinesisFirehoseDeliveryStreamCopyCommandDataTableName)
+    [ fmap (("CopyOptions",) . toJSON) _kinesisFirehoseDeliveryStreamCopyCommandCopyOptions
+    , fmap (("DataTableColumns",) . toJSON) _kinesisFirehoseDeliveryStreamCopyCommandDataTableColumns
+    , (Just . ("DataTableName",) . toJSON) _kinesisFirehoseDeliveryStreamCopyCommandDataTableName
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamCopyCommand where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamCopyCommand <$>
-      obj .:? "CopyOptions" <*>
-      obj .:? "DataTableColumns" <*>
-      obj .: "DataTableName"
+      (obj .:? "CopyOptions") <*>
+      (obj .:? "DataTableColumns") <*>
+      (obj .: "DataTableName")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamCopyCommand' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchBufferingHints.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html
 
@@ -20,31 +21,31 @@
 -- convenient constructor.
 data KinesisFirehoseDeliveryStreamElasticsearchBufferingHints =
   KinesisFirehoseDeliveryStreamElasticsearchBufferingHints
-  { _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds :: Val Integer'
-  , _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs :: Val Integer'
+  { _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds :: Val Integer
+  , _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON KinesisFirehoseDeliveryStreamElasticsearchBufferingHints where
   toJSON KinesisFirehoseDeliveryStreamElasticsearchBufferingHints{..} =
     object $
     catMaybes
-    [ Just ("IntervalInSeconds" .= _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds)
-    , Just ("SizeInMBs" .= _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs)
+    [ (Just . ("IntervalInSeconds",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds
+    , (Just . ("SizeInMBs",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamElasticsearchBufferingHints where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamElasticsearchBufferingHints <$>
-      obj .: "IntervalInSeconds" <*>
-      obj .: "SizeInMBs"
+      fmap (fmap unInteger') (obj .: "IntervalInSeconds") <*>
+      fmap (fmap unInteger') (obj .: "SizeInMBs")
   parseJSON _ = mempty
 
 -- | Constructor for
 -- 'KinesisFirehoseDeliveryStreamElasticsearchBufferingHints' containing
 -- required fields as arguments.
 kinesisFirehoseDeliveryStreamElasticsearchBufferingHints
-  :: Val Integer' -- ^ 'kfdsebhIntervalInSeconds'
-  -> Val Integer' -- ^ 'kfdsebhSizeInMBs'
+  :: Val Integer -- ^ 'kfdsebhIntervalInSeconds'
+  -> Val Integer -- ^ 'kfdsebhSizeInMBs'
   -> KinesisFirehoseDeliveryStreamElasticsearchBufferingHints
 kinesisFirehoseDeliveryStreamElasticsearchBufferingHints intervalInSecondsarg sizeInMBsarg =
   KinesisFirehoseDeliveryStreamElasticsearchBufferingHints
@@ -53,9 +54,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-bufferinghints-intervalinseconds
-kfdsebhIntervalInSeconds :: Lens' KinesisFirehoseDeliveryStreamElasticsearchBufferingHints (Val Integer')
+kfdsebhIntervalInSeconds :: Lens' KinesisFirehoseDeliveryStreamElasticsearchBufferingHints (Val Integer)
 kfdsebhIntervalInSeconds = lens _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsIntervalInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-bufferinghints-sizeinmbs
-kfdsebhSizeInMBs :: Lens' KinesisFirehoseDeliveryStreamElasticsearchBufferingHints (Val Integer')
+kfdsebhSizeInMBs :: Lens' KinesisFirehoseDeliveryStreamElasticsearchBufferingHints (Val Integer)
 kfdsebhSizeInMBs = lens _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchBufferingHintsSizeInMBs = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration.html
 
@@ -40,31 +41,31 @@
   toJSON KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration{..} =
     object $
     catMaybes
-    [ Just ("BufferingHints" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationBufferingHints)
-    , ("CloudWatchLoggingOptions" .=) <$> _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationCloudWatchLoggingOptions
-    , Just ("DomainARN" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationDomainARN)
-    , Just ("IndexName" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexName)
-    , Just ("IndexRotationPeriod" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod)
-    , Just ("RetryOptions" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRetryOptions)
-    , Just ("RoleARN" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRoleARN)
-    , Just ("S3BackupMode" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3BackupMode)
-    , Just ("S3Configuration" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3Configuration)
-    , Just ("TypeName" .= _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationTypeName)
+    [ (Just . ("BufferingHints",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationBufferingHints
+    , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationCloudWatchLoggingOptions
+    , (Just . ("DomainARN",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationDomainARN
+    , (Just . ("IndexName",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexName
+    , (Just . ("IndexRotationPeriod",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationIndexRotationPeriod
+    , (Just . ("RetryOptions",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRetryOptions
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationRoleARN
+    , (Just . ("S3BackupMode",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3BackupMode
+    , (Just . ("S3Configuration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationS3Configuration
+    , (Just . ("TypeName",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfigurationTypeName
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration <$>
-      obj .: "BufferingHints" <*>
-      obj .:? "CloudWatchLoggingOptions" <*>
-      obj .: "DomainARN" <*>
-      obj .: "IndexName" <*>
-      obj .: "IndexRotationPeriod" <*>
-      obj .: "RetryOptions" <*>
-      obj .: "RoleARN" <*>
-      obj .: "S3BackupMode" <*>
-      obj .: "S3Configuration" <*>
-      obj .: "TypeName"
+      (obj .: "BufferingHints") <*>
+      (obj .:? "CloudWatchLoggingOptions") <*>
+      (obj .: "DomainARN") <*>
+      (obj .: "IndexName") <*>
+      (obj .: "IndexRotationPeriod") <*>
+      (obj .: "RetryOptions") <*>
+      (obj .: "RoleARN") <*>
+      (obj .: "S3BackupMode") <*>
+      (obj .: "S3Configuration") <*>
+      (obj .: "TypeName")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamElasticsearchRetryOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-retryoptions.html
 
@@ -20,26 +21,26 @@
 -- convenient constructor.
 data KinesisFirehoseDeliveryStreamElasticsearchRetryOptions =
   KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
-  { _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds :: Val Integer'
+  { _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON KinesisFirehoseDeliveryStreamElasticsearchRetryOptions where
   toJSON KinesisFirehoseDeliveryStreamElasticsearchRetryOptions{..} =
     object $
     catMaybes
-    [ Just ("DurationInSeconds" .= _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds)
+    [ (Just . ("DurationInSeconds",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamElasticsearchRetryOptions where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamElasticsearchRetryOptions <$>
-      obj .: "DurationInSeconds"
+      fmap (fmap unInteger') (obj .: "DurationInSeconds")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamElasticsearchRetryOptions'
 -- containing required fields as arguments.
 kinesisFirehoseDeliveryStreamElasticsearchRetryOptions
-  :: Val Integer' -- ^ 'kfdseroDurationInSeconds'
+  :: Val Integer -- ^ 'kfdseroDurationInSeconds'
   -> KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
 kinesisFirehoseDeliveryStreamElasticsearchRetryOptions durationInSecondsarg =
   KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
@@ -47,5 +48,5 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-retryoptions.html#cfn-kinesisfirehose-kinesisdeliverystream-elasticsearchdestinationconfiguration-retryoptions-durationinseconds
-kfdseroDurationInSeconds :: Lens' KinesisFirehoseDeliveryStreamElasticsearchRetryOptions (Val Integer')
+kfdseroDurationInSeconds :: Lens' KinesisFirehoseDeliveryStreamElasticsearchRetryOptions (Val Integer)
 kfdseroDurationInSeconds = lens _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchRetryOptionsDurationInSeconds = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamEncryptionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-encryptionconfiguration.html
 
@@ -29,15 +30,15 @@
   toJSON KinesisFirehoseDeliveryStreamEncryptionConfiguration{..} =
     object $
     catMaybes
-    [ ("KMSEncryptionConfig" .=) <$> _kinesisFirehoseDeliveryStreamEncryptionConfigurationKMSEncryptionConfig
-    , ("NoEncryptionConfig" .=) <$> _kinesisFirehoseDeliveryStreamEncryptionConfigurationNoEncryptionConfig
+    [ fmap (("KMSEncryptionConfig",) . toJSON) _kinesisFirehoseDeliveryStreamEncryptionConfigurationKMSEncryptionConfig
+    , fmap (("NoEncryptionConfig",) . toJSON) _kinesisFirehoseDeliveryStreamEncryptionConfigurationNoEncryptionConfig
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamEncryptionConfiguration where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamEncryptionConfiguration <$>
-      obj .:? "KMSEncryptionConfig" <*>
-      obj .:? "NoEncryptionConfig"
+      (obj .:? "KMSEncryptionConfig") <*>
+      (obj .:? "NoEncryptionConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamEncryptionConfiguration'
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKMSEncryptionConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration-encryptionconfiguration-kmsencryptionconfig.html
 
@@ -27,13 +28,13 @@
   toJSON KinesisFirehoseDeliveryStreamKMSEncryptionConfig{..} =
     object $
     catMaybes
-    [ Just ("AWSKMSKeyARN" .= _kinesisFirehoseDeliveryStreamKMSEncryptionConfigAWSKMSKeyARN)
+    [ (Just . ("AWSKMSKeyARN",) . toJSON) _kinesisFirehoseDeliveryStreamKMSEncryptionConfigAWSKMSKeyARN
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamKMSEncryptionConfig where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamKMSEncryptionConfig <$>
-      obj .: "AWSKMSKeyARN"
+      (obj .: "AWSKMSKeyARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamKMSEncryptionConfig'
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-redshiftdestinationconfiguration.html
 
@@ -35,25 +36,25 @@
   toJSON KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration{..} =
     object $
     catMaybes
-    [ ("CloudWatchLoggingOptions" .=) <$> _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCloudWatchLoggingOptions
-    , Just ("ClusterJDBCURL" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationClusterJDBCURL)
-    , Just ("CopyCommand" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCopyCommand)
-    , Just ("Password" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword)
-    , Just ("RoleARN" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationRoleARN)
-    , Just ("S3Configuration" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationS3Configuration)
-    , Just ("Username" .= _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationUsername)
+    [ fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCloudWatchLoggingOptions
+    , (Just . ("ClusterJDBCURL",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationClusterJDBCURL
+    , (Just . ("CopyCommand",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationCopyCommand
+    , (Just . ("Password",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPassword
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationRoleARN
+    , (Just . ("S3Configuration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationS3Configuration
+    , (Just . ("Username",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationUsername
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration <$>
-      obj .:? "CloudWatchLoggingOptions" <*>
-      obj .: "ClusterJDBCURL" <*>
-      obj .: "CopyCommand" <*>
-      obj .: "Password" <*>
-      obj .: "RoleARN" <*>
-      obj .: "S3Configuration" <*>
-      obj .: "Username"
+      (obj .:? "CloudWatchLoggingOptions") <*>
+      (obj .: "ClusterJDBCURL") <*>
+      (obj .: "CopyCommand") <*>
+      (obj .: "Password") <*>
+      (obj .: "RoleARN") <*>
+      (obj .: "S3Configuration") <*>
+      (obj .: "Username")
   parseJSON _ = mempty
 
 -- | Constructor for
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-kinesisdeliverystream-s3destinationconfiguration.html
 
@@ -36,25 +37,25 @@
   toJSON KinesisFirehoseDeliveryStreamS3DestinationConfiguration{..} =
     object $
     catMaybes
-    [ Just ("BucketARN" .= _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBucketARN)
-    , Just ("BufferingHints" .= _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBufferingHints)
-    , ("CloudWatchLoggingOptions" .=) <$> _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions
-    , Just ("CompressionFormat" .= _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat)
-    , ("EncryptionConfiguration" .=) <$> _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration
-    , Just ("Prefix" .= _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix)
-    , Just ("RoleARN" .= _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN)
+    [ (Just . ("BucketARN",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBucketARN
+    , (Just . ("BufferingHints",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBufferingHints
+    , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions
+    , (Just . ("CompressionFormat",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat
+    , fmap (("EncryptionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration
+    , (Just . ("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamS3DestinationConfiguration where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamS3DestinationConfiguration <$>
-      obj .: "BucketARN" <*>
-      obj .: "BufferingHints" <*>
-      obj .:? "CloudWatchLoggingOptions" <*>
-      obj .: "CompressionFormat" <*>
-      obj .:? "EncryptionConfiguration" <*>
-      obj .: "Prefix" <*>
-      obj .: "RoleARN"
+      (obj .: "BucketARN") <*>
+      (obj .: "BufferingHints") <*>
+      (obj .:? "CloudWatchLoggingOptions") <*>
+      (obj .: "CompressionFormat") <*>
+      (obj .:? "EncryptionConfiguration") <*>
+      (obj .: "Prefix") <*>
+      (obj .: "RoleARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamS3DestinationConfiguration'
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionCode.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
 
@@ -28,19 +29,19 @@
   toJSON LambdaFunctionCode{..} =
     object $
     catMaybes
-    [ ("S3Bucket" .=) <$> _lambdaFunctionCodeS3Bucket
-    , ("S3Key" .=) <$> _lambdaFunctionCodeS3Key
-    , ("S3ObjectVersion" .=) <$> _lambdaFunctionCodeS3ObjectVersion
-    , ("ZipFile" .=) <$> _lambdaFunctionCodeZipFile
+    [ fmap (("S3Bucket",) . toJSON) _lambdaFunctionCodeS3Bucket
+    , fmap (("S3Key",) . toJSON) _lambdaFunctionCodeS3Key
+    , fmap (("S3ObjectVersion",) . toJSON) _lambdaFunctionCodeS3ObjectVersion
+    , fmap (("ZipFile",) . toJSON) _lambdaFunctionCodeZipFile
     ]
 
 instance FromJSON LambdaFunctionCode where
   parseJSON (Object obj) =
     LambdaFunctionCode <$>
-      obj .:? "S3Bucket" <*>
-      obj .:? "S3Key" <*>
-      obj .:? "S3ObjectVersion" <*>
-      obj .:? "ZipFile"
+      (obj .:? "S3Bucket") <*>
+      (obj .:? "S3Key") <*>
+      (obj .:? "S3ObjectVersion") <*>
+      (obj .:? "ZipFile")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunctionCode' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionDeadLetterConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html
 
@@ -25,13 +26,13 @@
   toJSON LambdaFunctionDeadLetterConfig{..} =
     object $
     catMaybes
-    [ ("TargetArn" .=) <$> _lambdaFunctionDeadLetterConfigTargetArn
+    [ fmap (("TargetArn",) . toJSON) _lambdaFunctionDeadLetterConfigTargetArn
     ]
 
 instance FromJSON LambdaFunctionDeadLetterConfig where
   parseJSON (Object obj) =
     LambdaFunctionDeadLetterConfig <$>
-      obj .:? "TargetArn"
+      (obj .:? "TargetArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunctionDeadLetterConfig' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html
 
@@ -25,13 +26,13 @@
   toJSON LambdaFunctionEnvironment{..} =
     object $
     catMaybes
-    [ ("Variables" .=) <$> _lambdaFunctionEnvironmentVariables
+    [ fmap (("Variables",) . toJSON) _lambdaFunctionEnvironmentVariables
     ]
 
 instance FromJSON LambdaFunctionEnvironment where
   parseJSON (Object obj) =
     LambdaFunctionEnvironment <$>
-      obj .:? "Variables"
+      (obj .:? "Variables")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunctionEnvironment' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionTracingConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html
 
@@ -25,13 +26,13 @@
   toJSON LambdaFunctionTracingConfig{..} =
     object $
     catMaybes
-    [ ("Mode" .=) <$> _lambdaFunctionTracingConfigMode
+    [ fmap (("Mode",) . toJSON) _lambdaFunctionTracingConfigMode
     ]
 
 instance FromJSON LambdaFunctionTracingConfig where
   parseJSON (Object obj) =
     LambdaFunctionTracingConfig <$>
-      obj .:? "Mode"
+      (obj .:? "Mode")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunctionTracingConfig' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaFunctionVpcConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html
 
@@ -18,30 +19,30 @@
 -- 'lambdaFunctionVpcConfig' for a more convenient constructor.
 data LambdaFunctionVpcConfig =
   LambdaFunctionVpcConfig
-  { _lambdaFunctionVpcConfigSecurityGroupIds :: [Val Text]
-  , _lambdaFunctionVpcConfigSubnetIds :: [Val Text]
+  { _lambdaFunctionVpcConfigSecurityGroupIds :: ValList Text
+  , _lambdaFunctionVpcConfigSubnetIds :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON LambdaFunctionVpcConfig where
   toJSON LambdaFunctionVpcConfig{..} =
     object $
     catMaybes
-    [ Just ("SecurityGroupIds" .= _lambdaFunctionVpcConfigSecurityGroupIds)
-    , Just ("SubnetIds" .= _lambdaFunctionVpcConfigSubnetIds)
+    [ (Just . ("SecurityGroupIds",) . toJSON) _lambdaFunctionVpcConfigSecurityGroupIds
+    , (Just . ("SubnetIds",) . toJSON) _lambdaFunctionVpcConfigSubnetIds
     ]
 
 instance FromJSON LambdaFunctionVpcConfig where
   parseJSON (Object obj) =
     LambdaFunctionVpcConfig <$>
-      obj .: "SecurityGroupIds" <*>
-      obj .: "SubnetIds"
+      (obj .: "SecurityGroupIds") <*>
+      (obj .: "SubnetIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunctionVpcConfig' containing required fields as
 -- arguments.
 lambdaFunctionVpcConfig
-  :: [Val Text] -- ^ 'lfvcSecurityGroupIds'
-  -> [Val Text] -- ^ 'lfvcSubnetIds'
+  :: ValList Text -- ^ 'lfvcSecurityGroupIds'
+  -> ValList Text -- ^ 'lfvcSubnetIds'
   -> LambdaFunctionVpcConfig
 lambdaFunctionVpcConfig securityGroupIdsarg subnetIdsarg =
   LambdaFunctionVpcConfig
@@ -50,9 +51,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-securitygroupids
-lfvcSecurityGroupIds :: Lens' LambdaFunctionVpcConfig [Val Text]
+lfvcSecurityGroupIds :: Lens' LambdaFunctionVpcConfig (ValList Text)
 lfvcSecurityGroupIds = lens _lambdaFunctionVpcConfigSecurityGroupIds (\s a -> s { _lambdaFunctionVpcConfigSecurityGroupIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-subnetids
-lfvcSubnetIds :: Lens' LambdaFunctionVpcConfig [Val Text]
+lfvcSubnetIds :: Lens' LambdaFunctionVpcConfig (ValList Text)
 lfvcSubnetIds = lens _lambdaFunctionVpcConfigSubnetIds (\s a -> s { _lambdaFunctionVpcConfigSubnetIds = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
--- a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html
 
@@ -27,17 +28,17 @@
   toJSON LogsMetricFilterMetricTransformation{..} =
     object $
     catMaybes
-    [ Just ("MetricName" .= _logsMetricFilterMetricTransformationMetricName)
-    , Just ("MetricNamespace" .= _logsMetricFilterMetricTransformationMetricNamespace)
-    , Just ("MetricValue" .= _logsMetricFilterMetricTransformationMetricValue)
+    [ (Just . ("MetricName",) . toJSON) _logsMetricFilterMetricTransformationMetricName
+    , (Just . ("MetricNamespace",) . toJSON) _logsMetricFilterMetricTransformationMetricNamespace
+    , (Just . ("MetricValue",) . toJSON) _logsMetricFilterMetricTransformationMetricValue
     ]
 
 instance FromJSON LogsMetricFilterMetricTransformation where
   parseJSON (Object obj) =
     LogsMetricFilterMetricTransformation <$>
-      obj .: "MetricName" <*>
-      obj .: "MetricNamespace" <*>
-      obj .: "MetricValue"
+      (obj .: "MetricName") <*>
+      (obj .: "MetricNamespace") <*>
+      (obj .: "MetricValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsMetricFilterMetricTransformation' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppDataSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html
 
@@ -27,17 +28,17 @@
   toJSON OpsWorksAppDataSource{..} =
     object $
     catMaybes
-    [ ("Arn" .=) <$> _opsWorksAppDataSourceArn
-    , ("DatabaseName" .=) <$> _opsWorksAppDataSourceDatabaseName
-    , ("Type" .=) <$> _opsWorksAppDataSourceType
+    [ fmap (("Arn",) . toJSON) _opsWorksAppDataSourceArn
+    , fmap (("DatabaseName",) . toJSON) _opsWorksAppDataSourceDatabaseName
+    , fmap (("Type",) . toJSON) _opsWorksAppDataSourceType
     ]
 
 instance FromJSON OpsWorksAppDataSource where
   parseJSON (Object obj) =
     OpsWorksAppDataSource <$>
-      obj .:? "Arn" <*>
-      obj .:? "DatabaseName" <*>
-      obj .:? "Type"
+      (obj .:? "Arn") <*>
+      (obj .:? "DatabaseName") <*>
+      (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksAppDataSource' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppEnvironmentVariable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html
 
@@ -19,7 +20,7 @@
 data OpsWorksAppEnvironmentVariable =
   OpsWorksAppEnvironmentVariable
   { _opsWorksAppEnvironmentVariableKey :: Val Text
-  , _opsWorksAppEnvironmentVariableSecure :: Maybe (Val Bool')
+  , _opsWorksAppEnvironmentVariableSecure :: Maybe (Val Bool)
   , _opsWorksAppEnvironmentVariableValue :: Val Text
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON OpsWorksAppEnvironmentVariable{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _opsWorksAppEnvironmentVariableKey)
-    , ("Secure" .=) <$> _opsWorksAppEnvironmentVariableSecure
-    , Just ("Value" .= _opsWorksAppEnvironmentVariableValue)
+    [ (Just . ("Key",) . toJSON) _opsWorksAppEnvironmentVariableKey
+    , fmap (("Secure",) . toJSON . fmap Bool') _opsWorksAppEnvironmentVariableSecure
+    , (Just . ("Value",) . toJSON) _opsWorksAppEnvironmentVariableValue
     ]
 
 instance FromJSON OpsWorksAppEnvironmentVariable where
   parseJSON (Object obj) =
     OpsWorksAppEnvironmentVariable <$>
-      obj .: "Key" <*>
-      obj .:? "Secure" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Secure") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksAppEnvironmentVariable' containing required
@@ -58,7 +59,7 @@
 owaevKey = lens _opsWorksAppEnvironmentVariableKey (\s a -> s { _opsWorksAppEnvironmentVariableKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html#cfn-opsworks-app-environment-secure
-owaevSecure :: Lens' OpsWorksAppEnvironmentVariable (Maybe (Val Bool'))
+owaevSecure :: Lens' OpsWorksAppEnvironmentVariable (Maybe (Val Bool))
 owaevSecure = lens _opsWorksAppEnvironmentVariableSecure (\s a -> s { _opsWorksAppEnvironmentVariableSecure = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html#value
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
 
@@ -30,23 +31,23 @@
   toJSON OpsWorksAppSource{..} =
     object $
     catMaybes
-    [ ("Password" .=) <$> _opsWorksAppSourcePassword
-    , ("Revision" .=) <$> _opsWorksAppSourceRevision
-    , ("SshKey" .=) <$> _opsWorksAppSourceSshKey
-    , ("Type" .=) <$> _opsWorksAppSourceType
-    , ("Url" .=) <$> _opsWorksAppSourceUrl
-    , ("Username" .=) <$> _opsWorksAppSourceUsername
+    [ fmap (("Password",) . toJSON) _opsWorksAppSourcePassword
+    , fmap (("Revision",) . toJSON) _opsWorksAppSourceRevision
+    , fmap (("SshKey",) . toJSON) _opsWorksAppSourceSshKey
+    , fmap (("Type",) . toJSON) _opsWorksAppSourceType
+    , fmap (("Url",) . toJSON) _opsWorksAppSourceUrl
+    , fmap (("Username",) . toJSON) _opsWorksAppSourceUsername
     ]
 
 instance FromJSON OpsWorksAppSource where
   parseJSON (Object obj) =
     OpsWorksAppSource <$>
-      obj .:? "Password" <*>
-      obj .:? "Revision" <*>
-      obj .:? "SshKey" <*>
-      obj .:? "Type" <*>
-      obj .:? "Url" <*>
-      obj .:? "Username"
+      (obj .:? "Password") <*>
+      (obj .:? "Revision") <*>
+      (obj .:? "SshKey") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Url") <*>
+      (obj .:? "Username")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksAppSource' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksAppSslConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html
 
@@ -27,17 +28,17 @@
   toJSON OpsWorksAppSslConfiguration{..} =
     object $
     catMaybes
-    [ ("Certificate" .=) <$> _opsWorksAppSslConfigurationCertificate
-    , ("Chain" .=) <$> _opsWorksAppSslConfigurationChain
-    , ("PrivateKey" .=) <$> _opsWorksAppSslConfigurationPrivateKey
+    [ fmap (("Certificate",) . toJSON) _opsWorksAppSslConfigurationCertificate
+    , fmap (("Chain",) . toJSON) _opsWorksAppSslConfigurationChain
+    , fmap (("PrivateKey",) . toJSON) _opsWorksAppSslConfigurationPrivateKey
     ]
 
 instance FromJSON OpsWorksAppSslConfiguration where
   parseJSON (Object obj) =
     OpsWorksAppSslConfiguration <$>
-      obj .:? "Certificate" <*>
-      obj .:? "Chain" <*>
-      obj .:? "PrivateKey"
+      (obj .:? "Certificate") <*>
+      (obj .:? "Chain") <*>
+      (obj .:? "PrivateKey")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksAppSslConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceBlockDeviceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html
 
@@ -28,19 +29,19 @@
   toJSON OpsWorksInstanceBlockDeviceMapping{..} =
     object $
     catMaybes
-    [ ("DeviceName" .=) <$> _opsWorksInstanceBlockDeviceMappingDeviceName
-    , ("Ebs" .=) <$> _opsWorksInstanceBlockDeviceMappingEbs
-    , ("NoDevice" .=) <$> _opsWorksInstanceBlockDeviceMappingNoDevice
-    , ("VirtualName" .=) <$> _opsWorksInstanceBlockDeviceMappingVirtualName
+    [ fmap (("DeviceName",) . toJSON) _opsWorksInstanceBlockDeviceMappingDeviceName
+    , fmap (("Ebs",) . toJSON) _opsWorksInstanceBlockDeviceMappingEbs
+    , fmap (("NoDevice",) . toJSON) _opsWorksInstanceBlockDeviceMappingNoDevice
+    , fmap (("VirtualName",) . toJSON) _opsWorksInstanceBlockDeviceMappingVirtualName
     ]
 
 instance FromJSON OpsWorksInstanceBlockDeviceMapping where
   parseJSON (Object obj) =
     OpsWorksInstanceBlockDeviceMapping <$>
-      obj .:? "DeviceName" <*>
-      obj .:? "Ebs" <*>
-      obj .:? "NoDevice" <*>
-      obj .:? "VirtualName"
+      (obj .:? "DeviceName") <*>
+      (obj .:? "Ebs") <*>
+      (obj .:? "NoDevice") <*>
+      (obj .:? "VirtualName")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksInstanceBlockDeviceMapping' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceEbsBlockDevice.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html
 
@@ -18,10 +19,10 @@
 -- 'opsWorksInstanceEbsBlockDevice' for a more convenient constructor.
 data OpsWorksInstanceEbsBlockDevice =
   OpsWorksInstanceEbsBlockDevice
-  { _opsWorksInstanceEbsBlockDeviceDeleteOnTermination :: Maybe (Val Bool')
-  , _opsWorksInstanceEbsBlockDeviceIops :: Maybe (Val Integer')
+  { _opsWorksInstanceEbsBlockDeviceDeleteOnTermination :: Maybe (Val Bool)
+  , _opsWorksInstanceEbsBlockDeviceIops :: Maybe (Val Integer)
   , _opsWorksInstanceEbsBlockDeviceSnapshotId :: Maybe (Val Text)
-  , _opsWorksInstanceEbsBlockDeviceVolumeSize :: Maybe (Val Integer')
+  , _opsWorksInstanceEbsBlockDeviceVolumeSize :: Maybe (Val Integer)
   , _opsWorksInstanceEbsBlockDeviceVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -29,21 +30,21 @@
   toJSON OpsWorksInstanceEbsBlockDevice{..} =
     object $
     catMaybes
-    [ ("DeleteOnTermination" .=) <$> _opsWorksInstanceEbsBlockDeviceDeleteOnTermination
-    , ("Iops" .=) <$> _opsWorksInstanceEbsBlockDeviceIops
-    , ("SnapshotId" .=) <$> _opsWorksInstanceEbsBlockDeviceSnapshotId
-    , ("VolumeSize" .=) <$> _opsWorksInstanceEbsBlockDeviceVolumeSize
-    , ("VolumeType" .=) <$> _opsWorksInstanceEbsBlockDeviceVolumeType
+    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _opsWorksInstanceEbsBlockDeviceDeleteOnTermination
+    , fmap (("Iops",) . toJSON . fmap Integer') _opsWorksInstanceEbsBlockDeviceIops
+    , fmap (("SnapshotId",) . toJSON) _opsWorksInstanceEbsBlockDeviceSnapshotId
+    , fmap (("VolumeSize",) . toJSON . fmap Integer') _opsWorksInstanceEbsBlockDeviceVolumeSize
+    , fmap (("VolumeType",) . toJSON) _opsWorksInstanceEbsBlockDeviceVolumeType
     ]
 
 instance FromJSON OpsWorksInstanceEbsBlockDevice where
   parseJSON (Object obj) =
     OpsWorksInstanceEbsBlockDevice <$>
-      obj .:? "DeleteOnTermination" <*>
-      obj .:? "Iops" <*>
-      obj .:? "SnapshotId" <*>
-      obj .:? "VolumeSize" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "SnapshotId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VolumeSize") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksInstanceEbsBlockDevice' containing required
@@ -60,11 +61,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-deleteontermination
-owiebdDeleteOnTermination :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Bool'))
+owiebdDeleteOnTermination :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Bool))
 owiebdDeleteOnTermination = lens _opsWorksInstanceEbsBlockDeviceDeleteOnTermination (\s a -> s { _opsWorksInstanceEbsBlockDeviceDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-iops
-owiebdIops :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Integer'))
+owiebdIops :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Integer))
 owiebdIops = lens _opsWorksInstanceEbsBlockDeviceIops (\s a -> s { _opsWorksInstanceEbsBlockDeviceIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-snapshotid
@@ -72,7 +73,7 @@
 owiebdSnapshotId = lens _opsWorksInstanceEbsBlockDeviceSnapshotId (\s a -> s { _opsWorksInstanceEbsBlockDeviceSnapshotId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-volumesize
-owiebdVolumeSize :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Integer'))
+owiebdVolumeSize :: Lens' OpsWorksInstanceEbsBlockDevice (Maybe (Val Integer))
 owiebdVolumeSize = lens _opsWorksInstanceEbsBlockDeviceVolumeSize (\s a -> s { _opsWorksInstanceEbsBlockDeviceVolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksInstanceTimeBasedAutoScaling.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html
 
@@ -31,25 +32,25 @@
   toJSON OpsWorksInstanceTimeBasedAutoScaling{..} =
     object $
     catMaybes
-    [ ("Friday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingFriday
-    , ("Monday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingMonday
-    , ("Saturday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingSaturday
-    , ("Sunday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingSunday
-    , ("Thursday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingThursday
-    , ("Tuesday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingTuesday
-    , ("Wednesday" .=) <$> _opsWorksInstanceTimeBasedAutoScalingWednesday
+    [ fmap (("Friday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingFriday
+    , fmap (("Monday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingMonday
+    , fmap (("Saturday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingSaturday
+    , fmap (("Sunday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingSunday
+    , fmap (("Thursday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingThursday
+    , fmap (("Tuesday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingTuesday
+    , fmap (("Wednesday",) . toJSON) _opsWorksInstanceTimeBasedAutoScalingWednesday
     ]
 
 instance FromJSON OpsWorksInstanceTimeBasedAutoScaling where
   parseJSON (Object obj) =
     OpsWorksInstanceTimeBasedAutoScaling <$>
-      obj .:? "Friday" <*>
-      obj .:? "Monday" <*>
-      obj .:? "Saturday" <*>
-      obj .:? "Sunday" <*>
-      obj .:? "Thursday" <*>
-      obj .:? "Tuesday" <*>
-      obj .:? "Wednesday"
+      (obj .:? "Friday") <*>
+      (obj .:? "Monday") <*>
+      (obj .:? "Saturday") <*>
+      (obj .:? "Sunday") <*>
+      (obj .:? "Thursday") <*>
+      (obj .:? "Tuesday") <*>
+      (obj .:? "Wednesday")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksInstanceTimeBasedAutoScaling' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerAutoScalingThresholds.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html
 
@@ -18,35 +19,35 @@
 -- 'opsWorksLayerAutoScalingThresholds' for a more convenient constructor.
 data OpsWorksLayerAutoScalingThresholds =
   OpsWorksLayerAutoScalingThresholds
-  { _opsWorksLayerAutoScalingThresholdsCpuThreshold :: Maybe (Val Double')
-  , _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime :: Maybe (Val Integer')
-  , _opsWorksLayerAutoScalingThresholdsInstanceCount :: Maybe (Val Integer')
-  , _opsWorksLayerAutoScalingThresholdsLoadThreshold :: Maybe (Val Double')
-  , _opsWorksLayerAutoScalingThresholdsMemoryThreshold :: Maybe (Val Double')
-  , _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime :: Maybe (Val Integer')
+  { _opsWorksLayerAutoScalingThresholdsCpuThreshold :: Maybe (Val Double)
+  , _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime :: Maybe (Val Integer)
+  , _opsWorksLayerAutoScalingThresholdsInstanceCount :: Maybe (Val Integer)
+  , _opsWorksLayerAutoScalingThresholdsLoadThreshold :: Maybe (Val Double)
+  , _opsWorksLayerAutoScalingThresholdsMemoryThreshold :: Maybe (Val Double)
+  , _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON OpsWorksLayerAutoScalingThresholds where
   toJSON OpsWorksLayerAutoScalingThresholds{..} =
     object $
     catMaybes
-    [ ("CpuThreshold" .=) <$> _opsWorksLayerAutoScalingThresholdsCpuThreshold
-    , ("IgnoreMetricsTime" .=) <$> _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime
-    , ("InstanceCount" .=) <$> _opsWorksLayerAutoScalingThresholdsInstanceCount
-    , ("LoadThreshold" .=) <$> _opsWorksLayerAutoScalingThresholdsLoadThreshold
-    , ("MemoryThreshold" .=) <$> _opsWorksLayerAutoScalingThresholdsMemoryThreshold
-    , ("ThresholdsWaitTime" .=) <$> _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime
+    [ fmap (("CpuThreshold",) . toJSON . fmap Double') _opsWorksLayerAutoScalingThresholdsCpuThreshold
+    , fmap (("IgnoreMetricsTime",) . toJSON . fmap Integer') _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime
+    , fmap (("InstanceCount",) . toJSON . fmap Integer') _opsWorksLayerAutoScalingThresholdsInstanceCount
+    , fmap (("LoadThreshold",) . toJSON . fmap Double') _opsWorksLayerAutoScalingThresholdsLoadThreshold
+    , fmap (("MemoryThreshold",) . toJSON . fmap Double') _opsWorksLayerAutoScalingThresholdsMemoryThreshold
+    , fmap (("ThresholdsWaitTime",) . toJSON . fmap Integer') _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime
     ]
 
 instance FromJSON OpsWorksLayerAutoScalingThresholds where
   parseJSON (Object obj) =
     OpsWorksLayerAutoScalingThresholds <$>
-      obj .:? "CpuThreshold" <*>
-      obj .:? "IgnoreMetricsTime" <*>
-      obj .:? "InstanceCount" <*>
-      obj .:? "LoadThreshold" <*>
-      obj .:? "MemoryThreshold" <*>
-      obj .:? "ThresholdsWaitTime"
+      fmap (fmap (fmap unDouble')) (obj .:? "CpuThreshold") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "IgnoreMetricsTime") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "InstanceCount") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "LoadThreshold") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MemoryThreshold") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ThresholdsWaitTime")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerAutoScalingThresholds' containing required
@@ -64,25 +65,25 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-cputhreshold
-owlastCpuThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double'))
+owlastCpuThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double))
 owlastCpuThreshold = lens _opsWorksLayerAutoScalingThresholdsCpuThreshold (\s a -> s { _opsWorksLayerAutoScalingThresholdsCpuThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-ignoremetricstime
-owlastIgnoreMetricsTime :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer'))
+owlastIgnoreMetricsTime :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer))
 owlastIgnoreMetricsTime = lens _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime (\s a -> s { _opsWorksLayerAutoScalingThresholdsIgnoreMetricsTime = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-instancecount
-owlastInstanceCount :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer'))
+owlastInstanceCount :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer))
 owlastInstanceCount = lens _opsWorksLayerAutoScalingThresholdsInstanceCount (\s a -> s { _opsWorksLayerAutoScalingThresholdsInstanceCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-loadthreshold
-owlastLoadThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double'))
+owlastLoadThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double))
 owlastLoadThreshold = lens _opsWorksLayerAutoScalingThresholdsLoadThreshold (\s a -> s { _opsWorksLayerAutoScalingThresholdsLoadThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-memorythreshold
-owlastMemoryThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double'))
+owlastMemoryThreshold :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Double))
 owlastMemoryThreshold = lens _opsWorksLayerAutoScalingThresholdsMemoryThreshold (\s a -> s { _opsWorksLayerAutoScalingThresholdsMemoryThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-thresholdwaittime
-owlastThresholdsWaitTime :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer'))
+owlastThresholdsWaitTime :: Lens' OpsWorksLayerAutoScalingThresholds (Maybe (Val Integer))
 owlastThresholdsWaitTime = lens _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime (\s a -> s { _opsWorksLayerAutoScalingThresholdsThresholdsWaitTime = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLifecycleEventConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html
 
@@ -26,13 +27,13 @@
   toJSON OpsWorksLayerLifecycleEventConfiguration{..} =
     object $
     catMaybes
-    [ ("ShutdownEventConfiguration" .=) <$> _opsWorksLayerLifecycleEventConfigurationShutdownEventConfiguration
+    [ fmap (("ShutdownEventConfiguration",) . toJSON) _opsWorksLayerLifecycleEventConfigurationShutdownEventConfiguration
     ]
 
 instance FromJSON OpsWorksLayerLifecycleEventConfiguration where
   parseJSON (Object obj) =
     OpsWorksLayerLifecycleEventConfiguration <$>
-      obj .:? "ShutdownEventConfiguration"
+      (obj .:? "ShutdownEventConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerLifecycleEventConfiguration' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerLoadBasedAutoScaling.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html
 
@@ -19,7 +20,7 @@
 data OpsWorksLayerLoadBasedAutoScaling =
   OpsWorksLayerLoadBasedAutoScaling
   { _opsWorksLayerLoadBasedAutoScalingDownScaling :: Maybe OpsWorksLayerAutoScalingThresholds
-  , _opsWorksLayerLoadBasedAutoScalingEnable :: Maybe (Val Bool')
+  , _opsWorksLayerLoadBasedAutoScalingEnable :: Maybe (Val Bool)
   , _opsWorksLayerLoadBasedAutoScalingUpScaling :: Maybe OpsWorksLayerAutoScalingThresholds
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON OpsWorksLayerLoadBasedAutoScaling{..} =
     object $
     catMaybes
-    [ ("DownScaling" .=) <$> _opsWorksLayerLoadBasedAutoScalingDownScaling
-    , ("Enable" .=) <$> _opsWorksLayerLoadBasedAutoScalingEnable
-    , ("UpScaling" .=) <$> _opsWorksLayerLoadBasedAutoScalingUpScaling
+    [ fmap (("DownScaling",) . toJSON) _opsWorksLayerLoadBasedAutoScalingDownScaling
+    , fmap (("Enable",) . toJSON . fmap Bool') _opsWorksLayerLoadBasedAutoScalingEnable
+    , fmap (("UpScaling",) . toJSON) _opsWorksLayerLoadBasedAutoScalingUpScaling
     ]
 
 instance FromJSON OpsWorksLayerLoadBasedAutoScaling where
   parseJSON (Object obj) =
     OpsWorksLayerLoadBasedAutoScaling <$>
-      obj .:? "DownScaling" <*>
-      obj .:? "Enable" <*>
-      obj .:? "UpScaling"
+      (obj .:? "DownScaling") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enable") <*>
+      (obj .:? "UpScaling")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerLoadBasedAutoScaling' containing required
@@ -56,7 +57,7 @@
 owllbasDownScaling = lens _opsWorksLayerLoadBasedAutoScalingDownScaling (\s a -> s { _opsWorksLayerLoadBasedAutoScalingDownScaling = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html#cfn-opsworks-layer-loadbasedautoscaling-enable
-owllbasEnable :: Lens' OpsWorksLayerLoadBasedAutoScaling (Maybe (Val Bool'))
+owllbasEnable :: Lens' OpsWorksLayerLoadBasedAutoScaling (Maybe (Val Bool))
 owllbasEnable = lens _opsWorksLayerLoadBasedAutoScalingEnable (\s a -> s { _opsWorksLayerLoadBasedAutoScalingEnable = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html#cfn-opsworks-layer-loadbasedautoscaling-upscaling
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerRecipes.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html
 
@@ -18,32 +19,32 @@
 -- 'opsWorksLayerRecipes' for a more convenient constructor.
 data OpsWorksLayerRecipes =
   OpsWorksLayerRecipes
-  { _opsWorksLayerRecipesConfigure :: Maybe [Val Text]
-  , _opsWorksLayerRecipesDeploy :: Maybe [Val Text]
-  , _opsWorksLayerRecipesSetup :: Maybe [Val Text]
-  , _opsWorksLayerRecipesShutdown :: Maybe [Val Text]
-  , _opsWorksLayerRecipesUndeploy :: Maybe [Val Text]
+  { _opsWorksLayerRecipesConfigure :: Maybe (ValList Text)
+  , _opsWorksLayerRecipesDeploy :: Maybe (ValList Text)
+  , _opsWorksLayerRecipesSetup :: Maybe (ValList Text)
+  , _opsWorksLayerRecipesShutdown :: Maybe (ValList Text)
+  , _opsWorksLayerRecipesUndeploy :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON OpsWorksLayerRecipes where
   toJSON OpsWorksLayerRecipes{..} =
     object $
     catMaybes
-    [ ("Configure" .=) <$> _opsWorksLayerRecipesConfigure
-    , ("Deploy" .=) <$> _opsWorksLayerRecipesDeploy
-    , ("Setup" .=) <$> _opsWorksLayerRecipesSetup
-    , ("Shutdown" .=) <$> _opsWorksLayerRecipesShutdown
-    , ("Undeploy" .=) <$> _opsWorksLayerRecipesUndeploy
+    [ fmap (("Configure",) . toJSON) _opsWorksLayerRecipesConfigure
+    , fmap (("Deploy",) . toJSON) _opsWorksLayerRecipesDeploy
+    , fmap (("Setup",) . toJSON) _opsWorksLayerRecipesSetup
+    , fmap (("Shutdown",) . toJSON) _opsWorksLayerRecipesShutdown
+    , fmap (("Undeploy",) . toJSON) _opsWorksLayerRecipesUndeploy
     ]
 
 instance FromJSON OpsWorksLayerRecipes where
   parseJSON (Object obj) =
     OpsWorksLayerRecipes <$>
-      obj .:? "Configure" <*>
-      obj .:? "Deploy" <*>
-      obj .:? "Setup" <*>
-      obj .:? "Shutdown" <*>
-      obj .:? "Undeploy"
+      (obj .:? "Configure") <*>
+      (obj .:? "Deploy") <*>
+      (obj .:? "Setup") <*>
+      (obj .:? "Shutdown") <*>
+      (obj .:? "Undeploy")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerRecipes' containing required fields as
@@ -60,21 +61,21 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-configure
-owlrConfigure :: Lens' OpsWorksLayerRecipes (Maybe [Val Text])
+owlrConfigure :: Lens' OpsWorksLayerRecipes (Maybe (ValList Text))
 owlrConfigure = lens _opsWorksLayerRecipesConfigure (\s a -> s { _opsWorksLayerRecipesConfigure = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-deploy
-owlrDeploy :: Lens' OpsWorksLayerRecipes (Maybe [Val Text])
+owlrDeploy :: Lens' OpsWorksLayerRecipes (Maybe (ValList Text))
 owlrDeploy = lens _opsWorksLayerRecipesDeploy (\s a -> s { _opsWorksLayerRecipesDeploy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-setup
-owlrSetup :: Lens' OpsWorksLayerRecipes (Maybe [Val Text])
+owlrSetup :: Lens' OpsWorksLayerRecipes (Maybe (ValList Text))
 owlrSetup = lens _opsWorksLayerRecipesSetup (\s a -> s { _opsWorksLayerRecipesSetup = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-shutdown
-owlrShutdown :: Lens' OpsWorksLayerRecipes (Maybe [Val Text])
+owlrShutdown :: Lens' OpsWorksLayerRecipes (Maybe (ValList Text))
 owlrShutdown = lens _opsWorksLayerRecipesShutdown (\s a -> s { _opsWorksLayerRecipesShutdown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-undeploy
-owlrUndeploy :: Lens' OpsWorksLayerRecipes (Maybe [Val Text])
+owlrUndeploy :: Lens' OpsWorksLayerRecipes (Maybe (ValList Text))
 owlrUndeploy = lens _opsWorksLayerRecipesUndeploy (\s a -> s { _opsWorksLayerRecipesUndeploy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerShutdownEventConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html
 
@@ -19,23 +20,23 @@
 -- constructor.
 data OpsWorksLayerShutdownEventConfiguration =
   OpsWorksLayerShutdownEventConfiguration
-  { _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained :: Maybe (Val Bool')
-  , _opsWorksLayerShutdownEventConfigurationExecutionTimeout :: Maybe (Val Integer')
+  { _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained :: Maybe (Val Bool)
+  , _opsWorksLayerShutdownEventConfigurationExecutionTimeout :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON OpsWorksLayerShutdownEventConfiguration where
   toJSON OpsWorksLayerShutdownEventConfiguration{..} =
     object $
     catMaybes
-    [ ("DelayUntilElbConnectionsDrained" .=) <$> _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained
-    , ("ExecutionTimeout" .=) <$> _opsWorksLayerShutdownEventConfigurationExecutionTimeout
+    [ fmap (("DelayUntilElbConnectionsDrained",) . toJSON . fmap Bool') _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained
+    , fmap (("ExecutionTimeout",) . toJSON . fmap Integer') _opsWorksLayerShutdownEventConfigurationExecutionTimeout
     ]
 
 instance FromJSON OpsWorksLayerShutdownEventConfiguration where
   parseJSON (Object obj) =
     OpsWorksLayerShutdownEventConfiguration <$>
-      obj .:? "DelayUntilElbConnectionsDrained" <*>
-      obj .:? "ExecutionTimeout"
+      fmap (fmap (fmap unBool')) (obj .:? "DelayUntilElbConnectionsDrained") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ExecutionTimeout")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerShutdownEventConfiguration' containing
@@ -49,9 +50,9 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html#cfn-opsworks-layer-lifecycleconfiguration-shutdowneventconfiguration-delayuntilelbconnectionsdrained
-owlsecDelayUntilElbConnectionsDrained :: Lens' OpsWorksLayerShutdownEventConfiguration (Maybe (Val Bool'))
+owlsecDelayUntilElbConnectionsDrained :: Lens' OpsWorksLayerShutdownEventConfiguration (Maybe (Val Bool))
 owlsecDelayUntilElbConnectionsDrained = lens _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained (\s a -> s { _opsWorksLayerShutdownEventConfigurationDelayUntilElbConnectionsDrained = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html#cfn-opsworks-layer-lifecycleconfiguration-shutdowneventconfiguration-executiontimeout
-owlsecExecutionTimeout :: Lens' OpsWorksLayerShutdownEventConfiguration (Maybe (Val Integer'))
+owlsecExecutionTimeout :: Lens' OpsWorksLayerShutdownEventConfiguration (Maybe (Val Integer))
 owlsecExecutionTimeout = lens _opsWorksLayerShutdownEventConfigurationExecutionTimeout (\s a -> s { _opsWorksLayerShutdownEventConfigurationExecutionTimeout = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksLayerVolumeConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html
 
@@ -18,11 +19,11 @@
 -- 'opsWorksLayerVolumeConfiguration' for a more convenient constructor.
 data OpsWorksLayerVolumeConfiguration =
   OpsWorksLayerVolumeConfiguration
-  { _opsWorksLayerVolumeConfigurationIops :: Maybe (Val Integer')
+  { _opsWorksLayerVolumeConfigurationIops :: Maybe (Val Integer)
   , _opsWorksLayerVolumeConfigurationMountPoint :: Maybe (Val Text)
-  , _opsWorksLayerVolumeConfigurationNumberOfDisks :: Maybe (Val Integer')
-  , _opsWorksLayerVolumeConfigurationRaidLevel :: Maybe (Val Integer')
-  , _opsWorksLayerVolumeConfigurationSize :: Maybe (Val Integer')
+  , _opsWorksLayerVolumeConfigurationNumberOfDisks :: Maybe (Val Integer)
+  , _opsWorksLayerVolumeConfigurationRaidLevel :: Maybe (Val Integer)
+  , _opsWorksLayerVolumeConfigurationSize :: Maybe (Val Integer)
   , _opsWorksLayerVolumeConfigurationVolumeType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,23 +31,23 @@
   toJSON OpsWorksLayerVolumeConfiguration{..} =
     object $
     catMaybes
-    [ ("Iops" .=) <$> _opsWorksLayerVolumeConfigurationIops
-    , ("MountPoint" .=) <$> _opsWorksLayerVolumeConfigurationMountPoint
-    , ("NumberOfDisks" .=) <$> _opsWorksLayerVolumeConfigurationNumberOfDisks
-    , ("RaidLevel" .=) <$> _opsWorksLayerVolumeConfigurationRaidLevel
-    , ("Size" .=) <$> _opsWorksLayerVolumeConfigurationSize
-    , ("VolumeType" .=) <$> _opsWorksLayerVolumeConfigurationVolumeType
+    [ fmap (("Iops",) . toJSON . fmap Integer') _opsWorksLayerVolumeConfigurationIops
+    , fmap (("MountPoint",) . toJSON) _opsWorksLayerVolumeConfigurationMountPoint
+    , fmap (("NumberOfDisks",) . toJSON . fmap Integer') _opsWorksLayerVolumeConfigurationNumberOfDisks
+    , fmap (("RaidLevel",) . toJSON . fmap Integer') _opsWorksLayerVolumeConfigurationRaidLevel
+    , fmap (("Size",) . toJSON . fmap Integer') _opsWorksLayerVolumeConfigurationSize
+    , fmap (("VolumeType",) . toJSON) _opsWorksLayerVolumeConfigurationVolumeType
     ]
 
 instance FromJSON OpsWorksLayerVolumeConfiguration where
   parseJSON (Object obj) =
     OpsWorksLayerVolumeConfiguration <$>
-      obj .:? "Iops" <*>
-      obj .:? "MountPoint" <*>
-      obj .:? "NumberOfDisks" <*>
-      obj .:? "RaidLevel" <*>
-      obj .:? "Size" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "MountPoint") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfDisks") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "RaidLevel") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Size") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayerVolumeConfiguration' containing required
@@ -64,7 +65,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-iops
-owlvcIops :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer'))
+owlvcIops :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer))
 owlvcIops = lens _opsWorksLayerVolumeConfigurationIops (\s a -> s { _opsWorksLayerVolumeConfigurationIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-mountpoint
@@ -72,15 +73,15 @@
 owlvcMountPoint = lens _opsWorksLayerVolumeConfigurationMountPoint (\s a -> s { _opsWorksLayerVolumeConfigurationMountPoint = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-numberofdisks
-owlvcNumberOfDisks :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer'))
+owlvcNumberOfDisks :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer))
 owlvcNumberOfDisks = lens _opsWorksLayerVolumeConfigurationNumberOfDisks (\s a -> s { _opsWorksLayerVolumeConfigurationNumberOfDisks = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-raidlevel
-owlvcRaidLevel :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer'))
+owlvcRaidLevel :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer))
 owlvcRaidLevel = lens _opsWorksLayerVolumeConfigurationRaidLevel (\s a -> s { _opsWorksLayerVolumeConfigurationRaidLevel = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-size
-owlvcSize :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer'))
+owlvcSize :: Lens' OpsWorksLayerVolumeConfiguration (Maybe (Val Integer))
 owlvcSize = lens _opsWorksLayerVolumeConfigurationSize (\s a -> s { _opsWorksLayerVolumeConfigurationSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-volumetype
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackChefConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html
 
@@ -19,22 +20,22 @@
 data OpsWorksStackChefConfiguration =
   OpsWorksStackChefConfiguration
   { _opsWorksStackChefConfigurationBerkshelfVersion :: Maybe (Val Text)
-  , _opsWorksStackChefConfigurationManageBerkshelf :: Maybe (Val Bool')
+  , _opsWorksStackChefConfigurationManageBerkshelf :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON OpsWorksStackChefConfiguration where
   toJSON OpsWorksStackChefConfiguration{..} =
     object $
     catMaybes
-    [ ("BerkshelfVersion" .=) <$> _opsWorksStackChefConfigurationBerkshelfVersion
-    , ("ManageBerkshelf" .=) <$> _opsWorksStackChefConfigurationManageBerkshelf
+    [ fmap (("BerkshelfVersion",) . toJSON) _opsWorksStackChefConfigurationBerkshelfVersion
+    , fmap (("ManageBerkshelf",) . toJSON . fmap Bool') _opsWorksStackChefConfigurationManageBerkshelf
     ]
 
 instance FromJSON OpsWorksStackChefConfiguration where
   parseJSON (Object obj) =
     OpsWorksStackChefConfiguration <$>
-      obj .:? "BerkshelfVersion" <*>
-      obj .:? "ManageBerkshelf"
+      (obj .:? "BerkshelfVersion") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ManageBerkshelf")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStackChefConfiguration' containing required
@@ -52,5 +53,5 @@
 owsccBerkshelfVersion = lens _opsWorksStackChefConfigurationBerkshelfVersion (\s a -> s { _opsWorksStackChefConfigurationBerkshelfVersion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html#cfn-opsworks-chefconfiguration-berkshelfversion
-owsccManageBerkshelf :: Lens' OpsWorksStackChefConfiguration (Maybe (Val Bool'))
+owsccManageBerkshelf :: Lens' OpsWorksStackChefConfiguration (Maybe (Val Bool))
 owsccManageBerkshelf = lens _opsWorksStackChefConfigurationManageBerkshelf (\s a -> s { _opsWorksStackChefConfigurationManageBerkshelf = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackElasticIp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html
 
@@ -26,15 +27,15 @@
   toJSON OpsWorksStackElasticIp{..} =
     object $
     catMaybes
-    [ Just ("Ip" .= _opsWorksStackElasticIpIp)
-    , ("Name" .=) <$> _opsWorksStackElasticIpName
+    [ (Just . ("Ip",) . toJSON) _opsWorksStackElasticIpIp
+    , fmap (("Name",) . toJSON) _opsWorksStackElasticIpName
     ]
 
 instance FromJSON OpsWorksStackElasticIp where
   parseJSON (Object obj) =
     OpsWorksStackElasticIp <$>
-      obj .: "Ip" <*>
-      obj .:? "Name"
+      (obj .: "Ip") <*>
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStackElasticIp' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackRdsDbInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html
 
@@ -27,17 +28,17 @@
   toJSON OpsWorksStackRdsDbInstance{..} =
     object $
     catMaybes
-    [ Just ("DbPassword" .= _opsWorksStackRdsDbInstanceDbPassword)
-    , Just ("DbUser" .= _opsWorksStackRdsDbInstanceDbUser)
-    , Just ("RdsDbInstanceArn" .= _opsWorksStackRdsDbInstanceRdsDbInstanceArn)
+    [ (Just . ("DbPassword",) . toJSON) _opsWorksStackRdsDbInstanceDbPassword
+    , (Just . ("DbUser",) . toJSON) _opsWorksStackRdsDbInstanceDbUser
+    , (Just . ("RdsDbInstanceArn",) . toJSON) _opsWorksStackRdsDbInstanceRdsDbInstanceArn
     ]
 
 instance FromJSON OpsWorksStackRdsDbInstance where
   parseJSON (Object obj) =
     OpsWorksStackRdsDbInstance <$>
-      obj .: "DbPassword" <*>
-      obj .: "DbUser" <*>
-      obj .: "RdsDbInstanceArn"
+      (obj .: "DbPassword") <*>
+      (obj .: "DbUser") <*>
+      (obj .: "RdsDbInstanceArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStackRdsDbInstance' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackSource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
 
@@ -30,23 +31,23 @@
   toJSON OpsWorksStackSource{..} =
     object $
     catMaybes
-    [ ("Password" .=) <$> _opsWorksStackSourcePassword
-    , ("Revision" .=) <$> _opsWorksStackSourceRevision
-    , ("SshKey" .=) <$> _opsWorksStackSourceSshKey
-    , ("Type" .=) <$> _opsWorksStackSourceType
-    , ("Url" .=) <$> _opsWorksStackSourceUrl
-    , ("Username" .=) <$> _opsWorksStackSourceUsername
+    [ fmap (("Password",) . toJSON) _opsWorksStackSourcePassword
+    , fmap (("Revision",) . toJSON) _opsWorksStackSourceRevision
+    , fmap (("SshKey",) . toJSON) _opsWorksStackSourceSshKey
+    , fmap (("Type",) . toJSON) _opsWorksStackSourceType
+    , fmap (("Url",) . toJSON) _opsWorksStackSourceUrl
+    , fmap (("Username",) . toJSON) _opsWorksStackSourceUsername
     ]
 
 instance FromJSON OpsWorksStackSource where
   parseJSON (Object obj) =
     OpsWorksStackSource <$>
-      obj .:? "Password" <*>
-      obj .:? "Revision" <*>
-      obj .:? "SshKey" <*>
-      obj .:? "Type" <*>
-      obj .:? "Url" <*>
-      obj .:? "Username"
+      (obj .:? "Password") <*>
+      (obj .:? "Revision") <*>
+      (obj .:? "SshKey") <*>
+      (obj .:? "Type") <*>
+      (obj .:? "Url") <*>
+      (obj .:? "Username")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStackSource' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
--- a/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksStackStackConfigurationManager.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html
 
@@ -27,15 +28,15 @@
   toJSON OpsWorksStackStackConfigurationManager{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _opsWorksStackStackConfigurationManagerName
-    , ("Version" .=) <$> _opsWorksStackStackConfigurationManagerVersion
+    [ fmap (("Name",) . toJSON) _opsWorksStackStackConfigurationManagerName
+    , fmap (("Version",) . toJSON) _opsWorksStackStackConfigurationManagerVersion
     ]
 
 instance FromJSON OpsWorksStackStackConfigurationManager where
   parseJSON (Object obj) =
     OpsWorksStackStackConfigurationManager <$>
-      obj .:? "Name" <*>
-      obj .:? "Version"
+      (obj .:? "Name") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStackStackConfigurationManager' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs b/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSDBSecurityGroupIngressProperty.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html
 
@@ -28,19 +29,19 @@
   toJSON RDSDBSecurityGroupIngressProperty{..} =
     object $
     catMaybes
-    [ ("CIDRIP" .=) <$> _rDSDBSecurityGroupIngressPropertyCIDRIP
-    , ("EC2SecurityGroupId" .=) <$> _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupId
-    , ("EC2SecurityGroupName" .=) <$> _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupName
-    , ("EC2SecurityGroupOwnerId" .=) <$> _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupOwnerId
+    [ fmap (("CIDRIP",) . toJSON) _rDSDBSecurityGroupIngressPropertyCIDRIP
+    , fmap (("EC2SecurityGroupId",) . toJSON) _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupId
+    , fmap (("EC2SecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupName
+    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _rDSDBSecurityGroupIngressPropertyEC2SecurityGroupOwnerId
     ]
 
 instance FromJSON RDSDBSecurityGroupIngressProperty where
   parseJSON (Object obj) =
     RDSDBSecurityGroupIngressProperty <$>
-      obj .:? "CIDRIP" <*>
-      obj .:? "EC2SecurityGroupId" <*>
-      obj .:? "EC2SecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupOwnerId"
+      (obj .:? "CIDRIP") <*>
+      (obj .:? "EC2SecurityGroupId") <*>
+      (obj .:? "EC2SecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupOwnerId")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBSecurityGroupIngressProperty' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html
 
@@ -18,32 +19,32 @@
 -- 'rdsOptionGroupOptionConfiguration' for a more convenient constructor.
 data RDSOptionGroupOptionConfiguration =
   RDSOptionGroupOptionConfiguration
-  { _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships :: Maybe [Val Text]
+  { _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships :: Maybe (ValList Text)
   , _rDSOptionGroupOptionConfigurationOptionName :: Val Text
   , _rDSOptionGroupOptionConfigurationOptionSettings :: Maybe RDSOptionGroupOptionSetting
-  , _rDSOptionGroupOptionConfigurationPort :: Maybe (Val Integer')
-  , _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships :: Maybe [Val Text]
+  , _rDSOptionGroupOptionConfigurationPort :: Maybe (Val Integer)
+  , _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON RDSOptionGroupOptionConfiguration where
   toJSON RDSOptionGroupOptionConfiguration{..} =
     object $
     catMaybes
-    [ ("DBSecurityGroupMemberships" .=) <$> _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships
-    , Just ("OptionName" .= _rDSOptionGroupOptionConfigurationOptionName)
-    , ("OptionSettings" .=) <$> _rDSOptionGroupOptionConfigurationOptionSettings
-    , ("Port" .=) <$> _rDSOptionGroupOptionConfigurationPort
-    , ("VpcSecurityGroupMemberships" .=) <$> _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships
+    [ fmap (("DBSecurityGroupMemberships",) . toJSON) _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships
+    , (Just . ("OptionName",) . toJSON) _rDSOptionGroupOptionConfigurationOptionName
+    , fmap (("OptionSettings",) . toJSON) _rDSOptionGroupOptionConfigurationOptionSettings
+    , fmap (("Port",) . toJSON . fmap Integer') _rDSOptionGroupOptionConfigurationPort
+    , fmap (("VpcSecurityGroupMemberships",) . toJSON) _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships
     ]
 
 instance FromJSON RDSOptionGroupOptionConfiguration where
   parseJSON (Object obj) =
     RDSOptionGroupOptionConfiguration <$>
-      obj .:? "DBSecurityGroupMemberships" <*>
-      obj .: "OptionName" <*>
-      obj .:? "OptionSettings" <*>
-      obj .:? "Port" <*>
-      obj .:? "VpcSecurityGroupMemberships"
+      (obj .:? "DBSecurityGroupMemberships") <*>
+      (obj .: "OptionName") <*>
+      (obj .:? "OptionSettings") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "VpcSecurityGroupMemberships")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSOptionGroupOptionConfiguration' containing required
@@ -61,7 +62,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-dbsecuritygroupmemberships
-rdsogocDBSecurityGroupMemberships :: Lens' RDSOptionGroupOptionConfiguration (Maybe [Val Text])
+rdsogocDBSecurityGroupMemberships :: Lens' RDSOptionGroupOptionConfiguration (Maybe (ValList Text))
 rdsogocDBSecurityGroupMemberships = lens _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships (\s a -> s { _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-optionname
@@ -73,9 +74,9 @@
 rdsogocOptionSettings = lens _rDSOptionGroupOptionConfigurationOptionSettings (\s a -> s { _rDSOptionGroupOptionConfigurationOptionSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-port
-rdsogocPort :: Lens' RDSOptionGroupOptionConfiguration (Maybe (Val Integer'))
+rdsogocPort :: Lens' RDSOptionGroupOptionConfiguration (Maybe (Val Integer))
 rdsogocPort = lens _rDSOptionGroupOptionConfigurationPort (\s a -> s { _rDSOptionGroupOptionConfigurationPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-vpcsecuritygroupmemberships
-rdsogocVpcSecurityGroupMemberships :: Lens' RDSOptionGroupOptionConfiguration (Maybe [Val Text])
+rdsogocVpcSecurityGroupMemberships :: Lens' RDSOptionGroupOptionConfiguration (Maybe (ValList Text))
 rdsogocVpcSecurityGroupMemberships = lens _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships (\s a -> s { _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionSetting.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html
 
@@ -26,15 +27,15 @@
   toJSON RDSOptionGroupOptionSetting{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _rDSOptionGroupOptionSettingName
-    , ("Value" .=) <$> _rDSOptionGroupOptionSettingValue
+    [ fmap (("Name",) . toJSON) _rDSOptionGroupOptionSettingName
+    , fmap (("Value",) . toJSON) _rDSOptionGroupOptionSettingValue
     ]
 
 instance FromJSON RDSOptionGroupOptionSetting where
   parseJSON (Object obj) =
     RDSOptionGroupOptionSetting <$>
-      obj .:? "Name" <*>
-      obj .:? "Value"
+      (obj .:? "Name") <*>
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSOptionGroupOptionSetting' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterLoggingProperties.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html
 
@@ -26,15 +27,15 @@
   toJSON RedshiftClusterLoggingProperties{..} =
     object $
     catMaybes
-    [ Just ("BucketName" .= _redshiftClusterLoggingPropertiesBucketName)
-    , ("S3KeyPrefix" .=) <$> _redshiftClusterLoggingPropertiesS3KeyPrefix
+    [ (Just . ("BucketName",) . toJSON) _redshiftClusterLoggingPropertiesBucketName
+    , fmap (("S3KeyPrefix",) . toJSON) _redshiftClusterLoggingPropertiesS3KeyPrefix
     ]
 
 instance FromJSON RedshiftClusterLoggingProperties where
   parseJSON (Object obj) =
     RedshiftClusterLoggingProperties <$>
-      obj .: "BucketName" <*>
-      obj .:? "S3KeyPrefix"
+      (obj .: "BucketName") <*>
+      (obj .:? "S3KeyPrefix")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterLoggingProperties' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
--- a/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RedshiftClusterParameterGroupParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html
 
@@ -27,15 +28,15 @@
   toJSON RedshiftClusterParameterGroupParameter{..} =
     object $
     catMaybes
-    [ Just ("ParameterName" .= _redshiftClusterParameterGroupParameterParameterName)
-    , Just ("ParameterValue" .= _redshiftClusterParameterGroupParameterParameterValue)
+    [ (Just . ("ParameterName",) . toJSON) _redshiftClusterParameterGroupParameterParameterName
+    , (Just . ("ParameterValue",) . toJSON) _redshiftClusterParameterGroupParameterParameterValue
     ]
 
 instance FromJSON RedshiftClusterParameterGroupParameter where
   parseJSON (Object obj) =
     RedshiftClusterParameterGroupParameter <$>
-      obj .: "ParameterName" <*>
-      obj .: "ParameterValue"
+      (obj .: "ParameterName") <*>
+      (obj .: "ParameterValue")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterParameterGroupParameter' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckAlarmIdentifier.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-alarmidentifier.html
 
@@ -26,15 +27,15 @@
   toJSON Route53HealthCheckAlarmIdentifier{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _route53HealthCheckAlarmIdentifierName)
-    , Just ("Region" .= _route53HealthCheckAlarmIdentifierRegion)
+    [ (Just . ("Name",) . toJSON) _route53HealthCheckAlarmIdentifierName
+    , (Just . ("Region",) . toJSON) _route53HealthCheckAlarmIdentifierRegion
     ]
 
 instance FromJSON Route53HealthCheckAlarmIdentifier where
   parseJSON (Object obj) =
     Route53HealthCheckAlarmIdentifier <$>
-      obj .: "Name" <*>
-      obj .: "Region"
+      (obj .: "Name") <*>
+      (obj .: "Region")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HealthCheckAlarmIdentifier' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html
 
@@ -19,17 +20,17 @@
 data Route53HealthCheckHealthCheckConfig =
   Route53HealthCheckHealthCheckConfig
   { _route53HealthCheckHealthCheckConfigAlarmIdentifier :: Maybe Route53HealthCheckAlarmIdentifier
-  , _route53HealthCheckHealthCheckConfigChildHealthChecks :: Maybe [Val Text]
-  , _route53HealthCheckHealthCheckConfigEnableSNI :: Maybe (Val Bool')
-  , _route53HealthCheckHealthCheckConfigFailureThreshold :: Maybe (Val Integer')
+  , _route53HealthCheckHealthCheckConfigChildHealthChecks :: Maybe (ValList Text)
+  , _route53HealthCheckHealthCheckConfigEnableSNI :: Maybe (Val Bool)
+  , _route53HealthCheckHealthCheckConfigFailureThreshold :: Maybe (Val Integer)
   , _route53HealthCheckHealthCheckConfigFullyQualifiedDomainName :: Maybe (Val Text)
-  , _route53HealthCheckHealthCheckConfigHealthThreshold :: Maybe (Val Integer')
+  , _route53HealthCheckHealthCheckConfigHealthThreshold :: Maybe (Val Integer)
   , _route53HealthCheckHealthCheckConfigIPAddress :: Maybe (Val Text)
   , _route53HealthCheckHealthCheckConfigInsufficientDataHealthStatus :: Maybe (Val Text)
-  , _route53HealthCheckHealthCheckConfigInverted :: Maybe (Val Bool')
-  , _route53HealthCheckHealthCheckConfigMeasureLatency :: Maybe (Val Bool')
-  , _route53HealthCheckHealthCheckConfigPort :: Maybe (Val Integer')
-  , _route53HealthCheckHealthCheckConfigRequestInterval :: Maybe (Val Integer')
+  , _route53HealthCheckHealthCheckConfigInverted :: Maybe (Val Bool)
+  , _route53HealthCheckHealthCheckConfigMeasureLatency :: Maybe (Val Bool)
+  , _route53HealthCheckHealthCheckConfigPort :: Maybe (Val Integer)
+  , _route53HealthCheckHealthCheckConfigRequestInterval :: Maybe (Val Integer)
   , _route53HealthCheckHealthCheckConfigResourcePath :: Maybe (Val Text)
   , _route53HealthCheckHealthCheckConfigSearchString :: Maybe (Val Text)
   , _route53HealthCheckHealthCheckConfigType :: Val Text
@@ -39,41 +40,41 @@
   toJSON Route53HealthCheckHealthCheckConfig{..} =
     object $
     catMaybes
-    [ ("AlarmIdentifier" .=) <$> _route53HealthCheckHealthCheckConfigAlarmIdentifier
-    , ("ChildHealthChecks" .=) <$> _route53HealthCheckHealthCheckConfigChildHealthChecks
-    , ("EnableSNI" .=) <$> _route53HealthCheckHealthCheckConfigEnableSNI
-    , ("FailureThreshold" .=) <$> _route53HealthCheckHealthCheckConfigFailureThreshold
-    , ("FullyQualifiedDomainName" .=) <$> _route53HealthCheckHealthCheckConfigFullyQualifiedDomainName
-    , ("HealthThreshold" .=) <$> _route53HealthCheckHealthCheckConfigHealthThreshold
-    , ("IPAddress" .=) <$> _route53HealthCheckHealthCheckConfigIPAddress
-    , ("InsufficientDataHealthStatus" .=) <$> _route53HealthCheckHealthCheckConfigInsufficientDataHealthStatus
-    , ("Inverted" .=) <$> _route53HealthCheckHealthCheckConfigInverted
-    , ("MeasureLatency" .=) <$> _route53HealthCheckHealthCheckConfigMeasureLatency
-    , ("Port" .=) <$> _route53HealthCheckHealthCheckConfigPort
-    , ("RequestInterval" .=) <$> _route53HealthCheckHealthCheckConfigRequestInterval
-    , ("ResourcePath" .=) <$> _route53HealthCheckHealthCheckConfigResourcePath
-    , ("SearchString" .=) <$> _route53HealthCheckHealthCheckConfigSearchString
-    , Just ("Type" .= _route53HealthCheckHealthCheckConfigType)
+    [ fmap (("AlarmIdentifier",) . toJSON) _route53HealthCheckHealthCheckConfigAlarmIdentifier
+    , fmap (("ChildHealthChecks",) . toJSON) _route53HealthCheckHealthCheckConfigChildHealthChecks
+    , fmap (("EnableSNI",) . toJSON . fmap Bool') _route53HealthCheckHealthCheckConfigEnableSNI
+    , fmap (("FailureThreshold",) . toJSON . fmap Integer') _route53HealthCheckHealthCheckConfigFailureThreshold
+    , fmap (("FullyQualifiedDomainName",) . toJSON) _route53HealthCheckHealthCheckConfigFullyQualifiedDomainName
+    , fmap (("HealthThreshold",) . toJSON . fmap Integer') _route53HealthCheckHealthCheckConfigHealthThreshold
+    , fmap (("IPAddress",) . toJSON) _route53HealthCheckHealthCheckConfigIPAddress
+    , fmap (("InsufficientDataHealthStatus",) . toJSON) _route53HealthCheckHealthCheckConfigInsufficientDataHealthStatus
+    , fmap (("Inverted",) . toJSON . fmap Bool') _route53HealthCheckHealthCheckConfigInverted
+    , fmap (("MeasureLatency",) . toJSON . fmap Bool') _route53HealthCheckHealthCheckConfigMeasureLatency
+    , fmap (("Port",) . toJSON . fmap Integer') _route53HealthCheckHealthCheckConfigPort
+    , fmap (("RequestInterval",) . toJSON . fmap Integer') _route53HealthCheckHealthCheckConfigRequestInterval
+    , fmap (("ResourcePath",) . toJSON) _route53HealthCheckHealthCheckConfigResourcePath
+    , fmap (("SearchString",) . toJSON) _route53HealthCheckHealthCheckConfigSearchString
+    , (Just . ("Type",) . toJSON) _route53HealthCheckHealthCheckConfigType
     ]
 
 instance FromJSON Route53HealthCheckHealthCheckConfig where
   parseJSON (Object obj) =
     Route53HealthCheckHealthCheckConfig <$>
-      obj .:? "AlarmIdentifier" <*>
-      obj .:? "ChildHealthChecks" <*>
-      obj .:? "EnableSNI" <*>
-      obj .:? "FailureThreshold" <*>
-      obj .:? "FullyQualifiedDomainName" <*>
-      obj .:? "HealthThreshold" <*>
-      obj .:? "IPAddress" <*>
-      obj .:? "InsufficientDataHealthStatus" <*>
-      obj .:? "Inverted" <*>
-      obj .:? "MeasureLatency" <*>
-      obj .:? "Port" <*>
-      obj .:? "RequestInterval" <*>
-      obj .:? "ResourcePath" <*>
-      obj .:? "SearchString" <*>
-      obj .: "Type"
+      (obj .:? "AlarmIdentifier") <*>
+      (obj .:? "ChildHealthChecks") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableSNI") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "FailureThreshold") <*>
+      (obj .:? "FullyQualifiedDomainName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HealthThreshold") <*>
+      (obj .:? "IPAddress") <*>
+      (obj .:? "InsufficientDataHealthStatus") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Inverted") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MeasureLatency") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "RequestInterval") <*>
+      (obj .:? "ResourcePath") <*>
+      (obj .:? "SearchString") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HealthCheckHealthCheckConfig' containing required
@@ -105,15 +106,15 @@
 rhchccAlarmIdentifier = lens _route53HealthCheckHealthCheckConfigAlarmIdentifier (\s a -> s { _route53HealthCheckHealthCheckConfigAlarmIdentifier = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-childhealthchecks
-rhchccChildHealthChecks :: Lens' Route53HealthCheckHealthCheckConfig (Maybe [Val Text])
+rhchccChildHealthChecks :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (ValList Text))
 rhchccChildHealthChecks = lens _route53HealthCheckHealthCheckConfigChildHealthChecks (\s a -> s { _route53HealthCheckHealthCheckConfigChildHealthChecks = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-enablesni
-rhchccEnableSNI :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool'))
+rhchccEnableSNI :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool))
 rhchccEnableSNI = lens _route53HealthCheckHealthCheckConfigEnableSNI (\s a -> s { _route53HealthCheckHealthCheckConfigEnableSNI = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-failurethreshold
-rhchccFailureThreshold :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer'))
+rhchccFailureThreshold :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer))
 rhchccFailureThreshold = lens _route53HealthCheckHealthCheckConfigFailureThreshold (\s a -> s { _route53HealthCheckHealthCheckConfigFailureThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-fullyqualifieddomainname
@@ -121,7 +122,7 @@
 rhchccFullyQualifiedDomainName = lens _route53HealthCheckHealthCheckConfigFullyQualifiedDomainName (\s a -> s { _route53HealthCheckHealthCheckConfigFullyQualifiedDomainName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-healththreshold
-rhchccHealthThreshold :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer'))
+rhchccHealthThreshold :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer))
 rhchccHealthThreshold = lens _route53HealthCheckHealthCheckConfigHealthThreshold (\s a -> s { _route53HealthCheckHealthCheckConfigHealthThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-ipaddress
@@ -133,19 +134,19 @@
 rhchccInsufficientDataHealthStatus = lens _route53HealthCheckHealthCheckConfigInsufficientDataHealthStatus (\s a -> s { _route53HealthCheckHealthCheckConfigInsufficientDataHealthStatus = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-inverted
-rhchccInverted :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool'))
+rhchccInverted :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool))
 rhchccInverted = lens _route53HealthCheckHealthCheckConfigInverted (\s a -> s { _route53HealthCheckHealthCheckConfigInverted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-measurelatency
-rhchccMeasureLatency :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool'))
+rhchccMeasureLatency :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Bool))
 rhchccMeasureLatency = lens _route53HealthCheckHealthCheckConfigMeasureLatency (\s a -> s { _route53HealthCheckHealthCheckConfigMeasureLatency = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-port
-rhchccPort :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer'))
+rhchccPort :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer))
 rhchccPort = lens _route53HealthCheckHealthCheckConfigPort (\s a -> s { _route53HealthCheckHealthCheckConfigPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-requestinterval
-rhchccRequestInterval :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer'))
+rhchccRequestInterval :: Lens' Route53HealthCheckHealthCheckConfig (Maybe (Val Integer))
 rhchccRequestInterval = lens _route53HealthCheckHealthCheckConfigRequestInterval (\s a -> s { _route53HealthCheckHealthCheckConfigRequestInterval = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-resourcepath
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HealthCheckHealthCheckTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthchecktag.html
 
@@ -26,15 +27,15 @@
   toJSON Route53HealthCheckHealthCheckTag{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _route53HealthCheckHealthCheckTagKey)
-    , Just ("Value" .= _route53HealthCheckHealthCheckTagValue)
+    [ (Just . ("Key",) . toJSON) _route53HealthCheckHealthCheckTagKey
+    , (Just . ("Value",) . toJSON) _route53HealthCheckHealthCheckTagValue
     ]
 
 instance FromJSON Route53HealthCheckHealthCheckTag where
   parseJSON (Object obj) =
     Route53HealthCheckHealthCheckTag <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HealthCheckHealthCheckTag' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzoneconfig.html
 
@@ -25,13 +26,13 @@
   toJSON Route53HostedZoneHostedZoneConfig{..} =
     object $
     catMaybes
-    [ ("Comment" .=) <$> _route53HostedZoneHostedZoneConfigComment
+    [ fmap (("Comment",) . toJSON) _route53HostedZoneHostedZoneConfigComment
     ]
 
 instance FromJSON Route53HostedZoneHostedZoneConfig where
   parseJSON (Object obj) =
     Route53HostedZoneHostedZoneConfig <$>
-      obj .:? "Comment"
+      (obj .:? "Comment")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HostedZoneHostedZoneConfig' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneHostedZoneTag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzonetags.html
 
@@ -26,15 +27,15 @@
   toJSON Route53HostedZoneHostedZoneTag{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _route53HostedZoneHostedZoneTagKey)
-    , Just ("Value" .= _route53HostedZoneHostedZoneTagValue)
+    [ (Just . ("Key",) . toJSON) _route53HostedZoneHostedZoneTagKey
+    , (Just . ("Value",) . toJSON) _route53HostedZoneHostedZoneTagValue
     ]
 
 instance FromJSON Route53HostedZoneHostedZoneTag where
   parseJSON (Object obj) =
     Route53HostedZoneHostedZoneTag <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HostedZoneHostedZoneTag' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53HostedZoneVPC.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone-hostedzonevpcs.html
 
@@ -26,15 +27,15 @@
   toJSON Route53HostedZoneVPC{..} =
     object $
     catMaybes
-    [ Just ("VPCId" .= _route53HostedZoneVPCVPCId)
-    , Just ("VPCRegion" .= _route53HostedZoneVPCVPCRegion)
+    [ (Just . ("VPCId",) . toJSON) _route53HostedZoneVPCVPCId
+    , (Just . ("VPCRegion",) . toJSON) _route53HostedZoneVPCVPCRegion
     ]
 
 instance FromJSON Route53HostedZoneVPC where
   parseJSON (Object obj) =
     Route53HostedZoneVPC <$>
-      obj .: "VPCId" <*>
-      obj .: "VPCRegion"
+      (obj .: "VPCId") <*>
+      (obj .: "VPCRegion")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HostedZoneVPC' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetAliasTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
 
@@ -19,7 +20,7 @@
 data Route53RecordSetAliasTarget =
   Route53RecordSetAliasTarget
   { _route53RecordSetAliasTargetDNSName :: Val Text
-  , _route53RecordSetAliasTargetEvaluateTargetHealth :: Maybe (Val Bool')
+  , _route53RecordSetAliasTargetEvaluateTargetHealth :: Maybe (Val Bool)
   , _route53RecordSetAliasTargetHostedZoneId :: Val Text
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON Route53RecordSetAliasTarget{..} =
     object $
     catMaybes
-    [ Just ("DNSName" .= _route53RecordSetAliasTargetDNSName)
-    , ("EvaluateTargetHealth" .=) <$> _route53RecordSetAliasTargetEvaluateTargetHealth
-    , Just ("HostedZoneId" .= _route53RecordSetAliasTargetHostedZoneId)
+    [ (Just . ("DNSName",) . toJSON) _route53RecordSetAliasTargetDNSName
+    , fmap (("EvaluateTargetHealth",) . toJSON . fmap Bool') _route53RecordSetAliasTargetEvaluateTargetHealth
+    , (Just . ("HostedZoneId",) . toJSON) _route53RecordSetAliasTargetHostedZoneId
     ]
 
 instance FromJSON Route53RecordSetAliasTarget where
   parseJSON (Object obj) =
     Route53RecordSetAliasTarget <$>
-      obj .: "DNSName" <*>
-      obj .:? "EvaluateTargetHealth" <*>
-      obj .: "HostedZoneId"
+      (obj .: "DNSName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EvaluateTargetHealth") <*>
+      (obj .: "HostedZoneId")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetAliasTarget' containing required fields
@@ -58,7 +59,7 @@
 rrsatDNSName = lens _route53RecordSetAliasTargetDNSName (\s a -> s { _route53RecordSetAliasTargetDNSName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-evaluatetargethealth
-rrsatEvaluateTargetHealth :: Lens' Route53RecordSetAliasTarget (Maybe (Val Bool'))
+rrsatEvaluateTargetHealth :: Lens' Route53RecordSetAliasTarget (Maybe (Val Bool))
 rrsatEvaluateTargetHealth = lens _route53RecordSetAliasTargetEvaluateTargetHealth (\s a -> s { _route53RecordSetAliasTargetEvaluateTargetHealth = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-hostedzoneid
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGeoLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
 
@@ -27,17 +28,17 @@
   toJSON Route53RecordSetGeoLocation{..} =
     object $
     catMaybes
-    [ ("ContinentCode" .=) <$> _route53RecordSetGeoLocationContinentCode
-    , ("CountryCode" .=) <$> _route53RecordSetGeoLocationCountryCode
-    , ("SubdivisionCode" .=) <$> _route53RecordSetGeoLocationSubdivisionCode
+    [ fmap (("ContinentCode",) . toJSON) _route53RecordSetGeoLocationContinentCode
+    , fmap (("CountryCode",) . toJSON) _route53RecordSetGeoLocationCountryCode
+    , fmap (("SubdivisionCode",) . toJSON) _route53RecordSetGeoLocationSubdivisionCode
     ]
 
 instance FromJSON Route53RecordSetGeoLocation where
   parseJSON (Object obj) =
     Route53RecordSetGeoLocation <$>
-      obj .:? "ContinentCode" <*>
-      obj .:? "CountryCode" <*>
-      obj .:? "SubdivisionCode"
+      (obj .:? "ContinentCode") <*>
+      (obj .:? "CountryCode") <*>
+      (obj .:? "SubdivisionCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetGeoLocation' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupAliasTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
 
@@ -19,7 +20,7 @@
 data Route53RecordSetGroupAliasTarget =
   Route53RecordSetGroupAliasTarget
   { _route53RecordSetGroupAliasTargetDNSName :: Val Text
-  , _route53RecordSetGroupAliasTargetEvaluateTargetHealth :: Maybe (Val Bool')
+  , _route53RecordSetGroupAliasTargetEvaluateTargetHealth :: Maybe (Val Bool)
   , _route53RecordSetGroupAliasTargetHostedZoneId :: Val Text
   } deriving (Show, Eq)
 
@@ -27,17 +28,17 @@
   toJSON Route53RecordSetGroupAliasTarget{..} =
     object $
     catMaybes
-    [ Just ("DNSName" .= _route53RecordSetGroupAliasTargetDNSName)
-    , ("EvaluateTargetHealth" .=) <$> _route53RecordSetGroupAliasTargetEvaluateTargetHealth
-    , Just ("HostedZoneId" .= _route53RecordSetGroupAliasTargetHostedZoneId)
+    [ (Just . ("DNSName",) . toJSON) _route53RecordSetGroupAliasTargetDNSName
+    , fmap (("EvaluateTargetHealth",) . toJSON . fmap Bool') _route53RecordSetGroupAliasTargetEvaluateTargetHealth
+    , (Just . ("HostedZoneId",) . toJSON) _route53RecordSetGroupAliasTargetHostedZoneId
     ]
 
 instance FromJSON Route53RecordSetGroupAliasTarget where
   parseJSON (Object obj) =
     Route53RecordSetGroupAliasTarget <$>
-      obj .: "DNSName" <*>
-      obj .:? "EvaluateTargetHealth" <*>
-      obj .: "HostedZoneId"
+      (obj .: "DNSName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EvaluateTargetHealth") <*>
+      (obj .: "HostedZoneId")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetGroupAliasTarget' containing required
@@ -58,7 +59,7 @@
 rrsgatDNSName = lens _route53RecordSetGroupAliasTargetDNSName (\s a -> s { _route53RecordSetGroupAliasTargetDNSName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-evaluatetargethealth
-rrsgatEvaluateTargetHealth :: Lens' Route53RecordSetGroupAliasTarget (Maybe (Val Bool'))
+rrsgatEvaluateTargetHealth :: Lens' Route53RecordSetGroupAliasTarget (Maybe (Val Bool))
 rrsgatEvaluateTargetHealth = lens _route53RecordSetGroupAliasTargetEvaluateTargetHealth (\s a -> s { _route53RecordSetGroupAliasTargetEvaluateTargetHealth = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-hostedzoneid
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupGeoLocation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
 
@@ -27,17 +28,17 @@
   toJSON Route53RecordSetGroupGeoLocation{..} =
     object $
     catMaybes
-    [ ("ContinentCode" .=) <$> _route53RecordSetGroupGeoLocationContinentCode
-    , ("CountryCode" .=) <$> _route53RecordSetGroupGeoLocationCountryCode
-    , ("SubdivisionCode" .=) <$> _route53RecordSetGroupGeoLocationSubdivisionCode
+    [ fmap (("ContinentCode",) . toJSON) _route53RecordSetGroupGeoLocationContinentCode
+    , fmap (("CountryCode",) . toJSON) _route53RecordSetGroupGeoLocationCountryCode
+    , fmap (("SubdivisionCode",) . toJSON) _route53RecordSetGroupGeoLocationSubdivisionCode
     ]
 
 instance FromJSON Route53RecordSetGroupGeoLocation where
   parseJSON (Object obj) =
     Route53RecordSetGroupGeoLocation <$>
-      obj .:? "ContinentCode" <*>
-      obj .:? "CountryCode" <*>
-      obj .:? "SubdivisionCode"
+      (obj .:? "ContinentCode") <*>
+      (obj .:? "CountryCode") <*>
+      (obj .:? "SubdivisionCode")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetGroupGeoLocation' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
--- a/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Route53RecordSetGroupRecordSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
 
@@ -28,50 +29,50 @@
   , _route53RecordSetGroupRecordSetHostedZoneName :: Maybe (Val Text)
   , _route53RecordSetGroupRecordSetName :: Val Text
   , _route53RecordSetGroupRecordSetRegion :: Maybe (Val Text)
-  , _route53RecordSetGroupRecordSetResourceRecords :: Maybe [Val Text]
+  , _route53RecordSetGroupRecordSetResourceRecords :: Maybe (ValList Text)
   , _route53RecordSetGroupRecordSetSetIdentifier :: Maybe (Val Text)
   , _route53RecordSetGroupRecordSetTTL :: Maybe (Val Text)
   , _route53RecordSetGroupRecordSetType :: Val Text
-  , _route53RecordSetGroupRecordSetWeight :: Maybe (Val Integer')
+  , _route53RecordSetGroupRecordSetWeight :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON Route53RecordSetGroupRecordSet where
   toJSON Route53RecordSetGroupRecordSet{..} =
     object $
     catMaybes
-    [ ("AliasTarget" .=) <$> _route53RecordSetGroupRecordSetAliasTarget
-    , ("Comment" .=) <$> _route53RecordSetGroupRecordSetComment
-    , ("Failover" .=) <$> _route53RecordSetGroupRecordSetFailover
-    , ("GeoLocation" .=) <$> _route53RecordSetGroupRecordSetGeoLocation
-    , ("HealthCheckId" .=) <$> _route53RecordSetGroupRecordSetHealthCheckId
-    , ("HostedZoneId" .=) <$> _route53RecordSetGroupRecordSetHostedZoneId
-    , ("HostedZoneName" .=) <$> _route53RecordSetGroupRecordSetHostedZoneName
-    , Just ("Name" .= _route53RecordSetGroupRecordSetName)
-    , ("Region" .=) <$> _route53RecordSetGroupRecordSetRegion
-    , ("ResourceRecords" .=) <$> _route53RecordSetGroupRecordSetResourceRecords
-    , ("SetIdentifier" .=) <$> _route53RecordSetGroupRecordSetSetIdentifier
-    , ("TTL" .=) <$> _route53RecordSetGroupRecordSetTTL
-    , Just ("Type" .= _route53RecordSetGroupRecordSetType)
-    , ("Weight" .=) <$> _route53RecordSetGroupRecordSetWeight
+    [ fmap (("AliasTarget",) . toJSON) _route53RecordSetGroupRecordSetAliasTarget
+    , fmap (("Comment",) . toJSON) _route53RecordSetGroupRecordSetComment
+    , fmap (("Failover",) . toJSON) _route53RecordSetGroupRecordSetFailover
+    , fmap (("GeoLocation",) . toJSON) _route53RecordSetGroupRecordSetGeoLocation
+    , fmap (("HealthCheckId",) . toJSON) _route53RecordSetGroupRecordSetHealthCheckId
+    , fmap (("HostedZoneId",) . toJSON) _route53RecordSetGroupRecordSetHostedZoneId
+    , fmap (("HostedZoneName",) . toJSON) _route53RecordSetGroupRecordSetHostedZoneName
+    , (Just . ("Name",) . toJSON) _route53RecordSetGroupRecordSetName
+    , fmap (("Region",) . toJSON) _route53RecordSetGroupRecordSetRegion
+    , fmap (("ResourceRecords",) . toJSON) _route53RecordSetGroupRecordSetResourceRecords
+    , fmap (("SetIdentifier",) . toJSON) _route53RecordSetGroupRecordSetSetIdentifier
+    , fmap (("TTL",) . toJSON) _route53RecordSetGroupRecordSetTTL
+    , (Just . ("Type",) . toJSON) _route53RecordSetGroupRecordSetType
+    , fmap (("Weight",) . toJSON . fmap Integer') _route53RecordSetGroupRecordSetWeight
     ]
 
 instance FromJSON Route53RecordSetGroupRecordSet where
   parseJSON (Object obj) =
     Route53RecordSetGroupRecordSet <$>
-      obj .:? "AliasTarget" <*>
-      obj .:? "Comment" <*>
-      obj .:? "Failover" <*>
-      obj .:? "GeoLocation" <*>
-      obj .:? "HealthCheckId" <*>
-      obj .:? "HostedZoneId" <*>
-      obj .:? "HostedZoneName" <*>
-      obj .: "Name" <*>
-      obj .:? "Region" <*>
-      obj .:? "ResourceRecords" <*>
-      obj .:? "SetIdentifier" <*>
-      obj .:? "TTL" <*>
-      obj .: "Type" <*>
-      obj .:? "Weight"
+      (obj .:? "AliasTarget") <*>
+      (obj .:? "Comment") <*>
+      (obj .:? "Failover") <*>
+      (obj .:? "GeoLocation") <*>
+      (obj .:? "HealthCheckId") <*>
+      (obj .:? "HostedZoneId") <*>
+      (obj .:? "HostedZoneName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Region") <*>
+      (obj .:? "ResourceRecords") <*>
+      (obj .:? "SetIdentifier") <*>
+      (obj .:? "TTL") <*>
+      (obj .: "Type") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Weight")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetGroupRecordSet' containing required
@@ -135,7 +136,7 @@
 rrsgrsRegion = lens _route53RecordSetGroupRecordSetRegion (\s a -> s { _route53RecordSetGroupRecordSetRegion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-resourcerecords
-rrsgrsResourceRecords :: Lens' Route53RecordSetGroupRecordSet (Maybe [Val Text])
+rrsgrsResourceRecords :: Lens' Route53RecordSetGroupRecordSet (Maybe (ValList Text))
 rrsgrsResourceRecords = lens _route53RecordSetGroupRecordSetResourceRecords (\s a -> s { _route53RecordSetGroupRecordSetResourceRecords = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-setidentifier
@@ -151,5 +152,5 @@
 rrsgrsType = lens _route53RecordSetGroupRecordSetType (\s a -> s { _route53RecordSetGroupRecordSetType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-weight
-rrsgrsWeight :: Lens' Route53RecordSetGroupRecordSet (Maybe (Val Integer'))
+rrsgrsWeight :: Lens' Route53RecordSetGroupRecordSet (Maybe (Val Integer))
 rrsgrsWeight = lens _route53RecordSetGroupRecordSetWeight (\s a -> s { _route53RecordSetGroupRecordSetWeight = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html
 
@@ -25,13 +26,13 @@
   toJSON S3BucketCorsConfiguration{..} =
     object $
     catMaybes
-    [ Just ("CorsRules" .= _s3BucketCorsConfigurationCorsRules)
+    [ (Just . ("CorsRules",) . toJSON) _s3BucketCorsConfigurationCorsRules
     ]
 
 instance FromJSON S3BucketCorsConfiguration where
   parseJSON (Object obj) =
     S3BucketCorsConfiguration <$>
-      obj .: "CorsRules"
+      (obj .: "CorsRules")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketCorsConfiguration' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketCorsRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html
 
@@ -18,42 +19,42 @@
 -- for a more convenient constructor.
 data S3BucketCorsRule =
   S3BucketCorsRule
-  { _s3BucketCorsRuleAllowedHeaders :: Maybe [Val Text]
-  , _s3BucketCorsRuleAllowedMethods :: [Val Text]
-  , _s3BucketCorsRuleAllowedOrigins :: [Val Text]
-  , _s3BucketCorsRuleExposedHeaders :: Maybe [Val Text]
+  { _s3BucketCorsRuleAllowedHeaders :: Maybe (ValList Text)
+  , _s3BucketCorsRuleAllowedMethods :: ValList Text
+  , _s3BucketCorsRuleAllowedOrigins :: ValList Text
+  , _s3BucketCorsRuleExposedHeaders :: Maybe (ValList Text)
   , _s3BucketCorsRuleId :: Maybe (Val Text)
-  , _s3BucketCorsRuleMaxAge :: Maybe (Val Integer')
+  , _s3BucketCorsRuleMaxAge :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON S3BucketCorsRule where
   toJSON S3BucketCorsRule{..} =
     object $
     catMaybes
-    [ ("AllowedHeaders" .=) <$> _s3BucketCorsRuleAllowedHeaders
-    , Just ("AllowedMethods" .= _s3BucketCorsRuleAllowedMethods)
-    , Just ("AllowedOrigins" .= _s3BucketCorsRuleAllowedOrigins)
-    , ("ExposedHeaders" .=) <$> _s3BucketCorsRuleExposedHeaders
-    , ("Id" .=) <$> _s3BucketCorsRuleId
-    , ("MaxAge" .=) <$> _s3BucketCorsRuleMaxAge
+    [ fmap (("AllowedHeaders",) . toJSON) _s3BucketCorsRuleAllowedHeaders
+    , (Just . ("AllowedMethods",) . toJSON) _s3BucketCorsRuleAllowedMethods
+    , (Just . ("AllowedOrigins",) . toJSON) _s3BucketCorsRuleAllowedOrigins
+    , fmap (("ExposedHeaders",) . toJSON) _s3BucketCorsRuleExposedHeaders
+    , fmap (("Id",) . toJSON) _s3BucketCorsRuleId
+    , fmap (("MaxAge",) . toJSON . fmap Integer') _s3BucketCorsRuleMaxAge
     ]
 
 instance FromJSON S3BucketCorsRule where
   parseJSON (Object obj) =
     S3BucketCorsRule <$>
-      obj .:? "AllowedHeaders" <*>
-      obj .: "AllowedMethods" <*>
-      obj .: "AllowedOrigins" <*>
-      obj .:? "ExposedHeaders" <*>
-      obj .:? "Id" <*>
-      obj .:? "MaxAge"
+      (obj .:? "AllowedHeaders") <*>
+      (obj .: "AllowedMethods") <*>
+      (obj .: "AllowedOrigins") <*>
+      (obj .:? "ExposedHeaders") <*>
+      (obj .:? "Id") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxAge")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketCorsRule' containing required fields as
 -- arguments.
 s3BucketCorsRule
-  :: [Val Text] -- ^ 'sbcrAllowedMethods'
-  -> [Val Text] -- ^ 'sbcrAllowedOrigins'
+  :: ValList Text -- ^ 'sbcrAllowedMethods'
+  -> ValList Text -- ^ 'sbcrAllowedOrigins'
   -> S3BucketCorsRule
 s3BucketCorsRule allowedMethodsarg allowedOriginsarg =
   S3BucketCorsRule
@@ -66,19 +67,19 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedheaders
-sbcrAllowedHeaders :: Lens' S3BucketCorsRule (Maybe [Val Text])
+sbcrAllowedHeaders :: Lens' S3BucketCorsRule (Maybe (ValList Text))
 sbcrAllowedHeaders = lens _s3BucketCorsRuleAllowedHeaders (\s a -> s { _s3BucketCorsRuleAllowedHeaders = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedmethods
-sbcrAllowedMethods :: Lens' S3BucketCorsRule [Val Text]
+sbcrAllowedMethods :: Lens' S3BucketCorsRule (ValList Text)
 sbcrAllowedMethods = lens _s3BucketCorsRuleAllowedMethods (\s a -> s { _s3BucketCorsRuleAllowedMethods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedorigins
-sbcrAllowedOrigins :: Lens' S3BucketCorsRule [Val Text]
+sbcrAllowedOrigins :: Lens' S3BucketCorsRule (ValList Text)
 sbcrAllowedOrigins = lens _s3BucketCorsRuleAllowedOrigins (\s a -> s { _s3BucketCorsRuleAllowedOrigins = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-exposedheaders
-sbcrExposedHeaders :: Lens' S3BucketCorsRule (Maybe [Val Text])
+sbcrExposedHeaders :: Lens' S3BucketCorsRule (Maybe (ValList Text))
 sbcrExposedHeaders = lens _s3BucketCorsRuleExposedHeaders (\s a -> s { _s3BucketCorsRuleExposedHeaders = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-id
@@ -86,5 +87,5 @@
 sbcrId = lens _s3BucketCorsRuleId (\s a -> s { _s3BucketCorsRuleId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-maxage
-sbcrMaxAge :: Lens' S3BucketCorsRule (Maybe (Val Integer'))
+sbcrMaxAge :: Lens' S3BucketCorsRule (Maybe (Val Integer))
 sbcrMaxAge = lens _s3BucketCorsRuleMaxAge (\s a -> s { _s3BucketCorsRuleMaxAge = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketFilterRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketFilterRule{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _s3BucketFilterRuleName)
-    , Just ("Value" .= _s3BucketFilterRuleValue)
+    [ (Just . ("Name",) . toJSON) _s3BucketFilterRuleName
+    , (Just . ("Value",) . toJSON) _s3BucketFilterRuleValue
     ]
 
 instance FromJSON S3BucketFilterRule where
   parseJSON (Object obj) =
     S3BucketFilterRule <$>
-      obj .: "Name" <*>
-      obj .: "Value"
+      (obj .: "Name") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketFilterRule' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLambdaConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html
 
@@ -27,17 +28,17 @@
   toJSON S3BucketLambdaConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Event" .= _s3BucketLambdaConfigurationEvent)
-    , ("Filter" .=) <$> _s3BucketLambdaConfigurationFilter
-    , Just ("Function" .= _s3BucketLambdaConfigurationFunction)
+    [ (Just . ("Event",) . toJSON) _s3BucketLambdaConfigurationEvent
+    , fmap (("Filter",) . toJSON) _s3BucketLambdaConfigurationFilter
+    , (Just . ("Function",) . toJSON) _s3BucketLambdaConfigurationFunction
     ]
 
 instance FromJSON S3BucketLambdaConfiguration where
   parseJSON (Object obj) =
     S3BucketLambdaConfiguration <$>
-      obj .: "Event" <*>
-      obj .:? "Filter" <*>
-      obj .: "Function"
+      (obj .: "Event") <*>
+      (obj .:? "Filter") <*>
+      (obj .: "Function")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketLambdaConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLifecycleConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html
 
@@ -25,13 +26,13 @@
   toJSON S3BucketLifecycleConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Rules" .= _s3BucketLifecycleConfigurationRules)
+    [ (Just . ("Rules",) . toJSON) _s3BucketLifecycleConfigurationRules
     ]
 
 instance FromJSON S3BucketLifecycleConfiguration where
   parseJSON (Object obj) =
     S3BucketLifecycleConfiguration <$>
-      obj .: "Rules"
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketLifecycleConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketLoggingConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketLoggingConfiguration{..} =
     object $
     catMaybes
-    [ ("DestinationBucketName" .=) <$> _s3BucketLoggingConfigurationDestinationBucketName
-    , ("LogFilePrefix" .=) <$> _s3BucketLoggingConfigurationLogFilePrefix
+    [ fmap (("DestinationBucketName",) . toJSON) _s3BucketLoggingConfigurationDestinationBucketName
+    , fmap (("LogFilePrefix",) . toJSON) _s3BucketLoggingConfigurationLogFilePrefix
     ]
 
 instance FromJSON S3BucketLoggingConfiguration where
   parseJSON (Object obj) =
     S3BucketLoggingConfiguration <$>
-      obj .:? "DestinationBucketName" <*>
-      obj .:? "LogFilePrefix"
+      (obj .:? "DestinationBucketName") <*>
+      (obj .:? "LogFilePrefix")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketLoggingConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNoncurrentVersionTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html
 
@@ -19,29 +20,29 @@
 data S3BucketNoncurrentVersionTransition =
   S3BucketNoncurrentVersionTransition
   { _s3BucketNoncurrentVersionTransitionStorageClass :: Val Text
-  , _s3BucketNoncurrentVersionTransitionTransitionInDays :: Val Integer'
+  , _s3BucketNoncurrentVersionTransitionTransitionInDays :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON S3BucketNoncurrentVersionTransition where
   toJSON S3BucketNoncurrentVersionTransition{..} =
     object $
     catMaybes
-    [ Just ("StorageClass" .= _s3BucketNoncurrentVersionTransitionStorageClass)
-    , Just ("TransitionInDays" .= _s3BucketNoncurrentVersionTransitionTransitionInDays)
+    [ (Just . ("StorageClass",) . toJSON) _s3BucketNoncurrentVersionTransitionStorageClass
+    , (Just . ("TransitionInDays",) . toJSON . fmap Integer') _s3BucketNoncurrentVersionTransitionTransitionInDays
     ]
 
 instance FromJSON S3BucketNoncurrentVersionTransition where
   parseJSON (Object obj) =
     S3BucketNoncurrentVersionTransition <$>
-      obj .: "StorageClass" <*>
-      obj .: "TransitionInDays"
+      (obj .: "StorageClass") <*>
+      fmap (fmap unInteger') (obj .: "TransitionInDays")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketNoncurrentVersionTransition' containing required
 -- fields as arguments.
 s3BucketNoncurrentVersionTransition
   :: Val Text -- ^ 'sbnvtStorageClass'
-  -> Val Integer' -- ^ 'sbnvtTransitionInDays'
+  -> Val Integer -- ^ 'sbnvtTransitionInDays'
   -> S3BucketNoncurrentVersionTransition
 s3BucketNoncurrentVersionTransition storageClassarg transitionInDaysarg =
   S3BucketNoncurrentVersionTransition
@@ -54,5 +55,5 @@
 sbnvtStorageClass = lens _s3BucketNoncurrentVersionTransitionStorageClass (\s a -> s { _s3BucketNoncurrentVersionTransitionStorageClass = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition-transitionindays
-sbnvtTransitionInDays :: Lens' S3BucketNoncurrentVersionTransition (Val Integer')
+sbnvtTransitionInDays :: Lens' S3BucketNoncurrentVersionTransition (Val Integer)
 sbnvtTransitionInDays = lens _s3BucketNoncurrentVersionTransitionTransitionInDays (\s a -> s { _s3BucketNoncurrentVersionTransitionTransitionInDays = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
 
@@ -29,17 +30,17 @@
   toJSON S3BucketNotificationConfiguration{..} =
     object $
     catMaybes
-    [ ("LambdaConfigurations" .=) <$> _s3BucketNotificationConfigurationLambdaConfigurations
-    , ("QueueConfigurations" .=) <$> _s3BucketNotificationConfigurationQueueConfigurations
-    , ("TopicConfigurations" .=) <$> _s3BucketNotificationConfigurationTopicConfigurations
+    [ fmap (("LambdaConfigurations",) . toJSON) _s3BucketNotificationConfigurationLambdaConfigurations
+    , fmap (("QueueConfigurations",) . toJSON) _s3BucketNotificationConfigurationQueueConfigurations
+    , fmap (("TopicConfigurations",) . toJSON) _s3BucketNotificationConfigurationTopicConfigurations
     ]
 
 instance FromJSON S3BucketNotificationConfiguration where
   parseJSON (Object obj) =
     S3BucketNotificationConfiguration <$>
-      obj .:? "LambdaConfigurations" <*>
-      obj .:? "QueueConfigurations" <*>
-      obj .:? "TopicConfigurations"
+      (obj .:? "LambdaConfigurations") <*>
+      (obj .:? "QueueConfigurations") <*>
+      (obj .:? "TopicConfigurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketNotificationConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketNotificationFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html
 
@@ -25,13 +26,13 @@
   toJSON S3BucketNotificationFilter{..} =
     object $
     catMaybes
-    [ Just ("S3Key" .= _s3BucketNotificationFilterS3Key)
+    [ (Just . ("S3Key",) . toJSON) _s3BucketNotificationFilterS3Key
     ]
 
 instance FromJSON S3BucketNotificationFilter where
   parseJSON (Object obj) =
     S3BucketNotificationFilter <$>
-      obj .: "S3Key"
+      (obj .: "S3Key")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketNotificationFilter' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketQueueConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html
 
@@ -27,17 +28,17 @@
   toJSON S3BucketQueueConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Event" .= _s3BucketQueueConfigurationEvent)
-    , ("Filter" .=) <$> _s3BucketQueueConfigurationFilter
-    , Just ("Queue" .= _s3BucketQueueConfigurationQueue)
+    [ (Just . ("Event",) . toJSON) _s3BucketQueueConfigurationEvent
+    , fmap (("Filter",) . toJSON) _s3BucketQueueConfigurationFilter
+    , (Just . ("Queue",) . toJSON) _s3BucketQueueConfigurationQueue
     ]
 
 instance FromJSON S3BucketQueueConfiguration where
   parseJSON (Object obj) =
     S3BucketQueueConfiguration <$>
-      obj .: "Event" <*>
-      obj .:? "Filter" <*>
-      obj .: "Queue"
+      (obj .: "Event") <*>
+      (obj .:? "Filter") <*>
+      (obj .: "Queue")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketQueueConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectAllRequestsTo.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketRedirectAllRequestsTo{..} =
     object $
     catMaybes
-    [ Just ("HostName" .= _s3BucketRedirectAllRequestsToHostName)
-    , ("Protocol" .=) <$> _s3BucketRedirectAllRequestsToProtocol
+    [ (Just . ("HostName",) . toJSON) _s3BucketRedirectAllRequestsToHostName
+    , fmap (("Protocol",) . toJSON) _s3BucketRedirectAllRequestsToProtocol
     ]
 
 instance FromJSON S3BucketRedirectAllRequestsTo where
   parseJSON (Object obj) =
     S3BucketRedirectAllRequestsTo <$>
-      obj .: "HostName" <*>
-      obj .:? "Protocol"
+      (obj .: "HostName") <*>
+      (obj .:? "Protocol")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketRedirectAllRequestsTo' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRedirectRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html
 
@@ -29,21 +30,21 @@
   toJSON S3BucketRedirectRule{..} =
     object $
     catMaybes
-    [ ("HostName" .=) <$> _s3BucketRedirectRuleHostName
-    , ("HttpRedirectCode" .=) <$> _s3BucketRedirectRuleHttpRedirectCode
-    , ("Protocol" .=) <$> _s3BucketRedirectRuleProtocol
-    , ("ReplaceKeyPrefixWith" .=) <$> _s3BucketRedirectRuleReplaceKeyPrefixWith
-    , ("ReplaceKeyWith" .=) <$> _s3BucketRedirectRuleReplaceKeyWith
+    [ fmap (("HostName",) . toJSON) _s3BucketRedirectRuleHostName
+    , fmap (("HttpRedirectCode",) . toJSON) _s3BucketRedirectRuleHttpRedirectCode
+    , fmap (("Protocol",) . toJSON) _s3BucketRedirectRuleProtocol
+    , fmap (("ReplaceKeyPrefixWith",) . toJSON) _s3BucketRedirectRuleReplaceKeyPrefixWith
+    , fmap (("ReplaceKeyWith",) . toJSON) _s3BucketRedirectRuleReplaceKeyWith
     ]
 
 instance FromJSON S3BucketRedirectRule where
   parseJSON (Object obj) =
     S3BucketRedirectRule <$>
-      obj .:? "HostName" <*>
-      obj .:? "HttpRedirectCode" <*>
-      obj .:? "Protocol" <*>
-      obj .:? "ReplaceKeyPrefixWith" <*>
-      obj .:? "ReplaceKeyWith"
+      (obj .:? "HostName") <*>
+      (obj .:? "HttpRedirectCode") <*>
+      (obj .:? "Protocol") <*>
+      (obj .:? "ReplaceKeyPrefixWith") <*>
+      (obj .:? "ReplaceKeyWith")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketRedirectRule' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketReplicationConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Role" .= _s3BucketReplicationConfigurationRole)
-    , Just ("Rules" .= _s3BucketReplicationConfigurationRules)
+    [ (Just . ("Role",) . toJSON) _s3BucketReplicationConfigurationRole
+    , (Just . ("Rules",) . toJSON) _s3BucketReplicationConfigurationRules
     ]
 
 instance FromJSON S3BucketReplicationConfiguration where
   parseJSON (Object obj) =
     S3BucketReplicationConfiguration <$>
-      obj .: "Role" <*>
-      obj .: "Rules"
+      (obj .: "Role") <*>
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketReplicationConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketReplicationDestination{..} =
     object $
     catMaybes
-    [ Just ("Bucket" .= _s3BucketReplicationDestinationBucket)
-    , ("StorageClass" .=) <$> _s3BucketReplicationDestinationStorageClass
+    [ (Just . ("Bucket",) . toJSON) _s3BucketReplicationDestinationBucket
+    , fmap (("StorageClass",) . toJSON) _s3BucketReplicationDestinationStorageClass
     ]
 
 instance FromJSON S3BucketReplicationDestination where
   parseJSON (Object obj) =
     S3BucketReplicationDestination <$>
-      obj .: "Bucket" <*>
-      obj .:? "StorageClass"
+      (obj .: "Bucket") <*>
+      (obj .:? "StorageClass")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketReplicationDestination' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketReplicationRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html
 
@@ -28,19 +29,19 @@
   toJSON S3BucketReplicationRule{..} =
     object $
     catMaybes
-    [ Just ("Destination" .= _s3BucketReplicationRuleDestination)
-    , ("Id" .=) <$> _s3BucketReplicationRuleId
-    , Just ("Prefix" .= _s3BucketReplicationRulePrefix)
-    , Just ("Status" .= _s3BucketReplicationRuleStatus)
+    [ (Just . ("Destination",) . toJSON) _s3BucketReplicationRuleDestination
+    , fmap (("Id",) . toJSON) _s3BucketReplicationRuleId
+    , (Just . ("Prefix",) . toJSON) _s3BucketReplicationRulePrefix
+    , (Just . ("Status",) . toJSON) _s3BucketReplicationRuleStatus
     ]
 
 instance FromJSON S3BucketReplicationRule where
   parseJSON (Object obj) =
     S3BucketReplicationRule <$>
-      obj .: "Destination" <*>
-      obj .:? "Id" <*>
-      obj .: "Prefix" <*>
-      obj .: "Status"
+      (obj .: "Destination") <*>
+      (obj .:? "Id") <*>
+      (obj .: "Prefix") <*>
+      (obj .: "Status")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketReplicationRule' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html
 
@@ -27,15 +28,15 @@
   toJSON S3BucketRoutingRule{..} =
     object $
     catMaybes
-    [ Just ("RedirectRule" .= _s3BucketRoutingRuleRedirectRule)
-    , ("RoutingRuleCondition" .=) <$> _s3BucketRoutingRuleRoutingRuleCondition
+    [ (Just . ("RedirectRule",) . toJSON) _s3BucketRoutingRuleRedirectRule
+    , fmap (("RoutingRuleCondition",) . toJSON) _s3BucketRoutingRuleRoutingRuleCondition
     ]
 
 instance FromJSON S3BucketRoutingRule where
   parseJSON (Object obj) =
     S3BucketRoutingRule <$>
-      obj .: "RedirectRule" <*>
-      obj .:? "RoutingRuleCondition"
+      (obj .: "RedirectRule") <*>
+      (obj .:? "RoutingRuleCondition")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketRoutingRule' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRoutingRuleCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketRoutingRuleCondition{..} =
     object $
     catMaybes
-    [ ("HttpErrorCodeReturnedEquals" .=) <$> _s3BucketRoutingRuleConditionHttpErrorCodeReturnedEquals
-    , ("KeyPrefixEquals" .=) <$> _s3BucketRoutingRuleConditionKeyPrefixEquals
+    [ fmap (("HttpErrorCodeReturnedEquals",) . toJSON) _s3BucketRoutingRuleConditionHttpErrorCodeReturnedEquals
+    , fmap (("KeyPrefixEquals",) . toJSON) _s3BucketRoutingRuleConditionKeyPrefixEquals
     ]
 
 instance FromJSON S3BucketRoutingRuleCondition where
   parseJSON (Object obj) =
     S3BucketRoutingRuleCondition <$>
-      obj .:? "HttpErrorCodeReturnedEquals" <*>
-      obj .:? "KeyPrefixEquals"
+      (obj .:? "HttpErrorCodeReturnedEquals") <*>
+      (obj .:? "KeyPrefixEquals")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketRoutingRuleCondition' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
 
@@ -20,9 +21,9 @@
 data S3BucketRule =
   S3BucketRule
   { _s3BucketRuleExpirationDate :: Maybe (Val Text)
-  , _s3BucketRuleExpirationInDays :: Maybe (Val Integer')
+  , _s3BucketRuleExpirationInDays :: Maybe (Val Integer)
   , _s3BucketRuleId :: Maybe (Val Text)
-  , _s3BucketRuleNoncurrentVersionExpirationInDays :: Maybe (Val Integer')
+  , _s3BucketRuleNoncurrentVersionExpirationInDays :: Maybe (Val Integer)
   , _s3BucketRuleNoncurrentVersionTransition :: Maybe S3BucketNoncurrentVersionTransition
   , _s3BucketRuleNoncurrentVersionTransitions :: Maybe S3BucketNoncurrentVersionTransition
   , _s3BucketRulePrefix :: Maybe (Val Text)
@@ -35,31 +36,31 @@
   toJSON S3BucketRule{..} =
     object $
     catMaybes
-    [ ("ExpirationDate" .=) <$> _s3BucketRuleExpirationDate
-    , ("ExpirationInDays" .=) <$> _s3BucketRuleExpirationInDays
-    , ("Id" .=) <$> _s3BucketRuleId
-    , ("NoncurrentVersionExpirationInDays" .=) <$> _s3BucketRuleNoncurrentVersionExpirationInDays
-    , ("NoncurrentVersionTransition" .=) <$> _s3BucketRuleNoncurrentVersionTransition
-    , ("NoncurrentVersionTransitions" .=) <$> _s3BucketRuleNoncurrentVersionTransitions
-    , ("Prefix" .=) <$> _s3BucketRulePrefix
-    , Just ("Status" .= _s3BucketRuleStatus)
-    , ("Transition" .=) <$> _s3BucketRuleTransition
-    , ("Transitions" .=) <$> _s3BucketRuleTransitions
+    [ fmap (("ExpirationDate",) . toJSON) _s3BucketRuleExpirationDate
+    , fmap (("ExpirationInDays",) . toJSON . fmap Integer') _s3BucketRuleExpirationInDays
+    , fmap (("Id",) . toJSON) _s3BucketRuleId
+    , fmap (("NoncurrentVersionExpirationInDays",) . toJSON . fmap Integer') _s3BucketRuleNoncurrentVersionExpirationInDays
+    , fmap (("NoncurrentVersionTransition",) . toJSON) _s3BucketRuleNoncurrentVersionTransition
+    , fmap (("NoncurrentVersionTransitions",) . toJSON) _s3BucketRuleNoncurrentVersionTransitions
+    , fmap (("Prefix",) . toJSON) _s3BucketRulePrefix
+    , (Just . ("Status",) . toJSON) _s3BucketRuleStatus
+    , fmap (("Transition",) . toJSON) _s3BucketRuleTransition
+    , fmap (("Transitions",) . toJSON) _s3BucketRuleTransitions
     ]
 
 instance FromJSON S3BucketRule where
   parseJSON (Object obj) =
     S3BucketRule <$>
-      obj .:? "ExpirationDate" <*>
-      obj .:? "ExpirationInDays" <*>
-      obj .:? "Id" <*>
-      obj .:? "NoncurrentVersionExpirationInDays" <*>
-      obj .:? "NoncurrentVersionTransition" <*>
-      obj .:? "NoncurrentVersionTransitions" <*>
-      obj .:? "Prefix" <*>
-      obj .: "Status" <*>
-      obj .:? "Transition" <*>
-      obj .:? "Transitions"
+      (obj .:? "ExpirationDate") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ExpirationInDays") <*>
+      (obj .:? "Id") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NoncurrentVersionExpirationInDays") <*>
+      (obj .:? "NoncurrentVersionTransition") <*>
+      (obj .:? "NoncurrentVersionTransitions") <*>
+      (obj .:? "Prefix") <*>
+      (obj .: "Status") <*>
+      (obj .:? "Transition") <*>
+      (obj .:? "Transitions")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketRule' containing required fields as arguments.
@@ -85,7 +86,7 @@
 sbrExpirationDate = lens _s3BucketRuleExpirationDate (\s a -> s { _s3BucketRuleExpirationDate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationindays
-sbrExpirationInDays :: Lens' S3BucketRule (Maybe (Val Integer'))
+sbrExpirationInDays :: Lens' S3BucketRule (Maybe (Val Integer))
 sbrExpirationInDays = lens _s3BucketRuleExpirationInDays (\s a -> s { _s3BucketRuleExpirationInDays = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-id
@@ -93,7 +94,7 @@
 sbrId = lens _s3BucketRuleId (\s a -> s { _s3BucketRuleId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversionexpirationindays
-sbrNoncurrentVersionExpirationInDays :: Lens' S3BucketRule (Maybe (Val Integer'))
+sbrNoncurrentVersionExpirationInDays :: Lens' S3BucketRule (Maybe (Val Integer))
 sbrNoncurrentVersionExpirationInDays = lens _s3BucketRuleNoncurrentVersionExpirationInDays (\s a -> s { _s3BucketRuleNoncurrentVersionExpirationInDays = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketS3KeyFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html
 
@@ -25,13 +26,13 @@
   toJSON S3BucketS3KeyFilter{..} =
     object $
     catMaybes
-    [ Just ("Rules" .= _s3BucketS3KeyFilterRules)
+    [ (Just . ("Rules",) . toJSON) _s3BucketS3KeyFilterRules
     ]
 
 instance FromJSON S3BucketS3KeyFilter where
   parseJSON (Object obj) =
     S3BucketS3KeyFilter <$>
-      obj .: "Rules"
+      (obj .: "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketS3KeyFilter' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTopicConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html
 
@@ -27,17 +28,17 @@
   toJSON S3BucketTopicConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Event" .= _s3BucketTopicConfigurationEvent)
-    , ("Filter" .=) <$> _s3BucketTopicConfigurationFilter
-    , Just ("Topic" .= _s3BucketTopicConfigurationTopic)
+    [ (Just . ("Event",) . toJSON) _s3BucketTopicConfigurationEvent
+    , fmap (("Filter",) . toJSON) _s3BucketTopicConfigurationFilter
+    , (Just . ("Topic",) . toJSON) _s3BucketTopicConfigurationTopic
     ]
 
 instance FromJSON S3BucketTopicConfiguration where
   parseJSON (Object obj) =
     S3BucketTopicConfiguration <$>
-      obj .: "Event" <*>
-      obj .:? "Filter" <*>
-      obj .: "Topic"
+      (obj .: "Event") <*>
+      (obj .:? "Filter") <*>
+      (obj .: "Topic")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketTopicConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketTransition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html
 
@@ -20,24 +21,24 @@
   S3BucketTransition
   { _s3BucketTransitionStorageClass :: Val Text
   , _s3BucketTransitionTransitionDate :: Maybe (Val Text)
-  , _s3BucketTransitionTransitionInDays :: Maybe (Val Integer')
+  , _s3BucketTransitionTransitionInDays :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON S3BucketTransition where
   toJSON S3BucketTransition{..} =
     object $
     catMaybes
-    [ Just ("StorageClass" .= _s3BucketTransitionStorageClass)
-    , ("TransitionDate" .=) <$> _s3BucketTransitionTransitionDate
-    , ("TransitionInDays" .=) <$> _s3BucketTransitionTransitionInDays
+    [ (Just . ("StorageClass",) . toJSON) _s3BucketTransitionStorageClass
+    , fmap (("TransitionDate",) . toJSON) _s3BucketTransitionTransitionDate
+    , fmap (("TransitionInDays",) . toJSON . fmap Integer') _s3BucketTransitionTransitionInDays
     ]
 
 instance FromJSON S3BucketTransition where
   parseJSON (Object obj) =
     S3BucketTransition <$>
-      obj .: "StorageClass" <*>
-      obj .:? "TransitionDate" <*>
-      obj .:? "TransitionInDays"
+      (obj .: "StorageClass") <*>
+      (obj .:? "TransitionDate") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TransitionInDays")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketTransition' containing required fields as
@@ -61,5 +62,5 @@
 sbtTransitionDate = lens _s3BucketTransitionTransitionDate (\s a -> s { _s3BucketTransitionTransitionDate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-transitionindays
-sbtTransitionInDays :: Lens' S3BucketTransition (Maybe (Val Integer'))
+sbtTransitionInDays :: Lens' S3BucketTransition (Maybe (Val Integer))
 sbtTransitionInDays = lens _s3BucketTransitionTransitionInDays (\s a -> s { _s3BucketTransitionTransitionInDays = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketVersioningConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html
 
@@ -25,13 +26,13 @@
   toJSON S3BucketVersioningConfiguration{..} =
     object $
     catMaybes
-    [ Just ("Status" .= _s3BucketVersioningConfigurationStatus)
+    [ (Just . ("Status",) . toJSON) _s3BucketVersioningConfigurationStatus
     ]
 
 instance FromJSON S3BucketVersioningConfiguration where
   parseJSON (Object obj) =
     S3BucketVersioningConfiguration <$>
-      obj .: "Status"
+      (obj .: "Status")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketVersioningConfiguration' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketWebsiteConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html
 
@@ -29,19 +30,19 @@
   toJSON S3BucketWebsiteConfiguration{..} =
     object $
     catMaybes
-    [ ("ErrorDocument" .=) <$> _s3BucketWebsiteConfigurationErrorDocument
-    , ("IndexDocument" .=) <$> _s3BucketWebsiteConfigurationIndexDocument
-    , ("RedirectAllRequestsTo" .=) <$> _s3BucketWebsiteConfigurationRedirectAllRequestsTo
-    , ("RoutingRules" .=) <$> _s3BucketWebsiteConfigurationRoutingRules
+    [ fmap (("ErrorDocument",) . toJSON) _s3BucketWebsiteConfigurationErrorDocument
+    , fmap (("IndexDocument",) . toJSON) _s3BucketWebsiteConfigurationIndexDocument
+    , fmap (("RedirectAllRequestsTo",) . toJSON) _s3BucketWebsiteConfigurationRedirectAllRequestsTo
+    , fmap (("RoutingRules",) . toJSON) _s3BucketWebsiteConfigurationRoutingRules
     ]
 
 instance FromJSON S3BucketWebsiteConfiguration where
   parseJSON (Object obj) =
     S3BucketWebsiteConfiguration <$>
-      obj .:? "ErrorDocument" <*>
-      obj .:? "IndexDocument" <*>
-      obj .:? "RedirectAllRequestsTo" <*>
-      obj .:? "RoutingRules"
+      (obj .:? "ErrorDocument") <*>
+      (obj .:? "IndexDocument") <*>
+      (obj .:? "RedirectAllRequestsTo") <*>
+      (obj .:? "RoutingRules")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketWebsiteConfiguration' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs b/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
--- a/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-subscription.html
 
@@ -26,15 +27,15 @@
   toJSON SNSTopicSubscription{..} =
     object $
     catMaybes
-    [ Just ("Endpoint" .= _sNSTopicSubscriptionEndpoint)
-    , Just ("Protocol" .= _sNSTopicSubscriptionProtocol)
+    [ (Just . ("Endpoint",) . toJSON) _sNSTopicSubscriptionEndpoint
+    , (Just . ("Protocol",) . toJSON) _sNSTopicSubscriptionProtocol
     ]
 
 instance FromJSON SNSTopicSubscription where
   parseJSON (Object obj) =
     SNSTopicSubscription <$>
-      obj .: "Endpoint" <*>
-      obj .: "Protocol"
+      (obj .: "Endpoint") <*>
+      (obj .: "Protocol")
   parseJSON _ = mempty
 
 -- | Constructor for 'SNSTopicSubscription' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationParameterValues.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-parametervalues.html
 
@@ -18,26 +19,26 @@
 -- 'ssmAssociationParameterValues' for a more convenient constructor.
 data SSMAssociationParameterValues =
   SSMAssociationParameterValues
-  { _sSMAssociationParameterValuesParameterValues :: [Val Text]
+  { _sSMAssociationParameterValuesParameterValues :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON SSMAssociationParameterValues where
   toJSON SSMAssociationParameterValues{..} =
     object $
     catMaybes
-    [ Just ("ParameterValues" .= _sSMAssociationParameterValuesParameterValues)
+    [ (Just . ("ParameterValues",) . toJSON) _sSMAssociationParameterValuesParameterValues
     ]
 
 instance FromJSON SSMAssociationParameterValues where
   parseJSON (Object obj) =
     SSMAssociationParameterValues <$>
-      obj .: "ParameterValues"
+      (obj .: "ParameterValues")
   parseJSON _ = mempty
 
 -- | Constructor for 'SSMAssociationParameterValues' containing required
 -- fields as arguments.
 ssmAssociationParameterValues
-  :: [Val Text] -- ^ 'ssmapvParameterValues'
+  :: ValList Text -- ^ 'ssmapvParameterValues'
   -> SSMAssociationParameterValues
 ssmAssociationParameterValues parameterValuesarg =
   SSMAssociationParameterValues
@@ -45,5 +46,5 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-parametervalues.html#cfn-ssm-association-parametervalues-parametervalues
-ssmapvParameterValues :: Lens' SSMAssociationParameterValues [Val Text]
+ssmapvParameterValues :: Lens' SSMAssociationParameterValues (ValList Text)
 ssmapvParameterValues = lens _sSMAssociationParameterValuesParameterValues (\s a -> s { _sSMAssociationParameterValuesParameterValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
--- a/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html
 
@@ -19,29 +20,29 @@
 data SSMAssociationTarget =
   SSMAssociationTarget
   { _sSMAssociationTargetKey :: Val Text
-  , _sSMAssociationTargetValues :: [Val Text]
+  , _sSMAssociationTargetValues :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON SSMAssociationTarget where
   toJSON SSMAssociationTarget{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _sSMAssociationTargetKey)
-    , Just ("Values" .= _sSMAssociationTargetValues)
+    [ (Just . ("Key",) . toJSON) _sSMAssociationTargetKey
+    , (Just . ("Values",) . toJSON) _sSMAssociationTargetValues
     ]
 
 instance FromJSON SSMAssociationTarget where
   parseJSON (Object obj) =
     SSMAssociationTarget <$>
-      obj .: "Key" <*>
-      obj .: "Values"
+      (obj .: "Key") <*>
+      (obj .: "Values")
   parseJSON _ = mempty
 
 -- | Constructor for 'SSMAssociationTarget' containing required fields as
 -- arguments.
 ssmAssociationTarget
   :: Val Text -- ^ 'ssmatKey'
-  -> [Val Text] -- ^ 'ssmatValues'
+  -> ValList Text -- ^ 'ssmatValues'
   -> SSMAssociationTarget
 ssmAssociationTarget keyarg valuesarg =
   SSMAssociationTarget
@@ -54,5 +55,5 @@
 ssmatKey = lens _sSMAssociationTargetKey (\s a -> s { _sSMAssociationTargetKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html#cfn-ssm-association-target-values
-ssmatValues :: Lens' SSMAssociationTarget [Val Text]
+ssmatValues :: Lens' SSMAssociationTarget (ValList Text)
 ssmatValues = lens _sSMAssociationTargetValues (\s a -> s { _sSMAssociationTargetValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/Tag.hs b/library-gen/Stratosphere/ResourceProperties/Tag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Tag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Tag.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
 
@@ -26,15 +27,15 @@
   toJSON Tag{..} =
     object $
     catMaybes
-    [ Just ("Key" .= _tagKey)
-    , Just ("Value" .= _tagValue)
+    [ (Just . ("Key",) . toJSON) _tagKey
+    , (Just . ("Value",) . toJSON) _tagValue
     ]
 
 instance FromJSON Tag where
   parseJSON (Object obj) =
     Tag <$>
-      obj .: "Key" <*>
-      obj .: "Value"
+      (obj .: "Key") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'Tag' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetByteMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html
 
@@ -29,21 +30,21 @@
   toJSON WAFByteMatchSetByteMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFByteMatchSetByteMatchTupleFieldToMatch)
-    , Just ("PositionalConstraint" .= _wAFByteMatchSetByteMatchTuplePositionalConstraint)
-    , ("TargetString" .=) <$> _wAFByteMatchSetByteMatchTupleTargetString
-    , ("TargetStringBase64" .=) <$> _wAFByteMatchSetByteMatchTupleTargetStringBase64
-    , Just ("TextTransformation" .= _wAFByteMatchSetByteMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFByteMatchSetByteMatchTupleFieldToMatch
+    , (Just . ("PositionalConstraint",) . toJSON) _wAFByteMatchSetByteMatchTuplePositionalConstraint
+    , fmap (("TargetString",) . toJSON) _wAFByteMatchSetByteMatchTupleTargetString
+    , fmap (("TargetStringBase64",) . toJSON) _wAFByteMatchSetByteMatchTupleTargetStringBase64
+    , (Just . ("TextTransformation",) . toJSON) _wAFByteMatchSetByteMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFByteMatchSetByteMatchTuple where
   parseJSON (Object obj) =
     WAFByteMatchSetByteMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "PositionalConstraint" <*>
-      obj .:? "TargetString" <*>
-      obj .:? "TargetStringBase64" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "PositionalConstraint") <*>
+      (obj .:? "TargetString") <*>
+      (obj .:? "TargetStringBase64") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFByteMatchSetByteMatchTuple' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFByteMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFByteMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFByteMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFByteMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFByteMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFByteMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFByteMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFByteMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFByteMatchSetFieldToMatch' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFIPSetIPSetDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-ipset-ipsetdescriptors.html
 
@@ -26,15 +27,15 @@
   toJSON WAFIPSetIPSetDescriptor{..} =
     object $
     catMaybes
-    [ Just ("Type" .= _wAFIPSetIPSetDescriptorType)
-    , Just ("Value" .= _wAFIPSetIPSetDescriptorValue)
+    [ (Just . ("Type",) . toJSON) _wAFIPSetIPSetDescriptorType
+    , (Just . ("Value",) . toJSON) _wAFIPSetIPSetDescriptorValue
     ]
 
 instance FromJSON WAFIPSetIPSetDescriptor where
   parseJSON (Object obj) =
     WAFIPSetIPSetDescriptor <$>
-      obj .: "Type" <*>
-      obj .: "Value"
+      (obj .: "Type") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFIPSetIPSetDescriptor' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetByteMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html
 
@@ -30,21 +31,21 @@
   toJSON WAFRegionalByteMatchSetByteMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFRegionalByteMatchSetByteMatchTupleFieldToMatch)
-    , Just ("PositionalConstraint" .= _wAFRegionalByteMatchSetByteMatchTuplePositionalConstraint)
-    , ("TargetString" .=) <$> _wAFRegionalByteMatchSetByteMatchTupleTargetString
-    , ("TargetStringBase64" .=) <$> _wAFRegionalByteMatchSetByteMatchTupleTargetStringBase64
-    , Just ("TextTransformation" .= _wAFRegionalByteMatchSetByteMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFRegionalByteMatchSetByteMatchTupleFieldToMatch
+    , (Just . ("PositionalConstraint",) . toJSON) _wAFRegionalByteMatchSetByteMatchTuplePositionalConstraint
+    , fmap (("TargetString",) . toJSON) _wAFRegionalByteMatchSetByteMatchTupleTargetString
+    , fmap (("TargetStringBase64",) . toJSON) _wAFRegionalByteMatchSetByteMatchTupleTargetStringBase64
+    , (Just . ("TextTransformation",) . toJSON) _wAFRegionalByteMatchSetByteMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFRegionalByteMatchSetByteMatchTuple where
   parseJSON (Object obj) =
     WAFRegionalByteMatchSetByteMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "PositionalConstraint" <*>
-      obj .:? "TargetString" <*>
-      obj .:? "TargetStringBase64" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "PositionalConstraint") <*>
+      (obj .:? "TargetString") <*>
+      (obj .:? "TargetStringBase64") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalByteMatchSetByteMatchTuple' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalByteMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalByteMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFRegionalByteMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFRegionalByteMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFRegionalByteMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFRegionalByteMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFRegionalByteMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFRegionalByteMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalByteMatchSetFieldToMatch' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalIPSetIPSetDescriptor.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-ipset-ipsetdescriptor.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalIPSetIPSetDescriptor{..} =
     object $
     catMaybes
-    [ Just ("Type" .= _wAFRegionalIPSetIPSetDescriptorType)
-    , Just ("Value" .= _wAFRegionalIPSetIPSetDescriptorValue)
+    [ (Just . ("Type",) . toJSON) _wAFRegionalIPSetIPSetDescriptorType
+    , (Just . ("Value",) . toJSON) _wAFRegionalIPSetIPSetDescriptorValue
     ]
 
 instance FromJSON WAFRegionalIPSetIPSetDescriptor where
   parseJSON (Object obj) =
     WAFRegionalIPSetIPSetDescriptor <$>
-      obj .: "Type" <*>
-      obj .: "Value"
+      (obj .: "Type") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalIPSetIPSetDescriptor' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalRulePredicate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html
 
@@ -19,7 +20,7 @@
 data WAFRegionalRulePredicate =
   WAFRegionalRulePredicate
   { _wAFRegionalRulePredicateDataId :: Val Text
-  , _wAFRegionalRulePredicateNegated :: Val Bool'
+  , _wAFRegionalRulePredicateNegated :: Val Bool
   , _wAFRegionalRulePredicateType :: Val Text
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON WAFRegionalRulePredicate{..} =
     object $
     catMaybes
-    [ Just ("DataId" .= _wAFRegionalRulePredicateDataId)
-    , Just ("Negated" .= _wAFRegionalRulePredicateNegated)
-    , Just ("Type" .= _wAFRegionalRulePredicateType)
+    [ (Just . ("DataId",) . toJSON) _wAFRegionalRulePredicateDataId
+    , (Just . ("Negated",) . toJSON . fmap Bool') _wAFRegionalRulePredicateNegated
+    , (Just . ("Type",) . toJSON) _wAFRegionalRulePredicateType
     ]
 
 instance FromJSON WAFRegionalRulePredicate where
   parseJSON (Object obj) =
     WAFRegionalRulePredicate <$>
-      obj .: "DataId" <*>
-      obj .: "Negated" <*>
-      obj .: "Type"
+      (obj .: "DataId") <*>
+      fmap (fmap unBool') (obj .: "Negated") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalRulePredicate' containing required fields as
 -- arguments.
 wafRegionalRulePredicate
   :: Val Text -- ^ 'wafrrpDataId'
-  -> Val Bool' -- ^ 'wafrrpNegated'
+  -> Val Bool -- ^ 'wafrrpNegated'
   -> Val Text -- ^ 'wafrrpType'
   -> WAFRegionalRulePredicate
 wafRegionalRulePredicate dataIdarg negatedarg typearg =
@@ -59,7 +60,7 @@
 wafrrpDataId = lens _wAFRegionalRulePredicateDataId (\s a -> s { _wAFRegionalRulePredicateDataId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html#cfn-wafregional-rule-predicate-negated
-wafrrpNegated :: Lens' WAFRegionalRulePredicate (Val Bool')
+wafrrpNegated :: Lens' WAFRegionalRulePredicate (Val Bool)
 wafrrpNegated = lens _wAFRegionalRulePredicateNegated (\s a -> s { _wAFRegionalRulePredicateNegated = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html#cfn-wafregional-rule-predicate-type
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-fieldtomatch.html
 
@@ -27,15 +28,15 @@
   toJSON WAFRegionalSizeConstraintSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFRegionalSizeConstraintSetFieldToMatchData
-    , Just ("Type" .= _wAFRegionalSizeConstraintSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFRegionalSizeConstraintSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFRegionalSizeConstraintSetFieldToMatchType
     ]
 
 instance FromJSON WAFRegionalSizeConstraintSetFieldToMatch where
   parseJSON (Object obj) =
     WAFRegionalSizeConstraintSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSizeConstraintSetFieldToMatch' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSizeConstraintSetSizeConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html
 
@@ -21,7 +22,7 @@
   WAFRegionalSizeConstraintSetSizeConstraint
   { _wAFRegionalSizeConstraintSetSizeConstraintComparisonOperator :: Val Text
   , _wAFRegionalSizeConstraintSetSizeConstraintFieldToMatch :: WAFRegionalSizeConstraintSetFieldToMatch
-  , _wAFRegionalSizeConstraintSetSizeConstraintSize :: Val Integer'
+  , _wAFRegionalSizeConstraintSetSizeConstraintSize :: Val Integer
   , _wAFRegionalSizeConstraintSetSizeConstraintTextTransformation :: Val Text
   } deriving (Show, Eq)
 
@@ -29,19 +30,19 @@
   toJSON WAFRegionalSizeConstraintSetSizeConstraint{..} =
     object $
     catMaybes
-    [ Just ("ComparisonOperator" .= _wAFRegionalSizeConstraintSetSizeConstraintComparisonOperator)
-    , Just ("FieldToMatch" .= _wAFRegionalSizeConstraintSetSizeConstraintFieldToMatch)
-    , Just ("Size" .= _wAFRegionalSizeConstraintSetSizeConstraintSize)
-    , Just ("TextTransformation" .= _wAFRegionalSizeConstraintSetSizeConstraintTextTransformation)
+    [ (Just . ("ComparisonOperator",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraintComparisonOperator
+    , (Just . ("FieldToMatch",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraintFieldToMatch
+    , (Just . ("Size",) . toJSON . fmap Integer') _wAFRegionalSizeConstraintSetSizeConstraintSize
+    , (Just . ("TextTransformation",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraintTextTransformation
     ]
 
 instance FromJSON WAFRegionalSizeConstraintSetSizeConstraint where
   parseJSON (Object obj) =
     WAFRegionalSizeConstraintSetSizeConstraint <$>
-      obj .: "ComparisonOperator" <*>
-      obj .: "FieldToMatch" <*>
-      obj .: "Size" <*>
-      obj .: "TextTransformation"
+      (obj .: "ComparisonOperator") <*>
+      (obj .: "FieldToMatch") <*>
+      fmap (fmap unInteger') (obj .: "Size") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSizeConstraintSetSizeConstraint' containing
@@ -49,7 +50,7 @@
 wafRegionalSizeConstraintSetSizeConstraint
   :: Val Text -- ^ 'wafrscsscComparisonOperator'
   -> WAFRegionalSizeConstraintSetFieldToMatch -- ^ 'wafrscsscFieldToMatch'
-  -> Val Integer' -- ^ 'wafrscsscSize'
+  -> Val Integer -- ^ 'wafrscsscSize'
   -> Val Text -- ^ 'wafrscsscTextTransformation'
   -> WAFRegionalSizeConstraintSetSizeConstraint
 wafRegionalSizeConstraintSetSizeConstraint comparisonOperatorarg fieldToMatcharg sizearg textTransformationarg =
@@ -69,7 +70,7 @@
 wafrscsscFieldToMatch = lens _wAFRegionalSizeConstraintSetSizeConstraintFieldToMatch (\s a -> s { _wAFRegionalSizeConstraintSetSizeConstraintFieldToMatch = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-size
-wafrscsscSize :: Lens' WAFRegionalSizeConstraintSetSizeConstraint (Val Integer')
+wafrscsscSize :: Lens' WAFRegionalSizeConstraintSetSizeConstraint (Val Integer)
 wafrscsscSize = lens _wAFRegionalSizeConstraintSetSizeConstraintSize (\s a -> s { _wAFRegionalSizeConstraintSetSizeConstraintSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-texttransformation
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-fieldtomatch.html
 
@@ -28,15 +29,15 @@
   toJSON WAFRegionalSqlInjectionMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFRegionalSqlInjectionMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFRegionalSqlInjectionMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFRegionalSqlInjectionMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFRegionalSqlInjectionMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFRegionalSqlInjectionMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFRegionalSqlInjectionMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSqlInjectionMatchSetFieldToMatch' containing
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple.html
 
@@ -28,15 +29,15 @@
   toJSON WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTupleFieldToMatch)
-    , Just ("TextTransformation" .= _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTupleFieldToMatch
+    , (Just . ("TextTransformation",) . toJSON) _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple where
   parseJSON (Object obj) =
     WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuple'
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-action.html
 
@@ -25,13 +26,13 @@
   toJSON WAFRegionalWebACLAction{..} =
     object $
     catMaybes
-    [ Just ("Type" .= _wAFRegionalWebACLActionType)
+    [ (Just . ("Type",) . toJSON) _wAFRegionalWebACLActionType
     ]
 
 instance FromJSON WAFRegionalWebACLAction where
   parseJSON (Object obj) =
     WAFRegionalWebACLAction <$>
-      obj .: "Type"
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalWebACLAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalWebACLRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html
 
@@ -19,7 +20,7 @@
 data WAFRegionalWebACLRule =
   WAFRegionalWebACLRule
   { _wAFRegionalWebACLRuleAction :: WAFRegionalWebACLAction
-  , _wAFRegionalWebACLRulePriority :: Val Integer'
+  , _wAFRegionalWebACLRulePriority :: Val Integer
   , _wAFRegionalWebACLRuleRuleId :: Val Text
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON WAFRegionalWebACLRule{..} =
     object $
     catMaybes
-    [ Just ("Action" .= _wAFRegionalWebACLRuleAction)
-    , Just ("Priority" .= _wAFRegionalWebACLRulePriority)
-    , Just ("RuleId" .= _wAFRegionalWebACLRuleRuleId)
+    [ (Just . ("Action",) . toJSON) _wAFRegionalWebACLRuleAction
+    , (Just . ("Priority",) . toJSON . fmap Integer') _wAFRegionalWebACLRulePriority
+    , (Just . ("RuleId",) . toJSON) _wAFRegionalWebACLRuleRuleId
     ]
 
 instance FromJSON WAFRegionalWebACLRule where
   parseJSON (Object obj) =
     WAFRegionalWebACLRule <$>
-      obj .: "Action" <*>
-      obj .: "Priority" <*>
-      obj .: "RuleId"
+      (obj .: "Action") <*>
+      fmap (fmap unInteger') (obj .: "Priority") <*>
+      (obj .: "RuleId")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalWebACLRule' containing required fields as
 -- arguments.
 wafRegionalWebACLRule
   :: WAFRegionalWebACLAction -- ^ 'wafrwaclrAction'
-  -> Val Integer' -- ^ 'wafrwaclrPriority'
+  -> Val Integer -- ^ 'wafrwaclrPriority'
   -> Val Text -- ^ 'wafrwaclrRuleId'
   -> WAFRegionalWebACLRule
 wafRegionalWebACLRule actionarg priorityarg ruleIdarg =
@@ -59,7 +60,7 @@
 wafrwaclrAction = lens _wAFRegionalWebACLRuleAction (\s a -> s { _wAFRegionalWebACLRuleAction = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html#cfn-wafregional-webacl-rule-priority
-wafrwaclrPriority :: Lens' WAFRegionalWebACLRule (Val Integer')
+wafrwaclrPriority :: Lens' WAFRegionalWebACLRule (Val Integer)
 wafrwaclrPriority = lens _wAFRegionalWebACLRulePriority (\s a -> s { _wAFRegionalWebACLRulePriority = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html#cfn-wafregional-webacl-rule-ruleid
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalXssMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFRegionalXssMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFRegionalXssMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFRegionalXssMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFRegionalXssMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFRegionalXssMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFRegionalXssMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalXssMatchSetFieldToMatch' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRegionalXssMatchSetXssMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-xssmatchtuple.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalXssMatchSetXssMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFRegionalXssMatchSetXssMatchTupleFieldToMatch)
-    , Just ("TextTransformation" .= _wAFRegionalXssMatchSetXssMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFRegionalXssMatchSetXssMatchTupleFieldToMatch
+    , (Just . ("TextTransformation",) . toJSON) _wAFRegionalXssMatchSetXssMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFRegionalXssMatchSetXssMatchTuple where
   parseJSON (Object obj) =
     WAFRegionalXssMatchSetXssMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalXssMatchSetXssMatchTuple' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs b/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFRulePredicate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html
 
@@ -19,7 +20,7 @@
 data WAFRulePredicate =
   WAFRulePredicate
   { _wAFRulePredicateDataId :: Val Text
-  , _wAFRulePredicateNegated :: Val Bool'
+  , _wAFRulePredicateNegated :: Val Bool
   , _wAFRulePredicateType :: Val Text
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON WAFRulePredicate{..} =
     object $
     catMaybes
-    [ Just ("DataId" .= _wAFRulePredicateDataId)
-    , Just ("Negated" .= _wAFRulePredicateNegated)
-    , Just ("Type" .= _wAFRulePredicateType)
+    [ (Just . ("DataId",) . toJSON) _wAFRulePredicateDataId
+    , (Just . ("Negated",) . toJSON . fmap Bool') _wAFRulePredicateNegated
+    , (Just . ("Type",) . toJSON) _wAFRulePredicateType
     ]
 
 instance FromJSON WAFRulePredicate where
   parseJSON (Object obj) =
     WAFRulePredicate <$>
-      obj .: "DataId" <*>
-      obj .: "Negated" <*>
-      obj .: "Type"
+      (obj .: "DataId") <*>
+      fmap (fmap unBool') (obj .: "Negated") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRulePredicate' containing required fields as
 -- arguments.
 wafRulePredicate
   :: Val Text -- ^ 'wafrpDataId'
-  -> Val Bool' -- ^ 'wafrpNegated'
+  -> Val Bool -- ^ 'wafrpNegated'
   -> Val Text -- ^ 'wafrpType'
   -> WAFRulePredicate
 wafRulePredicate dataIdarg negatedarg typearg =
@@ -59,7 +60,7 @@
 wafrpDataId = lens _wAFRulePredicateDataId (\s a -> s { _wAFRulePredicateDataId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html#cfn-waf-rule-predicates-negated
-wafrpNegated :: Lens' WAFRulePredicate (Val Bool')
+wafrpNegated :: Lens' WAFRulePredicate (Val Bool)
 wafrpNegated = lens _wAFRulePredicateNegated (\s a -> s { _wAFRulePredicateNegated = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html#cfn-waf-rule-predicates-type
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFSizeConstraintSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFSizeConstraintSetFieldToMatchData
-    , Just ("Type" .= _wAFSizeConstraintSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFSizeConstraintSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFSizeConstraintSetFieldToMatchType
     ]
 
 instance FromJSON WAFSizeConstraintSetFieldToMatch where
   parseJSON (Object obj) =
     WAFSizeConstraintSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSizeConstraintSetFieldToMatch' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSizeConstraintSetSizeConstraint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html
 
@@ -20,7 +21,7 @@
   WAFSizeConstraintSetSizeConstraint
   { _wAFSizeConstraintSetSizeConstraintComparisonOperator :: Val Text
   , _wAFSizeConstraintSetSizeConstraintFieldToMatch :: WAFSizeConstraintSetFieldToMatch
-  , _wAFSizeConstraintSetSizeConstraintSize :: Val Integer'
+  , _wAFSizeConstraintSetSizeConstraintSize :: Val Integer
   , _wAFSizeConstraintSetSizeConstraintTextTransformation :: Val Text
   } deriving (Show, Eq)
 
@@ -28,19 +29,19 @@
   toJSON WAFSizeConstraintSetSizeConstraint{..} =
     object $
     catMaybes
-    [ Just ("ComparisonOperator" .= _wAFSizeConstraintSetSizeConstraintComparisonOperator)
-    , Just ("FieldToMatch" .= _wAFSizeConstraintSetSizeConstraintFieldToMatch)
-    , Just ("Size" .= _wAFSizeConstraintSetSizeConstraintSize)
-    , Just ("TextTransformation" .= _wAFSizeConstraintSetSizeConstraintTextTransformation)
+    [ (Just . ("ComparisonOperator",) . toJSON) _wAFSizeConstraintSetSizeConstraintComparisonOperator
+    , (Just . ("FieldToMatch",) . toJSON) _wAFSizeConstraintSetSizeConstraintFieldToMatch
+    , (Just . ("Size",) . toJSON . fmap Integer') _wAFSizeConstraintSetSizeConstraintSize
+    , (Just . ("TextTransformation",) . toJSON) _wAFSizeConstraintSetSizeConstraintTextTransformation
     ]
 
 instance FromJSON WAFSizeConstraintSetSizeConstraint where
   parseJSON (Object obj) =
     WAFSizeConstraintSetSizeConstraint <$>
-      obj .: "ComparisonOperator" <*>
-      obj .: "FieldToMatch" <*>
-      obj .: "Size" <*>
-      obj .: "TextTransformation"
+      (obj .: "ComparisonOperator") <*>
+      (obj .: "FieldToMatch") <*>
+      fmap (fmap unInteger') (obj .: "Size") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSizeConstraintSetSizeConstraint' containing required
@@ -48,7 +49,7 @@
 wafSizeConstraintSetSizeConstraint
   :: Val Text -- ^ 'wafscsscComparisonOperator'
   -> WAFSizeConstraintSetFieldToMatch -- ^ 'wafscsscFieldToMatch'
-  -> Val Integer' -- ^ 'wafscsscSize'
+  -> Val Integer -- ^ 'wafscsscSize'
   -> Val Text -- ^ 'wafscsscTextTransformation'
   -> WAFSizeConstraintSetSizeConstraint
 wafSizeConstraintSetSizeConstraint comparisonOperatorarg fieldToMatcharg sizearg textTransformationarg =
@@ -68,7 +69,7 @@
 wafscsscFieldToMatch = lens _wAFSizeConstraintSetSizeConstraintFieldToMatch (\s a -> s { _wAFSizeConstraintSetSizeConstraintFieldToMatch = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-size
-wafscsscSize :: Lens' WAFSizeConstraintSetSizeConstraint (Val Integer')
+wafscsscSize :: Lens' WAFSizeConstraintSetSizeConstraint (Val Integer)
 wafscsscSize = lens _wAFSizeConstraintSetSizeConstraintSize (\s a -> s { _wAFSizeConstraintSetSizeConstraintSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-texttransformation
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFSqlInjectionMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFSqlInjectionMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFSqlInjectionMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFSqlInjectionMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFSqlInjectionMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFSqlInjectionMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFSqlInjectionMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSqlInjectionMatchSetFieldToMatch' containing required
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFSqlInjectionMatchSetSqlInjectionMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sqlinjectionmatchset-sqlinjectionmatchtuples.html
 
@@ -28,15 +29,15 @@
   toJSON WAFSqlInjectionMatchSetSqlInjectionMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFSqlInjectionMatchSetSqlInjectionMatchTupleFieldToMatch)
-    , Just ("TextTransformation" .= _wAFSqlInjectionMatchSetSqlInjectionMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFSqlInjectionMatchSetSqlInjectionMatchTupleFieldToMatch
+    , (Just . ("TextTransformation",) . toJSON) _wAFSqlInjectionMatchSetSqlInjectionMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFSqlInjectionMatchSetSqlInjectionMatchTuple where
   parseJSON (Object obj) =
     WAFSqlInjectionMatchSetSqlInjectionMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSqlInjectionMatchSetSqlInjectionMatchTuple'
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFWebACLActivatedRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html
 
@@ -19,7 +20,7 @@
 data WAFWebACLActivatedRule =
   WAFWebACLActivatedRule
   { _wAFWebACLActivatedRuleAction :: WAFWebACLWafAction
-  , _wAFWebACLActivatedRulePriority :: Val Integer'
+  , _wAFWebACLActivatedRulePriority :: Val Integer
   , _wAFWebACLActivatedRuleRuleId :: Val Text
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON WAFWebACLActivatedRule{..} =
     object $
     catMaybes
-    [ Just ("Action" .= _wAFWebACLActivatedRuleAction)
-    , Just ("Priority" .= _wAFWebACLActivatedRulePriority)
-    , Just ("RuleId" .= _wAFWebACLActivatedRuleRuleId)
+    [ (Just . ("Action",) . toJSON) _wAFWebACLActivatedRuleAction
+    , (Just . ("Priority",) . toJSON . fmap Integer') _wAFWebACLActivatedRulePriority
+    , (Just . ("RuleId",) . toJSON) _wAFWebACLActivatedRuleRuleId
     ]
 
 instance FromJSON WAFWebACLActivatedRule where
   parseJSON (Object obj) =
     WAFWebACLActivatedRule <$>
-      obj .: "Action" <*>
-      obj .: "Priority" <*>
-      obj .: "RuleId"
+      (obj .: "Action") <*>
+      fmap (fmap unInteger') (obj .: "Priority") <*>
+      (obj .: "RuleId")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFWebACLActivatedRule' containing required fields as
 -- arguments.
 wafWebACLActivatedRule
   :: WAFWebACLWafAction -- ^ 'wafwaclarAction'
-  -> Val Integer' -- ^ 'wafwaclarPriority'
+  -> Val Integer -- ^ 'wafwaclarPriority'
   -> Val Text -- ^ 'wafwaclarRuleId'
   -> WAFWebACLActivatedRule
 wafWebACLActivatedRule actionarg priorityarg ruleIdarg =
@@ -59,7 +60,7 @@
 wafwaclarAction = lens _wAFWebACLActivatedRuleAction (\s a -> s { _wAFWebACLActivatedRuleAction = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-priority
-wafwaclarPriority :: Lens' WAFWebACLActivatedRule (Val Integer')
+wafwaclarPriority :: Lens' WAFWebACLActivatedRule (Val Integer)
 wafwaclarPriority = lens _wAFWebACLActivatedRulePriority (\s a -> s { _wAFWebACLActivatedRulePriority = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-ruleid
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFWebACLWafAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-action.html
 
@@ -25,13 +26,13 @@
   toJSON WAFWebACLWafAction{..} =
     object $
     catMaybes
-    [ Just ("Type" .= _wAFWebACLWafActionType)
+    [ (Just . ("Type",) . toJSON) _wAFWebACLWafActionType
     ]
 
 instance FromJSON WAFWebACLWafAction where
   parseJSON (Object obj) =
     WAFWebACLWafAction <$>
-      obj .: "Type"
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFWebACLWafAction' containing required fields as
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetFieldToMatch.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple-fieldtomatch.html
 
@@ -26,15 +27,15 @@
   toJSON WAFXssMatchSetFieldToMatch{..} =
     object $
     catMaybes
-    [ ("Data" .=) <$> _wAFXssMatchSetFieldToMatchData
-    , Just ("Type" .= _wAFXssMatchSetFieldToMatchType)
+    [ fmap (("Data",) . toJSON) _wAFXssMatchSetFieldToMatchData
+    , (Just . ("Type",) . toJSON) _wAFXssMatchSetFieldToMatchType
     ]
 
 instance FromJSON WAFXssMatchSetFieldToMatch where
   parseJSON (Object obj) =
     WAFXssMatchSetFieldToMatch <$>
-      obj .:? "Data" <*>
-      obj .: "Type"
+      (obj .:? "Data") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFXssMatchSetFieldToMatch' containing required fields
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
--- a/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
+++ b/library-gen/Stratosphere/ResourceProperties/WAFXssMatchSetXssMatchTuple.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple.html
 
@@ -26,15 +27,15 @@
   toJSON WAFXssMatchSetXssMatchTuple{..} =
     object $
     catMaybes
-    [ Just ("FieldToMatch" .= _wAFXssMatchSetXssMatchTupleFieldToMatch)
-    , Just ("TextTransformation" .= _wAFXssMatchSetXssMatchTupleTextTransformation)
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFXssMatchSetXssMatchTupleFieldToMatch
+    , (Just . ("TextTransformation",) . toJSON) _wAFXssMatchSetXssMatchTupleTextTransformation
     ]
 
 instance FromJSON WAFXssMatchSetXssMatchTuple where
   parseJSON (Object obj) =
     WAFXssMatchSetXssMatchTuple <$>
-      obj .: "FieldToMatch" <*>
-      obj .: "TextTransformation"
+      (obj .: "FieldToMatch") <*>
+      (obj .: "TextTransformation")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFXssMatchSetXssMatchTuple' containing required fields
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs b/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayAccount.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html
 
@@ -25,13 +26,13 @@
   toJSON ApiGatewayAccount{..} =
     object $
     catMaybes
-    [ ("CloudWatchRoleArn" .=) <$> _apiGatewayAccountCloudWatchRoleArn
+    [ fmap (("CloudWatchRoleArn",) . toJSON) _apiGatewayAccountCloudWatchRoleArn
     ]
 
 instance FromJSON ApiGatewayAccount where
   parseJSON (Object obj) =
     ApiGatewayAccount <$>
-      obj .:? "CloudWatchRoleArn"
+      (obj .:? "CloudWatchRoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayAccount' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs b/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayApiKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html
 
@@ -19,7 +20,7 @@
 data ApiGatewayApiKey =
   ApiGatewayApiKey
   { _apiGatewayApiKeyDescription :: Maybe (Val Text)
-  , _apiGatewayApiKeyEnabled :: Maybe (Val Bool')
+  , _apiGatewayApiKeyEnabled :: Maybe (Val Bool)
   , _apiGatewayApiKeyName :: Maybe (Val Text)
   , _apiGatewayApiKeyStageKeys :: Maybe [ApiGatewayApiKeyStageKey]
   } deriving (Show, Eq)
@@ -28,19 +29,19 @@
   toJSON ApiGatewayApiKey{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _apiGatewayApiKeyDescription
-    , ("Enabled" .=) <$> _apiGatewayApiKeyEnabled
-    , ("Name" .=) <$> _apiGatewayApiKeyName
-    , ("StageKeys" .=) <$> _apiGatewayApiKeyStageKeys
+    [ fmap (("Description",) . toJSON) _apiGatewayApiKeyDescription
+    , fmap (("Enabled",) . toJSON . fmap Bool') _apiGatewayApiKeyEnabled
+    , fmap (("Name",) . toJSON) _apiGatewayApiKeyName
+    , fmap (("StageKeys",) . toJSON) _apiGatewayApiKeyStageKeys
     ]
 
 instance FromJSON ApiGatewayApiKey where
   parseJSON (Object obj) =
     ApiGatewayApiKey <$>
-      obj .:? "Description" <*>
-      obj .:? "Enabled" <*>
-      obj .:? "Name" <*>
-      obj .:? "StageKeys"
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "StageKeys")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayApiKey' containing required fields as
@@ -60,7 +61,7 @@
 agakDescription = lens _apiGatewayApiKeyDescription (\s a -> s { _apiGatewayApiKeyDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-enabled
-agakEnabled :: Lens' ApiGatewayApiKey (Maybe (Val Bool'))
+agakEnabled :: Lens' ApiGatewayApiKey (Maybe (Val Bool))
 agakEnabled = lens _apiGatewayApiKeyEnabled (\s a -> s { _apiGatewayApiKeyEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-name
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html
 
@@ -19,12 +20,12 @@
 data ApiGatewayAuthorizer =
   ApiGatewayAuthorizer
   { _apiGatewayAuthorizerAuthorizerCredentials :: Maybe (Val Text)
-  , _apiGatewayAuthorizerAuthorizerResultTtlInSeconds :: Maybe (Val Integer')
+  , _apiGatewayAuthorizerAuthorizerResultTtlInSeconds :: Maybe (Val Integer)
   , _apiGatewayAuthorizerAuthorizerUri :: Maybe (Val Text)
   , _apiGatewayAuthorizerIdentitySource :: Maybe (Val Text)
   , _apiGatewayAuthorizerIdentityValidationExpression :: Maybe (Val Text)
   , _apiGatewayAuthorizerName :: Maybe (Val Text)
-  , _apiGatewayAuthorizerProviderARNs :: Maybe [Val Text]
+  , _apiGatewayAuthorizerProviderARNs :: Maybe (ValList Text)
   , _apiGatewayAuthorizerRestApiId :: Maybe (Val Text)
   , _apiGatewayAuthorizerType :: Maybe (Val AuthorizerType)
   } deriving (Show, Eq)
@@ -33,29 +34,29 @@
   toJSON ApiGatewayAuthorizer{..} =
     object $
     catMaybes
-    [ ("AuthorizerCredentials" .=) <$> _apiGatewayAuthorizerAuthorizerCredentials
-    , ("AuthorizerResultTtlInSeconds" .=) <$> _apiGatewayAuthorizerAuthorizerResultTtlInSeconds
-    , ("AuthorizerUri" .=) <$> _apiGatewayAuthorizerAuthorizerUri
-    , ("IdentitySource" .=) <$> _apiGatewayAuthorizerIdentitySource
-    , ("IdentityValidationExpression" .=) <$> _apiGatewayAuthorizerIdentityValidationExpression
-    , ("Name" .=) <$> _apiGatewayAuthorizerName
-    , ("ProviderARNs" .=) <$> _apiGatewayAuthorizerProviderARNs
-    , ("RestApiId" .=) <$> _apiGatewayAuthorizerRestApiId
-    , ("Type" .=) <$> _apiGatewayAuthorizerType
+    [ fmap (("AuthorizerCredentials",) . toJSON) _apiGatewayAuthorizerAuthorizerCredentials
+    , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayAuthorizerAuthorizerResultTtlInSeconds
+    , fmap (("AuthorizerUri",) . toJSON) _apiGatewayAuthorizerAuthorizerUri
+    , fmap (("IdentitySource",) . toJSON) _apiGatewayAuthorizerIdentitySource
+    , fmap (("IdentityValidationExpression",) . toJSON) _apiGatewayAuthorizerIdentityValidationExpression
+    , fmap (("Name",) . toJSON) _apiGatewayAuthorizerName
+    , fmap (("ProviderARNs",) . toJSON) _apiGatewayAuthorizerProviderARNs
+    , fmap (("RestApiId",) . toJSON) _apiGatewayAuthorizerRestApiId
+    , fmap (("Type",) . toJSON) _apiGatewayAuthorizerType
     ]
 
 instance FromJSON ApiGatewayAuthorizer where
   parseJSON (Object obj) =
     ApiGatewayAuthorizer <$>
-      obj .:? "AuthorizerCredentials" <*>
-      obj .:? "AuthorizerResultTtlInSeconds" <*>
-      obj .:? "AuthorizerUri" <*>
-      obj .:? "IdentitySource" <*>
-      obj .:? "IdentityValidationExpression" <*>
-      obj .:? "Name" <*>
-      obj .:? "ProviderARNs" <*>
-      obj .:? "RestApiId" <*>
-      obj .:? "Type"
+      (obj .:? "AuthorizerCredentials") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "AuthorizerResultTtlInSeconds") <*>
+      (obj .:? "AuthorizerUri") <*>
+      (obj .:? "IdentitySource") <*>
+      (obj .:? "IdentityValidationExpression") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "ProviderARNs") <*>
+      (obj .:? "RestApiId") <*>
+      (obj .:? "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayAuthorizer' containing required fields as
@@ -80,7 +81,7 @@
 agaAuthorizerCredentials = lens _apiGatewayAuthorizerAuthorizerCredentials (\s a -> s { _apiGatewayAuthorizerAuthorizerCredentials = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizerresultttlinseconds
-agaAuthorizerResultTtlInSeconds :: Lens' ApiGatewayAuthorizer (Maybe (Val Integer'))
+agaAuthorizerResultTtlInSeconds :: Lens' ApiGatewayAuthorizer (Maybe (Val Integer))
 agaAuthorizerResultTtlInSeconds = lens _apiGatewayAuthorizerAuthorizerResultTtlInSeconds (\s a -> s { _apiGatewayAuthorizerAuthorizerResultTtlInSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizeruri
@@ -100,7 +101,7 @@
 agaName = lens _apiGatewayAuthorizerName (\s a -> s { _apiGatewayAuthorizerName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-providerarns
-agaProviderARNs :: Lens' ApiGatewayAuthorizer (Maybe [Val Text])
+agaProviderARNs :: Lens' ApiGatewayAuthorizer (Maybe (ValList Text))
 agaProviderARNs = lens _apiGatewayAuthorizerProviderARNs (\s a -> s { _apiGatewayAuthorizerProviderARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-restapiid
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs b/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayBasePathMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html
 
@@ -28,19 +29,19 @@
   toJSON ApiGatewayBasePathMapping{..} =
     object $
     catMaybes
-    [ ("BasePath" .=) <$> _apiGatewayBasePathMappingBasePath
-    , ("DomainName" .=) <$> _apiGatewayBasePathMappingDomainName
-    , ("RestApiId" .=) <$> _apiGatewayBasePathMappingRestApiId
-    , ("Stage" .=) <$> _apiGatewayBasePathMappingStage
+    [ fmap (("BasePath",) . toJSON) _apiGatewayBasePathMappingBasePath
+    , fmap (("DomainName",) . toJSON) _apiGatewayBasePathMappingDomainName
+    , fmap (("RestApiId",) . toJSON) _apiGatewayBasePathMappingRestApiId
+    , fmap (("Stage",) . toJSON) _apiGatewayBasePathMappingStage
     ]
 
 instance FromJSON ApiGatewayBasePathMapping where
   parseJSON (Object obj) =
     ApiGatewayBasePathMapping <$>
-      obj .:? "BasePath" <*>
-      obj .:? "DomainName" <*>
-      obj .:? "RestApiId" <*>
-      obj .:? "Stage"
+      (obj .:? "BasePath") <*>
+      (obj .:? "DomainName") <*>
+      (obj .:? "RestApiId") <*>
+      (obj .:? "Stage")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayBasePathMapping' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs b/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayClientCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html
 
@@ -25,13 +26,13 @@
   toJSON ApiGatewayClientCertificate{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _apiGatewayClientCertificateDescription
+    [ fmap (("Description",) . toJSON) _apiGatewayClientCertificateDescription
     ]
 
 instance FromJSON ApiGatewayClientCertificate where
   parseJSON (Object obj) =
     ApiGatewayClientCertificate <$>
-      obj .:? "Description"
+      (obj .:? "Description")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayClientCertificate' containing required fields
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs b/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDeployment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html
 
@@ -28,19 +29,19 @@
   toJSON ApiGatewayDeployment{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _apiGatewayDeploymentDescription
-    , Just ("RestApiId" .= _apiGatewayDeploymentRestApiId)
-    , ("StageDescription" .=) <$> _apiGatewayDeploymentStageDescription
-    , ("StageName" .=) <$> _apiGatewayDeploymentStageName
+    [ fmap (("Description",) . toJSON) _apiGatewayDeploymentDescription
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayDeploymentRestApiId
+    , fmap (("StageDescription",) . toJSON) _apiGatewayDeploymentStageDescription
+    , fmap (("StageName",) . toJSON) _apiGatewayDeploymentStageName
     ]
 
 instance FromJSON ApiGatewayDeployment where
   parseJSON (Object obj) =
     ApiGatewayDeployment <$>
-      obj .:? "Description" <*>
-      obj .: "RestApiId" <*>
-      obj .:? "StageDescription" <*>
-      obj .:? "StageName"
+      (obj .:? "Description") <*>
+      (obj .: "RestApiId") <*>
+      (obj .:? "StageDescription") <*>
+      (obj .:? "StageName")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayDeployment' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs b/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayDomainName.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
 
@@ -26,15 +27,15 @@
   toJSON ApiGatewayDomainName{..} =
     object $
     catMaybes
-    [ Just ("CertificateArn" .= _apiGatewayDomainNameCertificateArn)
-    , Just ("DomainName" .= _apiGatewayDomainNameDomainName)
+    [ (Just . ("CertificateArn",) . toJSON) _apiGatewayDomainNameCertificateArn
+    , (Just . ("DomainName",) . toJSON) _apiGatewayDomainNameDomainName
     ]
 
 instance FromJSON ApiGatewayDomainName where
   parseJSON (Object obj) =
     ApiGatewayDomainName <$>
-      obj .: "CertificateArn" <*>
-      obj .: "DomainName"
+      (obj .: "CertificateArn") <*>
+      (obj .: "DomainName")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayDomainName' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html
 
@@ -20,7 +21,7 @@
 -- for a more convenient constructor.
 data ApiGatewayMethod =
   ApiGatewayMethod
-  { _apiGatewayMethodApiKeyRequired :: Maybe (Val Bool')
+  { _apiGatewayMethodApiKeyRequired :: Maybe (Val Bool)
   , _apiGatewayMethodAuthorizationType :: Maybe (Val AuthorizationType)
   , _apiGatewayMethodAuthorizerId :: Maybe (Val Text)
   , _apiGatewayMethodHttpMethod :: Val HttpMethod
@@ -36,31 +37,31 @@
   toJSON ApiGatewayMethod{..} =
     object $
     catMaybes
-    [ ("ApiKeyRequired" .=) <$> _apiGatewayMethodApiKeyRequired
-    , ("AuthorizationType" .=) <$> _apiGatewayMethodAuthorizationType
-    , ("AuthorizerId" .=) <$> _apiGatewayMethodAuthorizerId
-    , Just ("HttpMethod" .= _apiGatewayMethodHttpMethod)
-    , ("Integration" .=) <$> _apiGatewayMethodIntegration
-    , ("MethodResponses" .=) <$> _apiGatewayMethodMethodResponses
-    , ("RequestModels" .=) <$> _apiGatewayMethodRequestModels
-    , ("RequestParameters" .=) <$> _apiGatewayMethodRequestParameters
-    , ("ResourceId" .=) <$> _apiGatewayMethodResourceId
-    , ("RestApiId" .=) <$> _apiGatewayMethodRestApiId
+    [ fmap (("ApiKeyRequired",) . toJSON . fmap Bool') _apiGatewayMethodApiKeyRequired
+    , fmap (("AuthorizationType",) . toJSON) _apiGatewayMethodAuthorizationType
+    , fmap (("AuthorizerId",) . toJSON) _apiGatewayMethodAuthorizerId
+    , (Just . ("HttpMethod",) . toJSON) _apiGatewayMethodHttpMethod
+    , fmap (("Integration",) . toJSON) _apiGatewayMethodIntegration
+    , fmap (("MethodResponses",) . toJSON) _apiGatewayMethodMethodResponses
+    , fmap (("RequestModels",) . toJSON) _apiGatewayMethodRequestModels
+    , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodRequestParameters
+    , fmap (("ResourceId",) . toJSON) _apiGatewayMethodResourceId
+    , fmap (("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
     ]
 
 instance FromJSON ApiGatewayMethod where
   parseJSON (Object obj) =
     ApiGatewayMethod <$>
-      obj .:? "ApiKeyRequired" <*>
-      obj .:? "AuthorizationType" <*>
-      obj .:? "AuthorizerId" <*>
-      obj .: "HttpMethod" <*>
-      obj .:? "Integration" <*>
-      obj .:? "MethodResponses" <*>
-      obj .:? "RequestModels" <*>
-      obj .:? "RequestParameters" <*>
-      obj .:? "ResourceId" <*>
-      obj .:? "RestApiId"
+      fmap (fmap (fmap unBool')) (obj .:? "ApiKeyRequired") <*>
+      (obj .:? "AuthorizationType") <*>
+      (obj .:? "AuthorizerId") <*>
+      (obj .: "HttpMethod") <*>
+      (obj .:? "Integration") <*>
+      (obj .:? "MethodResponses") <*>
+      (obj .:? "RequestModels") <*>
+      (obj .:? "RequestParameters") <*>
+      (obj .:? "ResourceId") <*>
+      (obj .:? "RestApiId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayMethod' containing required fields as
@@ -83,7 +84,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-apikeyrequired
-agmeApiKeyRequired :: Lens' ApiGatewayMethod (Maybe (Val Bool'))
+agmeApiKeyRequired :: Lens' ApiGatewayMethod (Maybe (Val Bool))
 agmeApiKeyRequired = lens _apiGatewayMethodApiKeyRequired (\s a -> s { _apiGatewayMethodApiKeyRequired = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-authorizationtype
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayModel.hs b/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayModel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html
 
@@ -29,21 +30,21 @@
   toJSON ApiGatewayModel{..} =
     object $
     catMaybes
-    [ ("ContentType" .=) <$> _apiGatewayModelContentType
-    , ("Description" .=) <$> _apiGatewayModelDescription
-    , ("Name" .=) <$> _apiGatewayModelName
-    , Just ("RestApiId" .= _apiGatewayModelRestApiId)
-    , ("Schema" .=) <$> _apiGatewayModelSchema
+    [ fmap (("ContentType",) . toJSON) _apiGatewayModelContentType
+    , fmap (("Description",) . toJSON) _apiGatewayModelDescription
+    , fmap (("Name",) . toJSON) _apiGatewayModelName
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayModelRestApiId
+    , fmap (("Schema",) . toJSON) _apiGatewayModelSchema
     ]
 
 instance FromJSON ApiGatewayModel where
   parseJSON (Object obj) =
     ApiGatewayModel <$>
-      obj .:? "ContentType" <*>
-      obj .:? "Description" <*>
-      obj .:? "Name" <*>
-      obj .: "RestApiId" <*>
-      obj .:? "Schema"
+      (obj .:? "ContentType") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .: "RestApiId") <*>
+      (obj .:? "Schema")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayModel' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayResource.hs b/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html
 
@@ -27,17 +28,17 @@
   toJSON ApiGatewayResource{..} =
     object $
     catMaybes
-    [ Just ("ParentId" .= _apiGatewayResourceParentId)
-    , Just ("PathPart" .= _apiGatewayResourcePathPart)
-    , Just ("RestApiId" .= _apiGatewayResourceRestApiId)
+    [ (Just . ("ParentId",) . toJSON) _apiGatewayResourceParentId
+    , (Just . ("PathPart",) . toJSON) _apiGatewayResourcePathPart
+    , (Just . ("RestApiId",) . toJSON) _apiGatewayResourceRestApiId
     ]
 
 instance FromJSON ApiGatewayResource where
   parseJSON (Object obj) =
     ApiGatewayResource <$>
-      obj .: "ParentId" <*>
-      obj .: "PathPart" <*>
-      obj .: "RestApiId"
+      (obj .: "ParentId") <*>
+      (obj .: "PathPart") <*>
+      (obj .: "RestApiId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayResource' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html
 
@@ -18,12 +19,12 @@
 -- for a more convenient constructor.
 data ApiGatewayRestApi =
   ApiGatewayRestApi
-  { _apiGatewayRestApiBinaryMediaTypes :: Maybe [Val Text]
+  { _apiGatewayRestApiBinaryMediaTypes :: Maybe (ValList Text)
   , _apiGatewayRestApiBody :: Maybe Object
   , _apiGatewayRestApiBodyS3Location :: Maybe ApiGatewayRestApiS3Location
   , _apiGatewayRestApiCloneFrom :: Maybe (Val Text)
   , _apiGatewayRestApiDescription :: Maybe (Val Text)
-  , _apiGatewayRestApiFailOnWarnings :: Maybe (Val Bool')
+  , _apiGatewayRestApiFailOnWarnings :: Maybe (Val Bool)
   , _apiGatewayRestApiMode :: Maybe (Val Text)
   , _apiGatewayRestApiName :: Maybe (Val Text)
   , _apiGatewayRestApiParameters :: Maybe Object
@@ -33,29 +34,29 @@
   toJSON ApiGatewayRestApi{..} =
     object $
     catMaybes
-    [ ("BinaryMediaTypes" .=) <$> _apiGatewayRestApiBinaryMediaTypes
-    , ("Body" .=) <$> _apiGatewayRestApiBody
-    , ("BodyS3Location" .=) <$> _apiGatewayRestApiBodyS3Location
-    , ("CloneFrom" .=) <$> _apiGatewayRestApiCloneFrom
-    , ("Description" .=) <$> _apiGatewayRestApiDescription
-    , ("FailOnWarnings" .=) <$> _apiGatewayRestApiFailOnWarnings
-    , ("Mode" .=) <$> _apiGatewayRestApiMode
-    , ("Name" .=) <$> _apiGatewayRestApiName
-    , ("Parameters" .=) <$> _apiGatewayRestApiParameters
+    [ fmap (("BinaryMediaTypes",) . toJSON) _apiGatewayRestApiBinaryMediaTypes
+    , fmap (("Body",) . toJSON) _apiGatewayRestApiBody
+    , fmap (("BodyS3Location",) . toJSON) _apiGatewayRestApiBodyS3Location
+    , fmap (("CloneFrom",) . toJSON) _apiGatewayRestApiCloneFrom
+    , fmap (("Description",) . toJSON) _apiGatewayRestApiDescription
+    , fmap (("FailOnWarnings",) . toJSON . fmap Bool') _apiGatewayRestApiFailOnWarnings
+    , fmap (("Mode",) . toJSON) _apiGatewayRestApiMode
+    , fmap (("Name",) . toJSON) _apiGatewayRestApiName
+    , fmap (("Parameters",) . toJSON) _apiGatewayRestApiParameters
     ]
 
 instance FromJSON ApiGatewayRestApi where
   parseJSON (Object obj) =
     ApiGatewayRestApi <$>
-      obj .:? "BinaryMediaTypes" <*>
-      obj .:? "Body" <*>
-      obj .:? "BodyS3Location" <*>
-      obj .:? "CloneFrom" <*>
-      obj .:? "Description" <*>
-      obj .:? "FailOnWarnings" <*>
-      obj .:? "Mode" <*>
-      obj .:? "Name" <*>
-      obj .:? "Parameters"
+      (obj .:? "BinaryMediaTypes") <*>
+      (obj .:? "Body") <*>
+      (obj .:? "BodyS3Location") <*>
+      (obj .:? "CloneFrom") <*>
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "FailOnWarnings") <*>
+      (obj .:? "Mode") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Parameters")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayRestApi' containing required fields as
@@ -76,7 +77,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-binarymediatypes
-agraBinaryMediaTypes :: Lens' ApiGatewayRestApi (Maybe [Val Text])
+agraBinaryMediaTypes :: Lens' ApiGatewayRestApi (Maybe (ValList Text))
 agraBinaryMediaTypes = lens _apiGatewayRestApiBinaryMediaTypes (\s a -> s { _apiGatewayRestApiBinaryMediaTypes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-body
@@ -96,7 +97,7 @@
 agraDescription = lens _apiGatewayRestApiDescription (\s a -> s { _apiGatewayRestApiDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-failonwarnings
-agraFailOnWarnings :: Lens' ApiGatewayRestApi (Maybe (Val Bool'))
+agraFailOnWarnings :: Lens' ApiGatewayRestApi (Maybe (Val Bool))
 agraFailOnWarnings = lens _apiGatewayRestApiFailOnWarnings (\s a -> s { _apiGatewayRestApiFailOnWarnings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-mode
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html
 
@@ -18,7 +19,7 @@
 -- a more convenient constructor.
 data ApiGatewayStage =
   ApiGatewayStage
-  { _apiGatewayStageCacheClusterEnabled :: Maybe (Val Bool')
+  { _apiGatewayStageCacheClusterEnabled :: Maybe (Val Bool)
   , _apiGatewayStageCacheClusterSize :: Maybe (Val Text)
   , _apiGatewayStageClientCertificateId :: Maybe (Val Text)
   , _apiGatewayStageDeploymentId :: Maybe (Val Text)
@@ -33,29 +34,29 @@
   toJSON ApiGatewayStage{..} =
     object $
     catMaybes
-    [ ("CacheClusterEnabled" .=) <$> _apiGatewayStageCacheClusterEnabled
-    , ("CacheClusterSize" .=) <$> _apiGatewayStageCacheClusterSize
-    , ("ClientCertificateId" .=) <$> _apiGatewayStageClientCertificateId
-    , ("DeploymentId" .=) <$> _apiGatewayStageDeploymentId
-    , ("Description" .=) <$> _apiGatewayStageDescription
-    , ("MethodSettings" .=) <$> _apiGatewayStageMethodSettings
-    , ("RestApiId" .=) <$> _apiGatewayStageRestApiId
-    , ("StageName" .=) <$> _apiGatewayStageStageName
-    , ("Variables" .=) <$> _apiGatewayStageVariables
+    [ fmap (("CacheClusterEnabled",) . toJSON . fmap Bool') _apiGatewayStageCacheClusterEnabled
+    , fmap (("CacheClusterSize",) . toJSON) _apiGatewayStageCacheClusterSize
+    , fmap (("ClientCertificateId",) . toJSON) _apiGatewayStageClientCertificateId
+    , fmap (("DeploymentId",) . toJSON) _apiGatewayStageDeploymentId
+    , fmap (("Description",) . toJSON) _apiGatewayStageDescription
+    , fmap (("MethodSettings",) . toJSON) _apiGatewayStageMethodSettings
+    , fmap (("RestApiId",) . toJSON) _apiGatewayStageRestApiId
+    , fmap (("StageName",) . toJSON) _apiGatewayStageStageName
+    , fmap (("Variables",) . toJSON) _apiGatewayStageVariables
     ]
 
 instance FromJSON ApiGatewayStage where
   parseJSON (Object obj) =
     ApiGatewayStage <$>
-      obj .:? "CacheClusterEnabled" <*>
-      obj .:? "CacheClusterSize" <*>
-      obj .:? "ClientCertificateId" <*>
-      obj .:? "DeploymentId" <*>
-      obj .:? "Description" <*>
-      obj .:? "MethodSettings" <*>
-      obj .:? "RestApiId" <*>
-      obj .:? "StageName" <*>
-      obj .:? "Variables"
+      fmap (fmap (fmap unBool')) (obj .:? "CacheClusterEnabled") <*>
+      (obj .:? "CacheClusterSize") <*>
+      (obj .:? "ClientCertificateId") <*>
+      (obj .:? "DeploymentId") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "MethodSettings") <*>
+      (obj .:? "RestApiId") <*>
+      (obj .:? "StageName") <*>
+      (obj .:? "Variables")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayStage' containing required fields as
@@ -76,7 +77,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-cacheclusterenabled
-agsCacheClusterEnabled :: Lens' ApiGatewayStage (Maybe (Val Bool'))
+agsCacheClusterEnabled :: Lens' ApiGatewayStage (Maybe (Val Bool))
 agsCacheClusterEnabled = lens _apiGatewayStageCacheClusterEnabled (\s a -> s { _apiGatewayStageCacheClusterEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-cacheclustersize
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlan.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html
 
@@ -31,21 +32,21 @@
   toJSON ApiGatewayUsagePlan{..} =
     object $
     catMaybes
-    [ ("ApiStages" .=) <$> _apiGatewayUsagePlanApiStages
-    , ("Description" .=) <$> _apiGatewayUsagePlanDescription
-    , ("Quota" .=) <$> _apiGatewayUsagePlanQuota
-    , ("Throttle" .=) <$> _apiGatewayUsagePlanThrottle
-    , ("UsagePlanName" .=) <$> _apiGatewayUsagePlanUsagePlanName
+    [ fmap (("ApiStages",) . toJSON) _apiGatewayUsagePlanApiStages
+    , fmap (("Description",) . toJSON) _apiGatewayUsagePlanDescription
+    , fmap (("Quota",) . toJSON) _apiGatewayUsagePlanQuota
+    , fmap (("Throttle",) . toJSON) _apiGatewayUsagePlanThrottle
+    , fmap (("UsagePlanName",) . toJSON) _apiGatewayUsagePlanUsagePlanName
     ]
 
 instance FromJSON ApiGatewayUsagePlan where
   parseJSON (Object obj) =
     ApiGatewayUsagePlan <$>
-      obj .:? "ApiStages" <*>
-      obj .:? "Description" <*>
-      obj .:? "Quota" <*>
-      obj .:? "Throttle" <*>
-      obj .:? "UsagePlanName"
+      (obj .:? "ApiStages") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Quota") <*>
+      (obj .:? "Throttle") <*>
+      (obj .:? "UsagePlanName")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayUsagePlan' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayUsagePlanKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html
 
@@ -27,17 +28,17 @@
   toJSON ApiGatewayUsagePlanKey{..} =
     object $
     catMaybes
-    [ Just ("KeyId" .= _apiGatewayUsagePlanKeyKeyId)
-    , Just ("KeyType" .= _apiGatewayUsagePlanKeyKeyType)
-    , Just ("UsagePlanId" .= _apiGatewayUsagePlanKeyUsagePlanId)
+    [ (Just . ("KeyId",) . toJSON) _apiGatewayUsagePlanKeyKeyId
+    , (Just . ("KeyType",) . toJSON) _apiGatewayUsagePlanKeyKeyType
+    , (Just . ("UsagePlanId",) . toJSON) _apiGatewayUsagePlanKeyUsagePlanId
     ]
 
 instance FromJSON ApiGatewayUsagePlanKey where
   parseJSON (Object obj) =
     ApiGatewayUsagePlanKey <$>
-      obj .: "KeyId" <*>
-      obj .: "KeyType" <*>
-      obj .: "UsagePlanId"
+      (obj .: "KeyId") <*>
+      (obj .: "KeyType") <*>
+      (obj .: "UsagePlanId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayUsagePlanKey' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
--- a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
+++ b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalableTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html
 
@@ -18,8 +19,8 @@
 -- 'applicationAutoScalingScalableTarget' for a more convenient constructor.
 data ApplicationAutoScalingScalableTarget =
   ApplicationAutoScalingScalableTarget
-  { _applicationAutoScalingScalableTargetMaxCapacity :: Val Integer'
-  , _applicationAutoScalingScalableTargetMinCapacity :: Val Integer'
+  { _applicationAutoScalingScalableTargetMaxCapacity :: Val Integer
+  , _applicationAutoScalingScalableTargetMinCapacity :: Val Integer
   , _applicationAutoScalingScalableTargetResourceId :: Val Text
   , _applicationAutoScalingScalableTargetRoleARN :: Val Text
   , _applicationAutoScalingScalableTargetScalableDimension :: Val Text
@@ -30,30 +31,30 @@
   toJSON ApplicationAutoScalingScalableTarget{..} =
     object $
     catMaybes
-    [ Just ("MaxCapacity" .= _applicationAutoScalingScalableTargetMaxCapacity)
-    , Just ("MinCapacity" .= _applicationAutoScalingScalableTargetMinCapacity)
-    , Just ("ResourceId" .= _applicationAutoScalingScalableTargetResourceId)
-    , Just ("RoleARN" .= _applicationAutoScalingScalableTargetRoleARN)
-    , Just ("ScalableDimension" .= _applicationAutoScalingScalableTargetScalableDimension)
-    , Just ("ServiceNamespace" .= _applicationAutoScalingScalableTargetServiceNamespace)
+    [ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMaxCapacity
+    , (Just . ("MinCapacity",) . toJSON . fmap Integer') _applicationAutoScalingScalableTargetMinCapacity
+    , (Just . ("ResourceId",) . toJSON) _applicationAutoScalingScalableTargetResourceId
+    , (Just . ("RoleARN",) . toJSON) _applicationAutoScalingScalableTargetRoleARN
+    , (Just . ("ScalableDimension",) . toJSON) _applicationAutoScalingScalableTargetScalableDimension
+    , (Just . ("ServiceNamespace",) . toJSON) _applicationAutoScalingScalableTargetServiceNamespace
     ]
 
 instance FromJSON ApplicationAutoScalingScalableTarget where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalableTarget <$>
-      obj .: "MaxCapacity" <*>
-      obj .: "MinCapacity" <*>
-      obj .: "ResourceId" <*>
-      obj .: "RoleARN" <*>
-      obj .: "ScalableDimension" <*>
-      obj .: "ServiceNamespace"
+      fmap (fmap unInteger') (obj .: "MaxCapacity") <*>
+      fmap (fmap unInteger') (obj .: "MinCapacity") <*>
+      (obj .: "ResourceId") <*>
+      (obj .: "RoleARN") <*>
+      (obj .: "ScalableDimension") <*>
+      (obj .: "ServiceNamespace")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApplicationAutoScalingScalableTarget' containing
 -- required fields as arguments.
 applicationAutoScalingScalableTarget
-  :: Val Integer' -- ^ 'aasstMaxCapacity'
-  -> Val Integer' -- ^ 'aasstMinCapacity'
+  :: Val Integer -- ^ 'aasstMaxCapacity'
+  -> Val Integer -- ^ 'aasstMinCapacity'
   -> Val Text -- ^ 'aasstResourceId'
   -> Val Text -- ^ 'aasstRoleARN'
   -> Val Text -- ^ 'aasstScalableDimension'
@@ -70,11 +71,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-maxcapacity
-aasstMaxCapacity :: Lens' ApplicationAutoScalingScalableTarget (Val Integer')
+aasstMaxCapacity :: Lens' ApplicationAutoScalingScalableTarget (Val Integer)
 aasstMaxCapacity = lens _applicationAutoScalingScalableTargetMaxCapacity (\s a -> s { _applicationAutoScalingScalableTargetMaxCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-mincapacity
-aasstMinCapacity :: Lens' ApplicationAutoScalingScalableTarget (Val Integer')
+aasstMinCapacity :: Lens' ApplicationAutoScalingScalableTarget (Val Integer)
 aasstMinCapacity = lens _applicationAutoScalingScalableTargetMinCapacity (\s a -> s { _applicationAutoScalingScalableTargetMinCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-resourceid
diff --git a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
--- a/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
+++ b/library-gen/Stratosphere/Resources/ApplicationAutoScalingScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html
 
@@ -33,27 +34,27 @@
   toJSON ApplicationAutoScalingScalingPolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyName" .= _applicationAutoScalingScalingPolicyPolicyName)
-    , Just ("PolicyType" .= _applicationAutoScalingScalingPolicyPolicyType)
-    , ("ResourceId" .=) <$> _applicationAutoScalingScalingPolicyResourceId
-    , ("ScalableDimension" .=) <$> _applicationAutoScalingScalingPolicyScalableDimension
-    , ("ScalingTargetId" .=) <$> _applicationAutoScalingScalingPolicyScalingTargetId
-    , ("ServiceNamespace" .=) <$> _applicationAutoScalingScalingPolicyServiceNamespace
-    , ("StepScalingPolicyConfiguration" .=) <$> _applicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
-    , ("TargetTrackingScalingPolicyConfiguration" .=) <$> _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
+    [ (Just . ("PolicyName",) . toJSON) _applicationAutoScalingScalingPolicyPolicyName
+    , (Just . ("PolicyType",) . toJSON) _applicationAutoScalingScalingPolicyPolicyType
+    , fmap (("ResourceId",) . toJSON) _applicationAutoScalingScalingPolicyResourceId
+    , fmap (("ScalableDimension",) . toJSON) _applicationAutoScalingScalingPolicyScalableDimension
+    , fmap (("ScalingTargetId",) . toJSON) _applicationAutoScalingScalingPolicyScalingTargetId
+    , fmap (("ServiceNamespace",) . toJSON) _applicationAutoScalingScalingPolicyServiceNamespace
+    , fmap (("StepScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
+    , fmap (("TargetTrackingScalingPolicyConfiguration",) . toJSON) _applicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
     ]
 
 instance FromJSON ApplicationAutoScalingScalingPolicy where
   parseJSON (Object obj) =
     ApplicationAutoScalingScalingPolicy <$>
-      obj .: "PolicyName" <*>
-      obj .: "PolicyType" <*>
-      obj .:? "ResourceId" <*>
-      obj .:? "ScalableDimension" <*>
-      obj .:? "ScalingTargetId" <*>
-      obj .:? "ServiceNamespace" <*>
-      obj .:? "StepScalingPolicyConfiguration" <*>
-      obj .:? "TargetTrackingScalingPolicyConfiguration"
+      (obj .: "PolicyName") <*>
+      (obj .: "PolicyType") <*>
+      (obj .:? "ResourceId") <*>
+      (obj .:? "ScalableDimension") <*>
+      (obj .:? "ScalingTargetId") <*>
+      (obj .:? "ServiceNamespace") <*>
+      (obj .:? "StepScalingPolicyConfiguration") <*>
+      (obj .:? "TargetTrackingScalingPolicyConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApplicationAutoScalingScalingPolicy' containing required
diff --git a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html
 
@@ -20,68 +21,68 @@
 -- 'autoScalingAutoScalingGroup' for a more convenient constructor.
 data AutoScalingAutoScalingGroup =
   AutoScalingAutoScalingGroup
-  { _autoScalingAutoScalingGroupAvailabilityZones :: Maybe [Val Text]
+  { _autoScalingAutoScalingGroupAvailabilityZones :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupCooldown :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupDesiredCapacity :: Maybe (Val Text)
-  , _autoScalingAutoScalingGroupHealthCheckGracePeriod :: Maybe (Val Integer')
+  , _autoScalingAutoScalingGroupHealthCheckGracePeriod :: Maybe (Val Integer)
   , _autoScalingAutoScalingGroupHealthCheckType :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupInstanceId :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupLaunchConfigurationName :: Maybe (Val Text)
-  , _autoScalingAutoScalingGroupLoadBalancerNames :: Maybe [Val Text]
+  , _autoScalingAutoScalingGroupLoadBalancerNames :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupMaxSize :: Val Text
   , _autoScalingAutoScalingGroupMetricsCollection :: Maybe [AutoScalingAutoScalingGroupMetricsCollection]
   , _autoScalingAutoScalingGroupMinSize :: Val Text
   , _autoScalingAutoScalingGroupNotificationConfigurations :: Maybe [AutoScalingAutoScalingGroupNotificationConfiguration]
   , _autoScalingAutoScalingGroupPlacementGroup :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupTags :: Maybe [AutoScalingAutoScalingGroupTagProperty]
-  , _autoScalingAutoScalingGroupTargetGroupARNs :: Maybe [Val Text]
-  , _autoScalingAutoScalingGroupTerminationPolicies :: Maybe [Val Text]
-  , _autoScalingAutoScalingGroupVPCZoneIdentifier :: Maybe [Val Text]
+  , _autoScalingAutoScalingGroupTargetGroupARNs :: Maybe (ValList Text)
+  , _autoScalingAutoScalingGroupTerminationPolicies :: Maybe (ValList Text)
+  , _autoScalingAutoScalingGroupVPCZoneIdentifier :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON AutoScalingAutoScalingGroup where
   toJSON AutoScalingAutoScalingGroup{..} =
     object $
     catMaybes
-    [ ("AvailabilityZones" .=) <$> _autoScalingAutoScalingGroupAvailabilityZones
-    , ("Cooldown" .=) <$> _autoScalingAutoScalingGroupCooldown
-    , ("DesiredCapacity" .=) <$> _autoScalingAutoScalingGroupDesiredCapacity
-    , ("HealthCheckGracePeriod" .=) <$> _autoScalingAutoScalingGroupHealthCheckGracePeriod
-    , ("HealthCheckType" .=) <$> _autoScalingAutoScalingGroupHealthCheckType
-    , ("InstanceId" .=) <$> _autoScalingAutoScalingGroupInstanceId
-    , ("LaunchConfigurationName" .=) <$> _autoScalingAutoScalingGroupLaunchConfigurationName
-    , ("LoadBalancerNames" .=) <$> _autoScalingAutoScalingGroupLoadBalancerNames
-    , Just ("MaxSize" .= _autoScalingAutoScalingGroupMaxSize)
-    , ("MetricsCollection" .=) <$> _autoScalingAutoScalingGroupMetricsCollection
-    , Just ("MinSize" .= _autoScalingAutoScalingGroupMinSize)
-    , ("NotificationConfigurations" .=) <$> _autoScalingAutoScalingGroupNotificationConfigurations
-    , ("PlacementGroup" .=) <$> _autoScalingAutoScalingGroupPlacementGroup
-    , ("Tags" .=) <$> _autoScalingAutoScalingGroupTags
-    , ("TargetGroupARNs" .=) <$> _autoScalingAutoScalingGroupTargetGroupARNs
-    , ("TerminationPolicies" .=) <$> _autoScalingAutoScalingGroupTerminationPolicies
-    , ("VPCZoneIdentifier" .=) <$> _autoScalingAutoScalingGroupVPCZoneIdentifier
+    [ fmap (("AvailabilityZones",) . toJSON) _autoScalingAutoScalingGroupAvailabilityZones
+    , fmap (("Cooldown",) . toJSON) _autoScalingAutoScalingGroupCooldown
+    , fmap (("DesiredCapacity",) . toJSON) _autoScalingAutoScalingGroupDesiredCapacity
+    , fmap (("HealthCheckGracePeriod",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupHealthCheckGracePeriod
+    , fmap (("HealthCheckType",) . toJSON) _autoScalingAutoScalingGroupHealthCheckType
+    , fmap (("InstanceId",) . toJSON) _autoScalingAutoScalingGroupInstanceId
+    , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingAutoScalingGroupLaunchConfigurationName
+    , fmap (("LoadBalancerNames",) . toJSON) _autoScalingAutoScalingGroupLoadBalancerNames
+    , (Just . ("MaxSize",) . toJSON) _autoScalingAutoScalingGroupMaxSize
+    , fmap (("MetricsCollection",) . toJSON) _autoScalingAutoScalingGroupMetricsCollection
+    , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
+    , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
+    , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
+    , fmap (("Tags",) . toJSON) _autoScalingAutoScalingGroupTags
+    , fmap (("TargetGroupARNs",) . toJSON) _autoScalingAutoScalingGroupTargetGroupARNs
+    , fmap (("TerminationPolicies",) . toJSON) _autoScalingAutoScalingGroupTerminationPolicies
+    , fmap (("VPCZoneIdentifier",) . toJSON) _autoScalingAutoScalingGroupVPCZoneIdentifier
     ]
 
 instance FromJSON AutoScalingAutoScalingGroup where
   parseJSON (Object obj) =
     AutoScalingAutoScalingGroup <$>
-      obj .:? "AvailabilityZones" <*>
-      obj .:? "Cooldown" <*>
-      obj .:? "DesiredCapacity" <*>
-      obj .:? "HealthCheckGracePeriod" <*>
-      obj .:? "HealthCheckType" <*>
-      obj .:? "InstanceId" <*>
-      obj .:? "LaunchConfigurationName" <*>
-      obj .:? "LoadBalancerNames" <*>
-      obj .: "MaxSize" <*>
-      obj .:? "MetricsCollection" <*>
-      obj .: "MinSize" <*>
-      obj .:? "NotificationConfigurations" <*>
-      obj .:? "PlacementGroup" <*>
-      obj .:? "Tags" <*>
-      obj .:? "TargetGroupARNs" <*>
-      obj .:? "TerminationPolicies" <*>
-      obj .:? "VPCZoneIdentifier"
+      (obj .:? "AvailabilityZones") <*>
+      (obj .:? "Cooldown") <*>
+      (obj .:? "DesiredCapacity") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HealthCheckGracePeriod") <*>
+      (obj .:? "HealthCheckType") <*>
+      (obj .:? "InstanceId") <*>
+      (obj .:? "LaunchConfigurationName") <*>
+      (obj .:? "LoadBalancerNames") <*>
+      (obj .: "MaxSize") <*>
+      (obj .:? "MetricsCollection") <*>
+      (obj .: "MinSize") <*>
+      (obj .:? "NotificationConfigurations") <*>
+      (obj .:? "PlacementGroup") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "TargetGroupARNs") <*>
+      (obj .:? "TerminationPolicies") <*>
+      (obj .:? "VPCZoneIdentifier")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingAutoScalingGroup' containing required fields
@@ -112,7 +113,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-availabilityzones
-asasgAvailabilityZones :: Lens' AutoScalingAutoScalingGroup (Maybe [Val Text])
+asasgAvailabilityZones :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgAvailabilityZones = lens _autoScalingAutoScalingGroupAvailabilityZones (\s a -> s { _autoScalingAutoScalingGroupAvailabilityZones = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-cooldown
@@ -124,7 +125,7 @@
 asasgDesiredCapacity = lens _autoScalingAutoScalingGroupDesiredCapacity (\s a -> s { _autoScalingAutoScalingGroupDesiredCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-healthcheckgraceperiod
-asasgHealthCheckGracePeriod :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Integer'))
+asasgHealthCheckGracePeriod :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Integer))
 asasgHealthCheckGracePeriod = lens _autoScalingAutoScalingGroupHealthCheckGracePeriod (\s a -> s { _autoScalingAutoScalingGroupHealthCheckGracePeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-healthchecktype
@@ -140,7 +141,7 @@
 asasgLaunchConfigurationName = lens _autoScalingAutoScalingGroupLaunchConfigurationName (\s a -> s { _autoScalingAutoScalingGroupLaunchConfigurationName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-loadbalancernames
-asasgLoadBalancerNames :: Lens' AutoScalingAutoScalingGroup (Maybe [Val Text])
+asasgLoadBalancerNames :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgLoadBalancerNames = lens _autoScalingAutoScalingGroupLoadBalancerNames (\s a -> s { _autoScalingAutoScalingGroupLoadBalancerNames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-maxsize
@@ -168,13 +169,13 @@
 asasgTags = lens _autoScalingAutoScalingGroupTags (\s a -> s { _autoScalingAutoScalingGroupTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-targetgrouparns
-asasgTargetGroupARNs :: Lens' AutoScalingAutoScalingGroup (Maybe [Val Text])
+asasgTargetGroupARNs :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgTargetGroupARNs = lens _autoScalingAutoScalingGroupTargetGroupARNs (\s a -> s { _autoScalingAutoScalingGroupTargetGroupARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-termpolicy
-asasgTerminationPolicies :: Lens' AutoScalingAutoScalingGroup (Maybe [Val Text])
+asasgTerminationPolicies :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgTerminationPolicies = lens _autoScalingAutoScalingGroupTerminationPolicies (\s a -> s { _autoScalingAutoScalingGroupTerminationPolicies = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-vpczoneidentifier
-asasgVPCZoneIdentifier :: Lens' AutoScalingAutoScalingGroup (Maybe [Val Text])
+asasgVPCZoneIdentifier :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgVPCZoneIdentifier = lens _autoScalingAutoScalingGroupVPCZoneIdentifier (\s a -> s { _autoScalingAutoScalingGroupVPCZoneIdentifier = a })
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html
 
@@ -18,21 +19,21 @@
 -- 'autoScalingLaunchConfiguration' for a more convenient constructor.
 data AutoScalingLaunchConfiguration =
   AutoScalingLaunchConfiguration
-  { _autoScalingLaunchConfigurationAssociatePublicIpAddress :: Maybe (Val Bool')
+  { _autoScalingLaunchConfigurationAssociatePublicIpAddress :: Maybe (Val Bool)
   , _autoScalingLaunchConfigurationBlockDeviceMappings :: Maybe [AutoScalingLaunchConfigurationBlockDeviceMapping]
   , _autoScalingLaunchConfigurationClassicLinkVPCId :: Maybe (Val Text)
-  , _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups :: Maybe [Val Text]
-  , _autoScalingLaunchConfigurationEbsOptimized :: Maybe (Val Bool')
+  , _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups :: Maybe (ValList Text)
+  , _autoScalingLaunchConfigurationEbsOptimized :: Maybe (Val Bool)
   , _autoScalingLaunchConfigurationIamInstanceProfile :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationImageId :: Val Text
   , _autoScalingLaunchConfigurationInstanceId :: Maybe (Val Text)
-  , _autoScalingLaunchConfigurationInstanceMonitoring :: Maybe (Val Bool')
+  , _autoScalingLaunchConfigurationInstanceMonitoring :: Maybe (Val Bool)
   , _autoScalingLaunchConfigurationInstanceType :: Val Text
   , _autoScalingLaunchConfigurationKernelId :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationKeyName :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationPlacementTenancy :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationRamDiskId :: Maybe (Val Text)
-  , _autoScalingLaunchConfigurationSecurityGroups :: Maybe [Val Text]
+  , _autoScalingLaunchConfigurationSecurityGroups :: Maybe (ValList Text)
   , _autoScalingLaunchConfigurationSpotPrice :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationUserData :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -41,45 +42,45 @@
   toJSON AutoScalingLaunchConfiguration{..} =
     object $
     catMaybes
-    [ ("AssociatePublicIpAddress" .=) <$> _autoScalingLaunchConfigurationAssociatePublicIpAddress
-    , ("BlockDeviceMappings" .=) <$> _autoScalingLaunchConfigurationBlockDeviceMappings
-    , ("ClassicLinkVPCId" .=) <$> _autoScalingLaunchConfigurationClassicLinkVPCId
-    , ("ClassicLinkVPCSecurityGroups" .=) <$> _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups
-    , ("EbsOptimized" .=) <$> _autoScalingLaunchConfigurationEbsOptimized
-    , ("IamInstanceProfile" .=) <$> _autoScalingLaunchConfigurationIamInstanceProfile
-    , Just ("ImageId" .= _autoScalingLaunchConfigurationImageId)
-    , ("InstanceId" .=) <$> _autoScalingLaunchConfigurationInstanceId
-    , ("InstanceMonitoring" .=) <$> _autoScalingLaunchConfigurationInstanceMonitoring
-    , Just ("InstanceType" .= _autoScalingLaunchConfigurationInstanceType)
-    , ("KernelId" .=) <$> _autoScalingLaunchConfigurationKernelId
-    , ("KeyName" .=) <$> _autoScalingLaunchConfigurationKeyName
-    , ("PlacementTenancy" .=) <$> _autoScalingLaunchConfigurationPlacementTenancy
-    , ("RamDiskId" .=) <$> _autoScalingLaunchConfigurationRamDiskId
-    , ("SecurityGroups" .=) <$> _autoScalingLaunchConfigurationSecurityGroups
-    , ("SpotPrice" .=) <$> _autoScalingLaunchConfigurationSpotPrice
-    , ("UserData" .=) <$> _autoScalingLaunchConfigurationUserData
+    [ fmap (("AssociatePublicIpAddress",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationAssociatePublicIpAddress
+    , fmap (("BlockDeviceMappings",) . toJSON) _autoScalingLaunchConfigurationBlockDeviceMappings
+    , fmap (("ClassicLinkVPCId",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCId
+    , fmap (("ClassicLinkVPCSecurityGroups",) . toJSON) _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationEbsOptimized
+    , fmap (("IamInstanceProfile",) . toJSON) _autoScalingLaunchConfigurationIamInstanceProfile
+    , (Just . ("ImageId",) . toJSON) _autoScalingLaunchConfigurationImageId
+    , fmap (("InstanceId",) . toJSON) _autoScalingLaunchConfigurationInstanceId
+    , fmap (("InstanceMonitoring",) . toJSON . fmap Bool') _autoScalingLaunchConfigurationInstanceMonitoring
+    , (Just . ("InstanceType",) . toJSON) _autoScalingLaunchConfigurationInstanceType
+    , fmap (("KernelId",) . toJSON) _autoScalingLaunchConfigurationKernelId
+    , fmap (("KeyName",) . toJSON) _autoScalingLaunchConfigurationKeyName
+    , fmap (("PlacementTenancy",) . toJSON) _autoScalingLaunchConfigurationPlacementTenancy
+    , fmap (("RamDiskId",) . toJSON) _autoScalingLaunchConfigurationRamDiskId
+    , fmap (("SecurityGroups",) . toJSON) _autoScalingLaunchConfigurationSecurityGroups
+    , fmap (("SpotPrice",) . toJSON) _autoScalingLaunchConfigurationSpotPrice
+    , fmap (("UserData",) . toJSON) _autoScalingLaunchConfigurationUserData
     ]
 
 instance FromJSON AutoScalingLaunchConfiguration where
   parseJSON (Object obj) =
     AutoScalingLaunchConfiguration <$>
-      obj .:? "AssociatePublicIpAddress" <*>
-      obj .:? "BlockDeviceMappings" <*>
-      obj .:? "ClassicLinkVPCId" <*>
-      obj .:? "ClassicLinkVPCSecurityGroups" <*>
-      obj .:? "EbsOptimized" <*>
-      obj .:? "IamInstanceProfile" <*>
-      obj .: "ImageId" <*>
-      obj .:? "InstanceId" <*>
-      obj .:? "InstanceMonitoring" <*>
-      obj .: "InstanceType" <*>
-      obj .:? "KernelId" <*>
-      obj .:? "KeyName" <*>
-      obj .:? "PlacementTenancy" <*>
-      obj .:? "RamDiskId" <*>
-      obj .:? "SecurityGroups" <*>
-      obj .:? "SpotPrice" <*>
-      obj .:? "UserData"
+      fmap (fmap (fmap unBool')) (obj .:? "AssociatePublicIpAddress") <*>
+      (obj .:? "BlockDeviceMappings") <*>
+      (obj .:? "ClassicLinkVPCId") <*>
+      (obj .:? "ClassicLinkVPCSecurityGroups") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized") <*>
+      (obj .:? "IamInstanceProfile") <*>
+      (obj .: "ImageId") <*>
+      (obj .:? "InstanceId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "InstanceMonitoring") <*>
+      (obj .: "InstanceType") <*>
+      (obj .:? "KernelId") <*>
+      (obj .:? "KeyName") <*>
+      (obj .:? "PlacementTenancy") <*>
+      (obj .:? "RamDiskId") <*>
+      (obj .:? "SecurityGroups") <*>
+      (obj .:? "SpotPrice") <*>
+      (obj .:? "UserData")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingLaunchConfiguration' containing required
@@ -110,7 +111,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cf-as-launchconfig-associatepubip
-aslcAssociatePublicIpAddress :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool'))
+aslcAssociatePublicIpAddress :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool))
 aslcAssociatePublicIpAddress = lens _autoScalingLaunchConfigurationAssociatePublicIpAddress (\s a -> s { _autoScalingLaunchConfigurationAssociatePublicIpAddress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-blockdevicemappings
@@ -122,11 +123,11 @@
 aslcClassicLinkVPCId = lens _autoScalingLaunchConfigurationClassicLinkVPCId (\s a -> s { _autoScalingLaunchConfigurationClassicLinkVPCId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-classiclinkvpcsecuritygroups
-aslcClassicLinkVPCSecurityGroups :: Lens' AutoScalingLaunchConfiguration (Maybe [Val Text])
+aslcClassicLinkVPCSecurityGroups :: Lens' AutoScalingLaunchConfiguration (Maybe (ValList Text))
 aslcClassicLinkVPCSecurityGroups = lens _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups (\s a -> s { _autoScalingLaunchConfigurationClassicLinkVPCSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-ebsoptimized
-aslcEbsOptimized :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool'))
+aslcEbsOptimized :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool))
 aslcEbsOptimized = lens _autoScalingLaunchConfigurationEbsOptimized (\s a -> s { _autoScalingLaunchConfigurationEbsOptimized = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-iaminstanceprofile
@@ -142,7 +143,7 @@
 aslcInstanceId = lens _autoScalingLaunchConfigurationInstanceId (\s a -> s { _autoScalingLaunchConfigurationInstanceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-instancemonitoring
-aslcInstanceMonitoring :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool'))
+aslcInstanceMonitoring :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Bool))
 aslcInstanceMonitoring = lens _autoScalingLaunchConfigurationInstanceMonitoring (\s a -> s { _autoScalingLaunchConfigurationInstanceMonitoring = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-instancetype
@@ -166,7 +167,7 @@
 aslcRamDiskId = lens _autoScalingLaunchConfigurationRamDiskId (\s a -> s { _autoScalingLaunchConfigurationRamDiskId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-securitygroups
-aslcSecurityGroups :: Lens' AutoScalingLaunchConfiguration (Maybe [Val Text])
+aslcSecurityGroups :: Lens' AutoScalingLaunchConfiguration (Maybe (ValList Text))
 aslcSecurityGroups = lens _autoScalingLaunchConfigurationSecurityGroups (\s a -> s { _autoScalingLaunchConfigurationSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-spotprice
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html
 
@@ -20,7 +21,7 @@
   AutoScalingLifecycleHook
   { _autoScalingLifecycleHookAutoScalingGroupName :: Val Text
   , _autoScalingLifecycleHookDefaultResult :: Maybe (Val Text)
-  , _autoScalingLifecycleHookHeartbeatTimeout :: Maybe (Val Integer')
+  , _autoScalingLifecycleHookHeartbeatTimeout :: Maybe (Val Integer)
   , _autoScalingLifecycleHookLifecycleTransition :: Val Text
   , _autoScalingLifecycleHookNotificationMetadata :: Maybe (Val Text)
   , _autoScalingLifecycleHookNotificationTargetARN :: Maybe (Val Text)
@@ -31,25 +32,25 @@
   toJSON AutoScalingLifecycleHook{..} =
     object $
     catMaybes
-    [ Just ("AutoScalingGroupName" .= _autoScalingLifecycleHookAutoScalingGroupName)
-    , ("DefaultResult" .=) <$> _autoScalingLifecycleHookDefaultResult
-    , ("HeartbeatTimeout" .=) <$> _autoScalingLifecycleHookHeartbeatTimeout
-    , Just ("LifecycleTransition" .= _autoScalingLifecycleHookLifecycleTransition)
-    , ("NotificationMetadata" .=) <$> _autoScalingLifecycleHookNotificationMetadata
-    , ("NotificationTargetARN" .=) <$> _autoScalingLifecycleHookNotificationTargetARN
-    , ("RoleARN" .=) <$> _autoScalingLifecycleHookRoleARN
+    [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingLifecycleHookAutoScalingGroupName
+    , fmap (("DefaultResult",) . toJSON) _autoScalingLifecycleHookDefaultResult
+    , fmap (("HeartbeatTimeout",) . toJSON . fmap Integer') _autoScalingLifecycleHookHeartbeatTimeout
+    , (Just . ("LifecycleTransition",) . toJSON) _autoScalingLifecycleHookLifecycleTransition
+    , fmap (("NotificationMetadata",) . toJSON) _autoScalingLifecycleHookNotificationMetadata
+    , fmap (("NotificationTargetARN",) . toJSON) _autoScalingLifecycleHookNotificationTargetARN
+    , fmap (("RoleARN",) . toJSON) _autoScalingLifecycleHookRoleARN
     ]
 
 instance FromJSON AutoScalingLifecycleHook where
   parseJSON (Object obj) =
     AutoScalingLifecycleHook <$>
-      obj .: "AutoScalingGroupName" <*>
-      obj .:? "DefaultResult" <*>
-      obj .:? "HeartbeatTimeout" <*>
-      obj .: "LifecycleTransition" <*>
-      obj .:? "NotificationMetadata" <*>
-      obj .:? "NotificationTargetARN" <*>
-      obj .:? "RoleARN"
+      (obj .: "AutoScalingGroupName") <*>
+      (obj .:? "DefaultResult") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HeartbeatTimeout") <*>
+      (obj .: "LifecycleTransition") <*>
+      (obj .:? "NotificationMetadata") <*>
+      (obj .:? "NotificationTargetARN") <*>
+      (obj .:? "RoleARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingLifecycleHook' containing required fields as
@@ -78,7 +79,7 @@
 aslhDefaultResult = lens _autoScalingLifecycleHookDefaultResult (\s a -> s { _autoScalingLifecycleHookDefaultResult = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-heartbeattimeout
-aslhHeartbeatTimeout :: Lens' AutoScalingLifecycleHook (Maybe (Val Integer'))
+aslhHeartbeatTimeout :: Lens' AutoScalingLifecycleHook (Maybe (Val Integer))
 aslhHeartbeatTimeout = lens _autoScalingLifecycleHookHeartbeatTimeout (\s a -> s { _autoScalingLifecycleHookHeartbeatTimeout = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-lifecycletransition
diff --git a/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs b/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingScalingPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html
 
@@ -21,11 +22,11 @@
   { _autoScalingScalingPolicyAdjustmentType :: Val Text
   , _autoScalingScalingPolicyAutoScalingGroupName :: Val Text
   , _autoScalingScalingPolicyCooldown :: Maybe (Val Text)
-  , _autoScalingScalingPolicyEstimatedInstanceWarmup :: Maybe (Val Integer')
+  , _autoScalingScalingPolicyEstimatedInstanceWarmup :: Maybe (Val Integer)
   , _autoScalingScalingPolicyMetricAggregationType :: Maybe (Val Text)
-  , _autoScalingScalingPolicyMinAdjustmentMagnitude :: Maybe (Val Integer')
+  , _autoScalingScalingPolicyMinAdjustmentMagnitude :: Maybe (Val Integer)
   , _autoScalingScalingPolicyPolicyType :: Maybe (Val Text)
-  , _autoScalingScalingPolicyScalingAdjustment :: Maybe (Val Integer')
+  , _autoScalingScalingPolicyScalingAdjustment :: Maybe (Val Integer)
   , _autoScalingScalingPolicyStepAdjustments :: Maybe [AutoScalingScalingPolicyStepAdjustment]
   } deriving (Show, Eq)
 
@@ -33,29 +34,29 @@
   toJSON AutoScalingScalingPolicy{..} =
     object $
     catMaybes
-    [ Just ("AdjustmentType" .= _autoScalingScalingPolicyAdjustmentType)
-    , Just ("AutoScalingGroupName" .= _autoScalingScalingPolicyAutoScalingGroupName)
-    , ("Cooldown" .=) <$> _autoScalingScalingPolicyCooldown
-    , ("EstimatedInstanceWarmup" .=) <$> _autoScalingScalingPolicyEstimatedInstanceWarmup
-    , ("MetricAggregationType" .=) <$> _autoScalingScalingPolicyMetricAggregationType
-    , ("MinAdjustmentMagnitude" .=) <$> _autoScalingScalingPolicyMinAdjustmentMagnitude
-    , ("PolicyType" .=) <$> _autoScalingScalingPolicyPolicyType
-    , ("ScalingAdjustment" .=) <$> _autoScalingScalingPolicyScalingAdjustment
-    , ("StepAdjustments" .=) <$> _autoScalingScalingPolicyStepAdjustments
+    [ (Just . ("AdjustmentType",) . toJSON) _autoScalingScalingPolicyAdjustmentType
+    , (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScalingPolicyAutoScalingGroupName
+    , fmap (("Cooldown",) . toJSON) _autoScalingScalingPolicyCooldown
+    , fmap (("EstimatedInstanceWarmup",) . toJSON . fmap Integer') _autoScalingScalingPolicyEstimatedInstanceWarmup
+    , fmap (("MetricAggregationType",) . toJSON) _autoScalingScalingPolicyMetricAggregationType
+    , fmap (("MinAdjustmentMagnitude",) . toJSON . fmap Integer') _autoScalingScalingPolicyMinAdjustmentMagnitude
+    , fmap (("PolicyType",) . toJSON) _autoScalingScalingPolicyPolicyType
+    , fmap (("ScalingAdjustment",) . toJSON . fmap Integer') _autoScalingScalingPolicyScalingAdjustment
+    , fmap (("StepAdjustments",) . toJSON) _autoScalingScalingPolicyStepAdjustments
     ]
 
 instance FromJSON AutoScalingScalingPolicy where
   parseJSON (Object obj) =
     AutoScalingScalingPolicy <$>
-      obj .: "AdjustmentType" <*>
-      obj .: "AutoScalingGroupName" <*>
-      obj .:? "Cooldown" <*>
-      obj .:? "EstimatedInstanceWarmup" <*>
-      obj .:? "MetricAggregationType" <*>
-      obj .:? "MinAdjustmentMagnitude" <*>
-      obj .:? "PolicyType" <*>
-      obj .:? "ScalingAdjustment" <*>
-      obj .:? "StepAdjustments"
+      (obj .: "AdjustmentType") <*>
+      (obj .: "AutoScalingGroupName") <*>
+      (obj .:? "Cooldown") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "EstimatedInstanceWarmup") <*>
+      (obj .:? "MetricAggregationType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinAdjustmentMagnitude") <*>
+      (obj .:? "PolicyType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ScalingAdjustment") <*>
+      (obj .:? "StepAdjustments")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingScalingPolicy' containing required fields as
@@ -90,7 +91,7 @@
 asspCooldown = lens _autoScalingScalingPolicyCooldown (\s a -> s { _autoScalingScalingPolicyCooldown = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-estimatedinstancewarmup
-asspEstimatedInstanceWarmup :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer'))
+asspEstimatedInstanceWarmup :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer))
 asspEstimatedInstanceWarmup = lens _autoScalingScalingPolicyEstimatedInstanceWarmup (\s a -> s { _autoScalingScalingPolicyEstimatedInstanceWarmup = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-metricaggregationtype
@@ -98,7 +99,7 @@
 asspMetricAggregationType = lens _autoScalingScalingPolicyMetricAggregationType (\s a -> s { _autoScalingScalingPolicyMetricAggregationType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-minadjustmentmagnitude
-asspMinAdjustmentMagnitude :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer'))
+asspMinAdjustmentMagnitude :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer))
 asspMinAdjustmentMagnitude = lens _autoScalingScalingPolicyMinAdjustmentMagnitude (\s a -> s { _autoScalingScalingPolicyMinAdjustmentMagnitude = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-policytype
@@ -106,7 +107,7 @@
 asspPolicyType = lens _autoScalingScalingPolicyPolicyType (\s a -> s { _autoScalingScalingPolicyPolicyType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-scalingadjustment
-asspScalingAdjustment :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer'))
+asspScalingAdjustment :: Lens' AutoScalingScalingPolicy (Maybe (Val Integer))
 asspScalingAdjustment = lens _autoScalingScalingPolicyScalingAdjustment (\s a -> s { _autoScalingScalingPolicyScalingAdjustment = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-stepadjustments
diff --git a/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs b/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingScheduledAction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html
 
@@ -19,10 +20,10 @@
 data AutoScalingScheduledAction =
   AutoScalingScheduledAction
   { _autoScalingScheduledActionAutoScalingGroupName :: Val Text
-  , _autoScalingScheduledActionDesiredCapacity :: Maybe (Val Integer')
+  , _autoScalingScheduledActionDesiredCapacity :: Maybe (Val Integer)
   , _autoScalingScheduledActionEndTime :: Maybe (Val Text)
-  , _autoScalingScheduledActionMaxSize :: Maybe (Val Integer')
-  , _autoScalingScheduledActionMinSize :: Maybe (Val Integer')
+  , _autoScalingScheduledActionMaxSize :: Maybe (Val Integer)
+  , _autoScalingScheduledActionMinSize :: Maybe (Val Integer)
   , _autoScalingScheduledActionRecurrence :: Maybe (Val Text)
   , _autoScalingScheduledActionStartTime :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -31,25 +32,25 @@
   toJSON AutoScalingScheduledAction{..} =
     object $
     catMaybes
-    [ Just ("AutoScalingGroupName" .= _autoScalingScheduledActionAutoScalingGroupName)
-    , ("DesiredCapacity" .=) <$> _autoScalingScheduledActionDesiredCapacity
-    , ("EndTime" .=) <$> _autoScalingScheduledActionEndTime
-    , ("MaxSize" .=) <$> _autoScalingScheduledActionMaxSize
-    , ("MinSize" .=) <$> _autoScalingScheduledActionMinSize
-    , ("Recurrence" .=) <$> _autoScalingScheduledActionRecurrence
-    , ("StartTime" .=) <$> _autoScalingScheduledActionStartTime
+    [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingScheduledActionAutoScalingGroupName
+    , fmap (("DesiredCapacity",) . toJSON . fmap Integer') _autoScalingScheduledActionDesiredCapacity
+    , fmap (("EndTime",) . toJSON) _autoScalingScheduledActionEndTime
+    , fmap (("MaxSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMaxSize
+    , fmap (("MinSize",) . toJSON . fmap Integer') _autoScalingScheduledActionMinSize
+    , fmap (("Recurrence",) . toJSON) _autoScalingScheduledActionRecurrence
+    , fmap (("StartTime",) . toJSON) _autoScalingScheduledActionStartTime
     ]
 
 instance FromJSON AutoScalingScheduledAction where
   parseJSON (Object obj) =
     AutoScalingScheduledAction <$>
-      obj .: "AutoScalingGroupName" <*>
-      obj .:? "DesiredCapacity" <*>
-      obj .:? "EndTime" <*>
-      obj .:? "MaxSize" <*>
-      obj .:? "MinSize" <*>
-      obj .:? "Recurrence" <*>
-      obj .:? "StartTime"
+      (obj .: "AutoScalingGroupName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DesiredCapacity") <*>
+      (obj .:? "EndTime") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxSize") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinSize") <*>
+      (obj .:? "Recurrence") <*>
+      (obj .:? "StartTime")
   parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingScheduledAction' containing required fields
@@ -73,7 +74,7 @@
 assaAutoScalingGroupName = lens _autoScalingScheduledActionAutoScalingGroupName (\s a -> s { _autoScalingScheduledActionAutoScalingGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-desiredcapacity
-assaDesiredCapacity :: Lens' AutoScalingScheduledAction (Maybe (Val Integer'))
+assaDesiredCapacity :: Lens' AutoScalingScheduledAction (Maybe (Val Integer))
 assaDesiredCapacity = lens _autoScalingScheduledActionDesiredCapacity (\s a -> s { _autoScalingScheduledActionDesiredCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-endtime
@@ -81,11 +82,11 @@
 assaEndTime = lens _autoScalingScheduledActionEndTime (\s a -> s { _autoScalingScheduledActionEndTime = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-maxsize
-assaMaxSize :: Lens' AutoScalingScheduledAction (Maybe (Val Integer'))
+assaMaxSize :: Lens' AutoScalingScheduledAction (Maybe (Val Integer))
 assaMaxSize = lens _autoScalingScheduledActionMaxSize (\s a -> s { _autoScalingScheduledActionMaxSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-minsize
-assaMinSize :: Lens' AutoScalingScheduledAction (Maybe (Val Integer'))
+assaMinSize :: Lens' AutoScalingScheduledAction (Maybe (Val Integer))
 assaMinSize = lens _autoScalingScheduledActionMinSize (\s a -> s { _autoScalingScheduledActionMinSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-recurrence
diff --git a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
--- a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
+++ b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html
 
@@ -21,7 +22,7 @@
   CertificateManagerCertificate
   { _certificateManagerCertificateDomainName :: Val Text
   , _certificateManagerCertificateDomainValidationOptions :: Maybe [CertificateManagerCertificateDomainValidationOption]
-  , _certificateManagerCertificateSubjectAlternativeNames :: Maybe [Val Text]
+  , _certificateManagerCertificateSubjectAlternativeNames :: Maybe (ValList Text)
   , _certificateManagerCertificateTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -29,19 +30,19 @@
   toJSON CertificateManagerCertificate{..} =
     object $
     catMaybes
-    [ Just ("DomainName" .= _certificateManagerCertificateDomainName)
-    , ("DomainValidationOptions" .=) <$> _certificateManagerCertificateDomainValidationOptions
-    , ("SubjectAlternativeNames" .=) <$> _certificateManagerCertificateSubjectAlternativeNames
-    , ("Tags" .=) <$> _certificateManagerCertificateTags
+    [ (Just . ("DomainName",) . toJSON) _certificateManagerCertificateDomainName
+    , fmap (("DomainValidationOptions",) . toJSON) _certificateManagerCertificateDomainValidationOptions
+    , fmap (("SubjectAlternativeNames",) . toJSON) _certificateManagerCertificateSubjectAlternativeNames
+    , fmap (("Tags",) . toJSON) _certificateManagerCertificateTags
     ]
 
 instance FromJSON CertificateManagerCertificate where
   parseJSON (Object obj) =
     CertificateManagerCertificate <$>
-      obj .: "DomainName" <*>
-      obj .:? "DomainValidationOptions" <*>
-      obj .:? "SubjectAlternativeNames" <*>
-      obj .:? "Tags"
+      (obj .: "DomainName") <*>
+      (obj .:? "DomainValidationOptions") <*>
+      (obj .:? "SubjectAlternativeNames") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'CertificateManagerCertificate' containing required
@@ -66,7 +67,7 @@
 cmcDomainValidationOptions = lens _certificateManagerCertificateDomainValidationOptions (\s a -> s { _certificateManagerCertificateDomainValidationOptions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-subjectalternativenames
-cmcSubjectAlternativeNames :: Lens' CertificateManagerCertificate (Maybe [Val Text])
+cmcSubjectAlternativeNames :: Lens' CertificateManagerCertificate (Maybe (ValList Text))
 cmcSubjectAlternativeNames = lens _certificateManagerCertificateSubjectAlternativeNames (\s a -> s { _certificateManagerCertificateSubjectAlternativeNames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-tags
diff --git a/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs b/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationCustomResource.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html
 
@@ -25,13 +26,13 @@
   toJSON CloudFormationCustomResource{..} =
     object $
     catMaybes
-    [ Just ("ServiceToken" .= _cloudFormationCustomResourceServiceToken)
+    [ (Just . ("ServiceToken",) . toJSON) _cloudFormationCustomResourceServiceToken
     ]
 
 instance FromJSON CloudFormationCustomResource where
   parseJSON (Object obj) =
     CloudFormationCustomResource <$>
-      obj .: "ServiceToken"
+      (obj .: "ServiceToken")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFormationCustomResource' containing required fields
diff --git a/library-gen/Stratosphere/Resources/CloudFormationStack.hs b/library-gen/Stratosphere/Resources/CloudFormationStack.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationStack.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationStack.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html
 
@@ -18,32 +19,32 @@
 -- 'cloudFormationStack' for a more convenient constructor.
 data CloudFormationStack =
   CloudFormationStack
-  { _cloudFormationStackNotificationARNs :: Maybe [Val Text]
+  { _cloudFormationStackNotificationARNs :: Maybe (ValList Text)
   , _cloudFormationStackParameters :: Maybe Object
   , _cloudFormationStackTags :: Maybe [Tag]
   , _cloudFormationStackTemplateURL :: Val Text
-  , _cloudFormationStackTimeoutInMinutes :: Maybe (Val Integer')
+  , _cloudFormationStackTimeoutInMinutes :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON CloudFormationStack where
   toJSON CloudFormationStack{..} =
     object $
     catMaybes
-    [ ("NotificationARNs" .=) <$> _cloudFormationStackNotificationARNs
-    , ("Parameters" .=) <$> _cloudFormationStackParameters
-    , ("Tags" .=) <$> _cloudFormationStackTags
-    , Just ("TemplateURL" .= _cloudFormationStackTemplateURL)
-    , ("TimeoutInMinutes" .=) <$> _cloudFormationStackTimeoutInMinutes
+    [ fmap (("NotificationARNs",) . toJSON) _cloudFormationStackNotificationARNs
+    , fmap (("Parameters",) . toJSON) _cloudFormationStackParameters
+    , fmap (("Tags",) . toJSON) _cloudFormationStackTags
+    , (Just . ("TemplateURL",) . toJSON) _cloudFormationStackTemplateURL
+    , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _cloudFormationStackTimeoutInMinutes
     ]
 
 instance FromJSON CloudFormationStack where
   parseJSON (Object obj) =
     CloudFormationStack <$>
-      obj .:? "NotificationARNs" <*>
-      obj .:? "Parameters" <*>
-      obj .:? "Tags" <*>
-      obj .: "TemplateURL" <*>
-      obj .:? "TimeoutInMinutes"
+      (obj .:? "NotificationARNs") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "TemplateURL") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TimeoutInMinutes")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFormationStack' containing required fields as
@@ -61,7 +62,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-notificationarns
-cfsNotificationARNs :: Lens' CloudFormationStack (Maybe [Val Text])
+cfsNotificationARNs :: Lens' CloudFormationStack (Maybe (ValList Text))
 cfsNotificationARNs = lens _cloudFormationStackNotificationARNs (\s a -> s { _cloudFormationStackNotificationARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-parameters
@@ -77,5 +78,5 @@
 cfsTemplateURL = lens _cloudFormationStackTemplateURL (\s a -> s { _cloudFormationStackTemplateURL = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-timeoutinminutes
-cfsTimeoutInMinutes :: Lens' CloudFormationStack (Maybe (Val Integer'))
+cfsTimeoutInMinutes :: Lens' CloudFormationStack (Maybe (Val Integer))
 cfsTimeoutInMinutes = lens _cloudFormationStackTimeoutInMinutes (\s a -> s { _cloudFormationStackTimeoutInMinutes = a })
diff --git a/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs b/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationWaitCondition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html
 
@@ -18,7 +19,7 @@
 -- 'cloudFormationWaitCondition' for a more convenient constructor.
 data CloudFormationWaitCondition =
   CloudFormationWaitCondition
-  { _cloudFormationWaitConditionCount :: Maybe (Val Integer')
+  { _cloudFormationWaitConditionCount :: Maybe (Val Integer)
   , _cloudFormationWaitConditionHandle :: Val Text
   , _cloudFormationWaitConditionTimeout :: Val Text
   } deriving (Show, Eq)
@@ -27,17 +28,17 @@
   toJSON CloudFormationWaitCondition{..} =
     object $
     catMaybes
-    [ ("Count" .=) <$> _cloudFormationWaitConditionCount
-    , Just ("Handle" .= _cloudFormationWaitConditionHandle)
-    , Just ("Timeout" .= _cloudFormationWaitConditionTimeout)
+    [ fmap (("Count",) . toJSON . fmap Integer') _cloudFormationWaitConditionCount
+    , (Just . ("Handle",) . toJSON) _cloudFormationWaitConditionHandle
+    , (Just . ("Timeout",) . toJSON) _cloudFormationWaitConditionTimeout
     ]
 
 instance FromJSON CloudFormationWaitCondition where
   parseJSON (Object obj) =
     CloudFormationWaitCondition <$>
-      obj .:? "Count" <*>
-      obj .: "Handle" <*>
-      obj .: "Timeout"
+      fmap (fmap (fmap unInteger')) (obj .:? "Count") <*>
+      (obj .: "Handle") <*>
+      (obj .: "Timeout")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFormationWaitCondition' containing required fields
@@ -54,7 +55,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html#cfn-waitcondition-count
-cfwcCount :: Lens' CloudFormationWaitCondition (Maybe (Val Integer'))
+cfwcCount :: Lens' CloudFormationWaitCondition (Maybe (Val Integer))
 cfwcCount = lens _cloudFormationWaitConditionCount (\s a -> s { _cloudFormationWaitConditionCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html#cfn-waitcondition-handle
diff --git a/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs b/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
--- a/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
+++ b/library-gen/Stratosphere/Resources/CloudFormationWaitConditionHandle.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitconditionhandle.html
 
diff --git a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
--- a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
+++ b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html
 
@@ -25,13 +26,13 @@
   toJSON CloudFrontDistribution{..} =
     object $
     catMaybes
-    [ Just ("DistributionConfig" .= _cloudFrontDistributionDistributionConfig)
+    [ (Just . ("DistributionConfig",) . toJSON) _cloudFrontDistributionDistributionConfig
     ]
 
 instance FromJSON CloudFrontDistribution where
   parseJSON (Object obj) =
     CloudFrontDistribution <$>
-      obj .: "DistributionConfig"
+      (obj .: "DistributionConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistribution' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/CloudTrailTrail.hs b/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
--- a/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
+++ b/library-gen/Stratosphere/Resources/CloudTrailTrail.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html
 
@@ -20,10 +21,10 @@
   CloudTrailTrail
   { _cloudTrailTrailCloudWatchLogsLogGroupArn :: Maybe (Val Text)
   , _cloudTrailTrailCloudWatchLogsRoleArn :: Maybe (Val Text)
-  , _cloudTrailTrailEnableLogFileValidation :: Maybe (Val Bool')
-  , _cloudTrailTrailIncludeGlobalServiceEvents :: Maybe (Val Bool')
-  , _cloudTrailTrailIsLogging :: Val Bool'
-  , _cloudTrailTrailIsMultiRegionTrail :: Maybe (Val Bool')
+  , _cloudTrailTrailEnableLogFileValidation :: Maybe (Val Bool)
+  , _cloudTrailTrailIncludeGlobalServiceEvents :: Maybe (Val Bool)
+  , _cloudTrailTrailIsLogging :: Val Bool
+  , _cloudTrailTrailIsMultiRegionTrail :: Maybe (Val Bool)
   , _cloudTrailTrailKMSKeyId :: Maybe (Val Text)
   , _cloudTrailTrailS3BucketName :: Val Text
   , _cloudTrailTrailS3KeyPrefix :: Maybe (Val Text)
@@ -36,41 +37,41 @@
   toJSON CloudTrailTrail{..} =
     object $
     catMaybes
-    [ ("CloudWatchLogsLogGroupArn" .=) <$> _cloudTrailTrailCloudWatchLogsLogGroupArn
-    , ("CloudWatchLogsRoleArn" .=) <$> _cloudTrailTrailCloudWatchLogsRoleArn
-    , ("EnableLogFileValidation" .=) <$> _cloudTrailTrailEnableLogFileValidation
-    , ("IncludeGlobalServiceEvents" .=) <$> _cloudTrailTrailIncludeGlobalServiceEvents
-    , Just ("IsLogging" .= _cloudTrailTrailIsLogging)
-    , ("IsMultiRegionTrail" .=) <$> _cloudTrailTrailIsMultiRegionTrail
-    , ("KMSKeyId" .=) <$> _cloudTrailTrailKMSKeyId
-    , Just ("S3BucketName" .= _cloudTrailTrailS3BucketName)
-    , ("S3KeyPrefix" .=) <$> _cloudTrailTrailS3KeyPrefix
-    , ("SnsTopicName" .=) <$> _cloudTrailTrailSnsTopicName
-    , ("Tags" .=) <$> _cloudTrailTrailTags
-    , ("TrailName" .=) <$> _cloudTrailTrailTrailName
+    [ fmap (("CloudWatchLogsLogGroupArn",) . toJSON) _cloudTrailTrailCloudWatchLogsLogGroupArn
+    , fmap (("CloudWatchLogsRoleArn",) . toJSON) _cloudTrailTrailCloudWatchLogsRoleArn
+    , fmap (("EnableLogFileValidation",) . toJSON . fmap Bool') _cloudTrailTrailEnableLogFileValidation
+    , fmap (("IncludeGlobalServiceEvents",) . toJSON . fmap Bool') _cloudTrailTrailIncludeGlobalServiceEvents
+    , (Just . ("IsLogging",) . toJSON . fmap Bool') _cloudTrailTrailIsLogging
+    , fmap (("IsMultiRegionTrail",) . toJSON . fmap Bool') _cloudTrailTrailIsMultiRegionTrail
+    , fmap (("KMSKeyId",) . toJSON) _cloudTrailTrailKMSKeyId
+    , (Just . ("S3BucketName",) . toJSON) _cloudTrailTrailS3BucketName
+    , fmap (("S3KeyPrefix",) . toJSON) _cloudTrailTrailS3KeyPrefix
+    , fmap (("SnsTopicName",) . toJSON) _cloudTrailTrailSnsTopicName
+    , fmap (("Tags",) . toJSON) _cloudTrailTrailTags
+    , fmap (("TrailName",) . toJSON) _cloudTrailTrailTrailName
     ]
 
 instance FromJSON CloudTrailTrail where
   parseJSON (Object obj) =
     CloudTrailTrail <$>
-      obj .:? "CloudWatchLogsLogGroupArn" <*>
-      obj .:? "CloudWatchLogsRoleArn" <*>
-      obj .:? "EnableLogFileValidation" <*>
-      obj .:? "IncludeGlobalServiceEvents" <*>
-      obj .: "IsLogging" <*>
-      obj .:? "IsMultiRegionTrail" <*>
-      obj .:? "KMSKeyId" <*>
-      obj .: "S3BucketName" <*>
-      obj .:? "S3KeyPrefix" <*>
-      obj .:? "SnsTopicName" <*>
-      obj .:? "Tags" <*>
-      obj .:? "TrailName"
+      (obj .:? "CloudWatchLogsLogGroupArn") <*>
+      (obj .:? "CloudWatchLogsRoleArn") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableLogFileValidation") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeGlobalServiceEvents") <*>
+      fmap (fmap unBool') (obj .: "IsLogging") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IsMultiRegionTrail") <*>
+      (obj .:? "KMSKeyId") <*>
+      (obj .: "S3BucketName") <*>
+      (obj .:? "S3KeyPrefix") <*>
+      (obj .:? "SnsTopicName") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "TrailName")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudTrailTrail' containing required fields as
 -- arguments.
 cloudTrailTrail
-  :: Val Bool' -- ^ 'cttIsLogging'
+  :: Val Bool -- ^ 'cttIsLogging'
   -> Val Text -- ^ 'cttS3BucketName'
   -> CloudTrailTrail
 cloudTrailTrail isLoggingarg s3BucketNamearg =
@@ -98,19 +99,19 @@
 cttCloudWatchLogsRoleArn = lens _cloudTrailTrailCloudWatchLogsRoleArn (\s a -> s { _cloudTrailTrailCloudWatchLogsRoleArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-enablelogfilevalidation
-cttEnableLogFileValidation :: Lens' CloudTrailTrail (Maybe (Val Bool'))
+cttEnableLogFileValidation :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttEnableLogFileValidation = lens _cloudTrailTrailEnableLogFileValidation (\s a -> s { _cloudTrailTrailEnableLogFileValidation = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-includeglobalserviceevents
-cttIncludeGlobalServiceEvents :: Lens' CloudTrailTrail (Maybe (Val Bool'))
+cttIncludeGlobalServiceEvents :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttIncludeGlobalServiceEvents = lens _cloudTrailTrailIncludeGlobalServiceEvents (\s a -> s { _cloudTrailTrailIncludeGlobalServiceEvents = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-islogging
-cttIsLogging :: Lens' CloudTrailTrail (Val Bool')
+cttIsLogging :: Lens' CloudTrailTrail (Val Bool)
 cttIsLogging = lens _cloudTrailTrailIsLogging (\s a -> s { _cloudTrailTrailIsLogging = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-ismultiregiontrail
-cttIsMultiRegionTrail :: Lens' CloudTrailTrail (Maybe (Val Bool'))
+cttIsMultiRegionTrail :: Lens' CloudTrailTrail (Maybe (Val Bool))
 cttIsMultiRegionTrail = lens _cloudTrailTrailIsMultiRegionTrail (\s a -> s { _cloudTrailTrailIsMultiRegionTrail = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail.html#aws-cloudtrail-trail-kmskeyid
diff --git a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
--- a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
+++ b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html
 
@@ -18,22 +19,22 @@
 -- a more convenient constructor.
 data CloudWatchAlarm =
   CloudWatchAlarm
-  { _cloudWatchAlarmActionsEnabled :: Maybe (Val Bool')
-  , _cloudWatchAlarmAlarmActions :: Maybe [Val Text]
+  { _cloudWatchAlarmActionsEnabled :: Maybe (Val Bool)
+  , _cloudWatchAlarmAlarmActions :: Maybe (ValList Text)
   , _cloudWatchAlarmAlarmDescription :: Maybe (Val Text)
   , _cloudWatchAlarmAlarmName :: Maybe (Val Text)
   , _cloudWatchAlarmComparisonOperator :: Val Text
   , _cloudWatchAlarmDimensions :: Maybe [CloudWatchAlarmDimension]
   , _cloudWatchAlarmEvaluateLowSampleCountPercentile :: Maybe (Val Text)
-  , _cloudWatchAlarmEvaluationPeriods :: Val Integer'
+  , _cloudWatchAlarmEvaluationPeriods :: Val Integer
   , _cloudWatchAlarmExtendedStatistic :: Maybe (Val Text)
-  , _cloudWatchAlarmInsufficientDataActions :: Maybe [Val Text]
+  , _cloudWatchAlarmInsufficientDataActions :: Maybe (ValList Text)
   , _cloudWatchAlarmMetricName :: Val Text
   , _cloudWatchAlarmNamespace :: Val Text
-  , _cloudWatchAlarmOKActions :: Maybe [Val Text]
-  , _cloudWatchAlarmPeriod :: Val Integer'
+  , _cloudWatchAlarmOKActions :: Maybe (ValList Text)
+  , _cloudWatchAlarmPeriod :: Val Integer
   , _cloudWatchAlarmStatistic :: Maybe (Val Text)
-  , _cloudWatchAlarmThreshold :: Val Double'
+  , _cloudWatchAlarmThreshold :: Val Double
   , _cloudWatchAlarmTreatMissingData :: Maybe (Val Text)
   , _cloudWatchAlarmUnit :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -42,58 +43,58 @@
   toJSON CloudWatchAlarm{..} =
     object $
     catMaybes
-    [ ("ActionsEnabled" .=) <$> _cloudWatchAlarmActionsEnabled
-    , ("AlarmActions" .=) <$> _cloudWatchAlarmAlarmActions
-    , ("AlarmDescription" .=) <$> _cloudWatchAlarmAlarmDescription
-    , ("AlarmName" .=) <$> _cloudWatchAlarmAlarmName
-    , Just ("ComparisonOperator" .= _cloudWatchAlarmComparisonOperator)
-    , ("Dimensions" .=) <$> _cloudWatchAlarmDimensions
-    , ("EvaluateLowSampleCountPercentile" .=) <$> _cloudWatchAlarmEvaluateLowSampleCountPercentile
-    , Just ("EvaluationPeriods" .= _cloudWatchAlarmEvaluationPeriods)
-    , ("ExtendedStatistic" .=) <$> _cloudWatchAlarmExtendedStatistic
-    , ("InsufficientDataActions" .=) <$> _cloudWatchAlarmInsufficientDataActions
-    , Just ("MetricName" .= _cloudWatchAlarmMetricName)
-    , Just ("Namespace" .= _cloudWatchAlarmNamespace)
-    , ("OKActions" .=) <$> _cloudWatchAlarmOKActions
-    , Just ("Period" .= _cloudWatchAlarmPeriod)
-    , ("Statistic" .=) <$> _cloudWatchAlarmStatistic
-    , Just ("Threshold" .= _cloudWatchAlarmThreshold)
-    , ("TreatMissingData" .=) <$> _cloudWatchAlarmTreatMissingData
-    , ("Unit" .=) <$> _cloudWatchAlarmUnit
+    [ fmap (("ActionsEnabled",) . toJSON . fmap Bool') _cloudWatchAlarmActionsEnabled
+    , fmap (("AlarmActions",) . toJSON) _cloudWatchAlarmAlarmActions
+    , fmap (("AlarmDescription",) . toJSON) _cloudWatchAlarmAlarmDescription
+    , fmap (("AlarmName",) . toJSON) _cloudWatchAlarmAlarmName
+    , (Just . ("ComparisonOperator",) . toJSON) _cloudWatchAlarmComparisonOperator
+    , fmap (("Dimensions",) . toJSON) _cloudWatchAlarmDimensions
+    , fmap (("EvaluateLowSampleCountPercentile",) . toJSON) _cloudWatchAlarmEvaluateLowSampleCountPercentile
+    , (Just . ("EvaluationPeriods",) . toJSON . fmap Integer') _cloudWatchAlarmEvaluationPeriods
+    , fmap (("ExtendedStatistic",) . toJSON) _cloudWatchAlarmExtendedStatistic
+    , fmap (("InsufficientDataActions",) . toJSON) _cloudWatchAlarmInsufficientDataActions
+    , (Just . ("MetricName",) . toJSON) _cloudWatchAlarmMetricName
+    , (Just . ("Namespace",) . toJSON) _cloudWatchAlarmNamespace
+    , fmap (("OKActions",) . toJSON) _cloudWatchAlarmOKActions
+    , (Just . ("Period",) . toJSON . fmap Integer') _cloudWatchAlarmPeriod
+    , fmap (("Statistic",) . toJSON) _cloudWatchAlarmStatistic
+    , (Just . ("Threshold",) . toJSON . fmap Double') _cloudWatchAlarmThreshold
+    , fmap (("TreatMissingData",) . toJSON) _cloudWatchAlarmTreatMissingData
+    , fmap (("Unit",) . toJSON) _cloudWatchAlarmUnit
     ]
 
 instance FromJSON CloudWatchAlarm where
   parseJSON (Object obj) =
     CloudWatchAlarm <$>
-      obj .:? "ActionsEnabled" <*>
-      obj .:? "AlarmActions" <*>
-      obj .:? "AlarmDescription" <*>
-      obj .:? "AlarmName" <*>
-      obj .: "ComparisonOperator" <*>
-      obj .:? "Dimensions" <*>
-      obj .:? "EvaluateLowSampleCountPercentile" <*>
-      obj .: "EvaluationPeriods" <*>
-      obj .:? "ExtendedStatistic" <*>
-      obj .:? "InsufficientDataActions" <*>
-      obj .: "MetricName" <*>
-      obj .: "Namespace" <*>
-      obj .:? "OKActions" <*>
-      obj .: "Period" <*>
-      obj .:? "Statistic" <*>
-      obj .: "Threshold" <*>
-      obj .:? "TreatMissingData" <*>
-      obj .:? "Unit"
+      fmap (fmap (fmap unBool')) (obj .:? "ActionsEnabled") <*>
+      (obj .:? "AlarmActions") <*>
+      (obj .:? "AlarmDescription") <*>
+      (obj .:? "AlarmName") <*>
+      (obj .: "ComparisonOperator") <*>
+      (obj .:? "Dimensions") <*>
+      (obj .:? "EvaluateLowSampleCountPercentile") <*>
+      fmap (fmap unInteger') (obj .: "EvaluationPeriods") <*>
+      (obj .:? "ExtendedStatistic") <*>
+      (obj .:? "InsufficientDataActions") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Namespace") <*>
+      (obj .:? "OKActions") <*>
+      fmap (fmap unInteger') (obj .: "Period") <*>
+      (obj .:? "Statistic") <*>
+      fmap (fmap unDouble') (obj .: "Threshold") <*>
+      (obj .:? "TreatMissingData") <*>
+      (obj .:? "Unit")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudWatchAlarm' containing required fields as
 -- arguments.
 cloudWatchAlarm
   :: Val Text -- ^ 'cwaComparisonOperator'
-  -> Val Integer' -- ^ 'cwaEvaluationPeriods'
+  -> Val Integer -- ^ 'cwaEvaluationPeriods'
   -> Val Text -- ^ 'cwaMetricName'
   -> Val Text -- ^ 'cwaNamespace'
-  -> Val Integer' -- ^ 'cwaPeriod'
-  -> Val Double' -- ^ 'cwaThreshold'
+  -> Val Integer -- ^ 'cwaPeriod'
+  -> Val Double -- ^ 'cwaThreshold'
   -> CloudWatchAlarm
 cloudWatchAlarm comparisonOperatorarg evaluationPeriodsarg metricNamearg namespacearg periodarg thresholdarg =
   CloudWatchAlarm
@@ -118,11 +119,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-actionsenabled
-cwaActionsEnabled :: Lens' CloudWatchAlarm (Maybe (Val Bool'))
+cwaActionsEnabled :: Lens' CloudWatchAlarm (Maybe (Val Bool))
 cwaActionsEnabled = lens _cloudWatchAlarmActionsEnabled (\s a -> s { _cloudWatchAlarmActionsEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-alarmactions
-cwaAlarmActions :: Lens' CloudWatchAlarm (Maybe [Val Text])
+cwaAlarmActions :: Lens' CloudWatchAlarm (Maybe (ValList Text))
 cwaAlarmActions = lens _cloudWatchAlarmAlarmActions (\s a -> s { _cloudWatchAlarmAlarmActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-alarmdescription
@@ -146,7 +147,7 @@
 cwaEvaluateLowSampleCountPercentile = lens _cloudWatchAlarmEvaluateLowSampleCountPercentile (\s a -> s { _cloudWatchAlarmEvaluateLowSampleCountPercentile = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-evaluationperiods
-cwaEvaluationPeriods :: Lens' CloudWatchAlarm (Val Integer')
+cwaEvaluationPeriods :: Lens' CloudWatchAlarm (Val Integer)
 cwaEvaluationPeriods = lens _cloudWatchAlarmEvaluationPeriods (\s a -> s { _cloudWatchAlarmEvaluationPeriods = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-extendedstatistic
@@ -154,7 +155,7 @@
 cwaExtendedStatistic = lens _cloudWatchAlarmExtendedStatistic (\s a -> s { _cloudWatchAlarmExtendedStatistic = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-insufficientdataactions
-cwaInsufficientDataActions :: Lens' CloudWatchAlarm (Maybe [Val Text])
+cwaInsufficientDataActions :: Lens' CloudWatchAlarm (Maybe (ValList Text))
 cwaInsufficientDataActions = lens _cloudWatchAlarmInsufficientDataActions (\s a -> s { _cloudWatchAlarmInsufficientDataActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-metricname
@@ -166,11 +167,11 @@
 cwaNamespace = lens _cloudWatchAlarmNamespace (\s a -> s { _cloudWatchAlarmNamespace = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-okactions
-cwaOKActions :: Lens' CloudWatchAlarm (Maybe [Val Text])
+cwaOKActions :: Lens' CloudWatchAlarm (Maybe (ValList Text))
 cwaOKActions = lens _cloudWatchAlarmOKActions (\s a -> s { _cloudWatchAlarmOKActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-period
-cwaPeriod :: Lens' CloudWatchAlarm (Val Integer')
+cwaPeriod :: Lens' CloudWatchAlarm (Val Integer)
 cwaPeriod = lens _cloudWatchAlarmPeriod (\s a -> s { _cloudWatchAlarmPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-statistic
@@ -178,7 +179,7 @@
 cwaStatistic = lens _cloudWatchAlarmStatistic (\s a -> s { _cloudWatchAlarmStatistic = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-threshold
-cwaThreshold :: Lens' CloudWatchAlarm (Val Double')
+cwaThreshold :: Lens' CloudWatchAlarm (Val Double)
 cwaThreshold = lens _cloudWatchAlarmThreshold (\s a -> s { _cloudWatchAlarmThreshold = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-treatmissingdata
diff --git a/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs b/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
--- a/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
+++ b/library-gen/Stratosphere/Resources/CloudWatchDashboard.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html
 
@@ -26,15 +27,15 @@
   toJSON CloudWatchDashboard{..} =
     object $
     catMaybes
-    [ Just ("DashboardBody" .= _cloudWatchDashboardDashboardBody)
-    , ("DashboardName" .=) <$> _cloudWatchDashboardDashboardName
+    [ (Just . ("DashboardBody",) . toJSON) _cloudWatchDashboardDashboardBody
+    , fmap (("DashboardName",) . toJSON) _cloudWatchDashboardDashboardName
     ]
 
 instance FromJSON CloudWatchDashboard where
   parseJSON (Object obj) =
     CloudWatchDashboard <$>
-      obj .: "DashboardBody" <*>
-      obj .:? "DashboardName"
+      (obj .: "DashboardBody") <*>
+      (obj .:? "DashboardName")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudWatchDashboard' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/CodeBuildProject.hs b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
--- a/library-gen/Stratosphere/Resources/CodeBuildProject.hs
+++ b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html
 
@@ -29,36 +30,36 @@
   , _codeBuildProjectServiceRole :: Val Text
   , _codeBuildProjectSource :: CodeBuildProjectSource
   , _codeBuildProjectTags :: Maybe [Tag]
-  , _codeBuildProjectTimeoutInMinutes :: Maybe (Val Integer')
+  , _codeBuildProjectTimeoutInMinutes :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON CodeBuildProject where
   toJSON CodeBuildProject{..} =
     object $
     catMaybes
-    [ Just ("Artifacts" .= _codeBuildProjectArtifacts)
-    , ("Description" .=) <$> _codeBuildProjectDescription
-    , ("EncryptionKey" .=) <$> _codeBuildProjectEncryptionKey
-    , Just ("Environment" .= _codeBuildProjectEnvironment)
-    , ("Name" .=) <$> _codeBuildProjectName
-    , Just ("ServiceRole" .= _codeBuildProjectServiceRole)
-    , Just ("Source" .= _codeBuildProjectSource)
-    , ("Tags" .=) <$> _codeBuildProjectTags
-    , ("TimeoutInMinutes" .=) <$> _codeBuildProjectTimeoutInMinutes
+    [ (Just . ("Artifacts",) . toJSON) _codeBuildProjectArtifacts
+    , fmap (("Description",) . toJSON) _codeBuildProjectDescription
+    , fmap (("EncryptionKey",) . toJSON) _codeBuildProjectEncryptionKey
+    , (Just . ("Environment",) . toJSON) _codeBuildProjectEnvironment
+    , fmap (("Name",) . toJSON) _codeBuildProjectName
+    , (Just . ("ServiceRole",) . toJSON) _codeBuildProjectServiceRole
+    , (Just . ("Source",) . toJSON) _codeBuildProjectSource
+    , fmap (("Tags",) . toJSON) _codeBuildProjectTags
+    , fmap (("TimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectTimeoutInMinutes
     ]
 
 instance FromJSON CodeBuildProject where
   parseJSON (Object obj) =
     CodeBuildProject <$>
-      obj .: "Artifacts" <*>
-      obj .:? "Description" <*>
-      obj .:? "EncryptionKey" <*>
-      obj .: "Environment" <*>
-      obj .:? "Name" <*>
-      obj .: "ServiceRole" <*>
-      obj .: "Source" <*>
-      obj .:? "Tags" <*>
-      obj .:? "TimeoutInMinutes"
+      (obj .: "Artifacts") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "EncryptionKey") <*>
+      (obj .: "Environment") <*>
+      (obj .:? "Name") <*>
+      (obj .: "ServiceRole") <*>
+      (obj .: "Source") <*>
+      (obj .:? "Tags") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TimeoutInMinutes")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeBuildProject' containing required fields as
@@ -115,5 +116,5 @@
 cbpTags = lens _codeBuildProjectTags (\s a -> s { _codeBuildProjectTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-timeoutinminutes
-cbpTimeoutInMinutes :: Lens' CodeBuildProject (Maybe (Val Integer'))
+cbpTimeoutInMinutes :: Lens' CodeBuildProject (Maybe (Val Integer))
 cbpTimeoutInMinutes = lens _codeBuildProjectTimeoutInMinutes (\s a -> s { _codeBuildProjectTimeoutInMinutes = a })
diff --git a/library-gen/Stratosphere/Resources/CodeCommitRepository.hs b/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
--- a/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
+++ b/library-gen/Stratosphere/Resources/CodeCommitRepository.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html
 
@@ -27,17 +28,17 @@
   toJSON CodeCommitRepository{..} =
     object $
     catMaybes
-    [ ("RepositoryDescription" .=) <$> _codeCommitRepositoryRepositoryDescription
-    , Just ("RepositoryName" .= _codeCommitRepositoryRepositoryName)
-    , ("Triggers" .=) <$> _codeCommitRepositoryTriggers
+    [ fmap (("RepositoryDescription",) . toJSON) _codeCommitRepositoryRepositoryDescription
+    , (Just . ("RepositoryName",) . toJSON) _codeCommitRepositoryRepositoryName
+    , fmap (("Triggers",) . toJSON) _codeCommitRepositoryTriggers
     ]
 
 instance FromJSON CodeCommitRepository where
   parseJSON (Object obj) =
     CodeCommitRepository <$>
-      obj .:? "RepositoryDescription" <*>
-      obj .: "RepositoryName" <*>
-      obj .:? "Triggers"
+      (obj .:? "RepositoryDescription") <*>
+      (obj .: "RepositoryName") <*>
+      (obj .:? "Triggers")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeCommitRepository' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/CodeDeployApplication.hs b/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html
 
@@ -25,13 +26,13 @@
   toJSON CodeDeployApplication{..} =
     object $
     catMaybes
-    [ ("ApplicationName" .=) <$> _codeDeployApplicationApplicationName
+    [ fmap (("ApplicationName",) . toJSON) _codeDeployApplicationApplicationName
     ]
 
 instance FromJSON CodeDeployApplication where
   parseJSON (Object obj) =
     CodeDeployApplication <$>
-      obj .:? "ApplicationName"
+      (obj .:? "ApplicationName")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployApplication' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs b/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployDeploymentConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html
 
@@ -26,15 +27,15 @@
   toJSON CodeDeployDeploymentConfig{..} =
     object $
     catMaybes
-    [ ("DeploymentConfigName" .=) <$> _codeDeployDeploymentConfigDeploymentConfigName
-    , ("MinimumHealthyHosts" .=) <$> _codeDeployDeploymentConfigMinimumHealthyHosts
+    [ fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentConfigDeploymentConfigName
+    , fmap (("MinimumHealthyHosts",) . toJSON) _codeDeployDeploymentConfigMinimumHealthyHosts
     ]
 
 instance FromJSON CodeDeployDeploymentConfig where
   parseJSON (Object obj) =
     CodeDeployDeploymentConfig <$>
-      obj .:? "DeploymentConfigName" <*>
-      obj .:? "MinimumHealthyHosts"
+      (obj .:? "DeploymentConfigName") <*>
+      (obj .:? "MinimumHealthyHosts")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentConfig' containing required fields
diff --git a/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs b/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
--- a/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
+++ b/library-gen/Stratosphere/Resources/CodeDeployDeploymentGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html
 
@@ -24,7 +25,7 @@
   CodeDeployDeploymentGroup
   { _codeDeployDeploymentGroupAlarmConfiguration :: Maybe CodeDeployDeploymentGroupAlarmConfiguration
   , _codeDeployDeploymentGroupApplicationName :: Val Text
-  , _codeDeployDeploymentGroupAutoScalingGroups :: Maybe [Val Text]
+  , _codeDeployDeploymentGroupAutoScalingGroups :: Maybe (ValList Text)
   , _codeDeployDeploymentGroupDeployment :: Maybe CodeDeployDeploymentGroupDeployment
   , _codeDeployDeploymentGroupDeploymentConfigName :: Maybe (Val Text)
   , _codeDeployDeploymentGroupDeploymentGroupName :: Maybe (Val Text)
@@ -38,31 +39,31 @@
   toJSON CodeDeployDeploymentGroup{..} =
     object $
     catMaybes
-    [ ("AlarmConfiguration" .=) <$> _codeDeployDeploymentGroupAlarmConfiguration
-    , Just ("ApplicationName" .= _codeDeployDeploymentGroupApplicationName)
-    , ("AutoScalingGroups" .=) <$> _codeDeployDeploymentGroupAutoScalingGroups
-    , ("Deployment" .=) <$> _codeDeployDeploymentGroupDeployment
-    , ("DeploymentConfigName" .=) <$> _codeDeployDeploymentGroupDeploymentConfigName
-    , ("DeploymentGroupName" .=) <$> _codeDeployDeploymentGroupDeploymentGroupName
-    , ("Ec2TagFilters" .=) <$> _codeDeployDeploymentGroupEc2TagFilters
-    , ("OnPremisesInstanceTagFilters" .=) <$> _codeDeployDeploymentGroupOnPremisesInstanceTagFilters
-    , Just ("ServiceRoleArn" .= _codeDeployDeploymentGroupServiceRoleArn)
-    , ("TriggerConfigurations" .=) <$> _codeDeployDeploymentGroupTriggerConfigurations
+    [ fmap (("AlarmConfiguration",) . toJSON) _codeDeployDeploymentGroupAlarmConfiguration
+    , (Just . ("ApplicationName",) . toJSON) _codeDeployDeploymentGroupApplicationName
+    , fmap (("AutoScalingGroups",) . toJSON) _codeDeployDeploymentGroupAutoScalingGroups
+    , fmap (("Deployment",) . toJSON) _codeDeployDeploymentGroupDeployment
+    , fmap (("DeploymentConfigName",) . toJSON) _codeDeployDeploymentGroupDeploymentConfigName
+    , fmap (("DeploymentGroupName",) . toJSON) _codeDeployDeploymentGroupDeploymentGroupName
+    , fmap (("Ec2TagFilters",) . toJSON) _codeDeployDeploymentGroupEc2TagFilters
+    , fmap (("OnPremisesInstanceTagFilters",) . toJSON) _codeDeployDeploymentGroupOnPremisesInstanceTagFilters
+    , (Just . ("ServiceRoleArn",) . toJSON) _codeDeployDeploymentGroupServiceRoleArn
+    , fmap (("TriggerConfigurations",) . toJSON) _codeDeployDeploymentGroupTriggerConfigurations
     ]
 
 instance FromJSON CodeDeployDeploymentGroup where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroup <$>
-      obj .:? "AlarmConfiguration" <*>
-      obj .: "ApplicationName" <*>
-      obj .:? "AutoScalingGroups" <*>
-      obj .:? "Deployment" <*>
-      obj .:? "DeploymentConfigName" <*>
-      obj .:? "DeploymentGroupName" <*>
-      obj .:? "Ec2TagFilters" <*>
-      obj .:? "OnPremisesInstanceTagFilters" <*>
-      obj .: "ServiceRoleArn" <*>
-      obj .:? "TriggerConfigurations"
+      (obj .:? "AlarmConfiguration") <*>
+      (obj .: "ApplicationName") <*>
+      (obj .:? "AutoScalingGroups") <*>
+      (obj .:? "Deployment") <*>
+      (obj .:? "DeploymentConfigName") <*>
+      (obj .:? "DeploymentGroupName") <*>
+      (obj .:? "Ec2TagFilters") <*>
+      (obj .:? "OnPremisesInstanceTagFilters") <*>
+      (obj .: "ServiceRoleArn") <*>
+      (obj .:? "TriggerConfigurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroup' containing required fields as
@@ -94,7 +95,7 @@
 cddgApplicationName = lens _codeDeployDeploymentGroupApplicationName (\s a -> s { _codeDeployDeploymentGroupApplicationName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autoscalinggroups
-cddgAutoScalingGroups :: Lens' CodeDeployDeploymentGroup (Maybe [Val Text])
+cddgAutoScalingGroups :: Lens' CodeDeployDeploymentGroup (Maybe (ValList Text))
 cddgAutoScalingGroups = lens _codeDeployDeploymentGroupAutoScalingGroups (\s a -> s { _codeDeployDeploymentGroupAutoScalingGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deployment
diff --git a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
--- a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html
 
@@ -33,25 +34,25 @@
   toJSON CodePipelineCustomActionType{..} =
     object $
     catMaybes
-    [ Just ("Category" .= _codePipelineCustomActionTypeCategory)
-    , ("ConfigurationProperties" .=) <$> _codePipelineCustomActionTypeConfigurationProperties
-    , Just ("InputArtifactDetails" .= _codePipelineCustomActionTypeInputArtifactDetails)
-    , Just ("OutputArtifactDetails" .= _codePipelineCustomActionTypeOutputArtifactDetails)
-    , Just ("Provider" .= _codePipelineCustomActionTypeProvider)
-    , ("Settings" .=) <$> _codePipelineCustomActionTypeSettings
-    , ("Version" .=) <$> _codePipelineCustomActionTypeVersion
+    [ (Just . ("Category",) . toJSON) _codePipelineCustomActionTypeCategory
+    , fmap (("ConfigurationProperties",) . toJSON) _codePipelineCustomActionTypeConfigurationProperties
+    , (Just . ("InputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeInputArtifactDetails
+    , (Just . ("OutputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeOutputArtifactDetails
+    , (Just . ("Provider",) . toJSON) _codePipelineCustomActionTypeProvider
+    , fmap (("Settings",) . toJSON) _codePipelineCustomActionTypeSettings
+    , fmap (("Version",) . toJSON) _codePipelineCustomActionTypeVersion
     ]
 
 instance FromJSON CodePipelineCustomActionType where
   parseJSON (Object obj) =
     CodePipelineCustomActionType <$>
-      obj .: "Category" <*>
-      obj .:? "ConfigurationProperties" <*>
-      obj .: "InputArtifactDetails" <*>
-      obj .: "OutputArtifactDetails" <*>
-      obj .: "Provider" <*>
-      obj .:? "Settings" <*>
-      obj .:? "Version"
+      (obj .: "Category") <*>
+      (obj .:? "ConfigurationProperties") <*>
+      (obj .: "InputArtifactDetails") <*>
+      (obj .: "OutputArtifactDetails") <*>
+      (obj .: "Provider") <*>
+      (obj .:? "Settings") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelineCustomActionType' containing required fields
diff --git a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
--- a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html
 
@@ -23,7 +24,7 @@
   { _codePipelinePipelineArtifactStore :: CodePipelinePipelineArtifactStore
   , _codePipelinePipelineDisableInboundStageTransitions :: Maybe [CodePipelinePipelineStageTransition]
   , _codePipelinePipelineName :: Maybe (Val Text)
-  , _codePipelinePipelineRestartExecutionOnUpdate :: Maybe (Val Bool')
+  , _codePipelinePipelineRestartExecutionOnUpdate :: Maybe (Val Bool)
   , _codePipelinePipelineRoleArn :: Val Text
   , _codePipelinePipelineStages :: [CodePipelinePipelineStageDeclaration]
   } deriving (Show, Eq)
@@ -32,23 +33,23 @@
   toJSON CodePipelinePipeline{..} =
     object $
     catMaybes
-    [ Just ("ArtifactStore" .= _codePipelinePipelineArtifactStore)
-    , ("DisableInboundStageTransitions" .=) <$> _codePipelinePipelineDisableInboundStageTransitions
-    , ("Name" .=) <$> _codePipelinePipelineName
-    , ("RestartExecutionOnUpdate" .=) <$> _codePipelinePipelineRestartExecutionOnUpdate
-    , Just ("RoleArn" .= _codePipelinePipelineRoleArn)
-    , Just ("Stages" .= _codePipelinePipelineStages)
+    [ (Just . ("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStore
+    , fmap (("DisableInboundStageTransitions",) . toJSON) _codePipelinePipelineDisableInboundStageTransitions
+    , fmap (("Name",) . toJSON) _codePipelinePipelineName
+    , fmap (("RestartExecutionOnUpdate",) . toJSON . fmap Bool') _codePipelinePipelineRestartExecutionOnUpdate
+    , (Just . ("RoleArn",) . toJSON) _codePipelinePipelineRoleArn
+    , (Just . ("Stages",) . toJSON) _codePipelinePipelineStages
     ]
 
 instance FromJSON CodePipelinePipeline where
   parseJSON (Object obj) =
     CodePipelinePipeline <$>
-      obj .: "ArtifactStore" <*>
-      obj .:? "DisableInboundStageTransitions" <*>
-      obj .:? "Name" <*>
-      obj .:? "RestartExecutionOnUpdate" <*>
-      obj .: "RoleArn" <*>
-      obj .: "Stages"
+      (obj .: "ArtifactStore") <*>
+      (obj .:? "DisableInboundStageTransitions") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RestartExecutionOnUpdate") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "Stages")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodePipelinePipeline' containing required fields as
@@ -81,7 +82,7 @@
 cppName = lens _codePipelinePipelineName (\s a -> s { _codePipelinePipelineName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-restartexecutiononupdate
-cppRestartExecutionOnUpdate :: Lens' CodePipelinePipeline (Maybe (Val Bool'))
+cppRestartExecutionOnUpdate :: Lens' CodePipelinePipeline (Maybe (Val Bool))
 cppRestartExecutionOnUpdate = lens _codePipelinePipelineRestartExecutionOnUpdate (\s a -> s { _codePipelinePipelineRestartExecutionOnUpdate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-rolearn
diff --git a/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs b/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoIdentityPool.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
 
@@ -20,15 +21,15 @@
 -- 'cognitoIdentityPool' for a more convenient constructor.
 data CognitoIdentityPool =
   CognitoIdentityPool
-  { _cognitoIdentityPoolAllowUnauthenticatedIdentities :: Val Bool'
+  { _cognitoIdentityPoolAllowUnauthenticatedIdentities :: Val Bool
   , _cognitoIdentityPoolCognitoEvents :: Maybe Object
   , _cognitoIdentityPoolCognitoIdentityProviders :: Maybe [CognitoIdentityPoolCognitoIdentityProvider]
   , _cognitoIdentityPoolCognitoStreams :: Maybe CognitoIdentityPoolCognitoStreams
   , _cognitoIdentityPoolDeveloperProviderName :: Maybe (Val Text)
   , _cognitoIdentityPoolIdentityPoolName :: Maybe (Val Text)
-  , _cognitoIdentityPoolOpenIdConnectProviderARNs :: Maybe [Val Text]
+  , _cognitoIdentityPoolOpenIdConnectProviderARNs :: Maybe (ValList Text)
   , _cognitoIdentityPoolPushSync :: Maybe CognitoIdentityPoolPushSync
-  , _cognitoIdentityPoolSamlProviderARNs :: Maybe [Val Text]
+  , _cognitoIdentityPoolSamlProviderARNs :: Maybe (ValList Text)
   , _cognitoIdentityPoolSupportedLoginProviders :: Maybe Object
   } deriving (Show, Eq)
 
@@ -36,37 +37,37 @@
   toJSON CognitoIdentityPool{..} =
     object $
     catMaybes
-    [ Just ("AllowUnauthenticatedIdentities" .= _cognitoIdentityPoolAllowUnauthenticatedIdentities)
-    , ("CognitoEvents" .=) <$> _cognitoIdentityPoolCognitoEvents
-    , ("CognitoIdentityProviders" .=) <$> _cognitoIdentityPoolCognitoIdentityProviders
-    , ("CognitoStreams" .=) <$> _cognitoIdentityPoolCognitoStreams
-    , ("DeveloperProviderName" .=) <$> _cognitoIdentityPoolDeveloperProviderName
-    , ("IdentityPoolName" .=) <$> _cognitoIdentityPoolIdentityPoolName
-    , ("OpenIdConnectProviderARNs" .=) <$> _cognitoIdentityPoolOpenIdConnectProviderARNs
-    , ("PushSync" .=) <$> _cognitoIdentityPoolPushSync
-    , ("SamlProviderARNs" .=) <$> _cognitoIdentityPoolSamlProviderARNs
-    , ("SupportedLoginProviders" .=) <$> _cognitoIdentityPoolSupportedLoginProviders
+    [ (Just . ("AllowUnauthenticatedIdentities",) . toJSON . fmap Bool') _cognitoIdentityPoolAllowUnauthenticatedIdentities
+    , fmap (("CognitoEvents",) . toJSON) _cognitoIdentityPoolCognitoEvents
+    , fmap (("CognitoIdentityProviders",) . toJSON) _cognitoIdentityPoolCognitoIdentityProviders
+    , fmap (("CognitoStreams",) . toJSON) _cognitoIdentityPoolCognitoStreams
+    , fmap (("DeveloperProviderName",) . toJSON) _cognitoIdentityPoolDeveloperProviderName
+    , fmap (("IdentityPoolName",) . toJSON) _cognitoIdentityPoolIdentityPoolName
+    , fmap (("OpenIdConnectProviderARNs",) . toJSON) _cognitoIdentityPoolOpenIdConnectProviderARNs
+    , fmap (("PushSync",) . toJSON) _cognitoIdentityPoolPushSync
+    , fmap (("SamlProviderARNs",) . toJSON) _cognitoIdentityPoolSamlProviderARNs
+    , fmap (("SupportedLoginProviders",) . toJSON) _cognitoIdentityPoolSupportedLoginProviders
     ]
 
 instance FromJSON CognitoIdentityPool where
   parseJSON (Object obj) =
     CognitoIdentityPool <$>
-      obj .: "AllowUnauthenticatedIdentities" <*>
-      obj .:? "CognitoEvents" <*>
-      obj .:? "CognitoIdentityProviders" <*>
-      obj .:? "CognitoStreams" <*>
-      obj .:? "DeveloperProviderName" <*>
-      obj .:? "IdentityPoolName" <*>
-      obj .:? "OpenIdConnectProviderARNs" <*>
-      obj .:? "PushSync" <*>
-      obj .:? "SamlProviderARNs" <*>
-      obj .:? "SupportedLoginProviders"
+      fmap (fmap unBool') (obj .: "AllowUnauthenticatedIdentities") <*>
+      (obj .:? "CognitoEvents") <*>
+      (obj .:? "CognitoIdentityProviders") <*>
+      (obj .:? "CognitoStreams") <*>
+      (obj .:? "DeveloperProviderName") <*>
+      (obj .:? "IdentityPoolName") <*>
+      (obj .:? "OpenIdConnectProviderARNs") <*>
+      (obj .:? "PushSync") <*>
+      (obj .:? "SamlProviderARNs") <*>
+      (obj .:? "SupportedLoginProviders")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPool' containing required fields as
 -- arguments.
 cognitoIdentityPool
-  :: Val Bool' -- ^ 'cipAllowUnauthenticatedIdentities'
+  :: Val Bool -- ^ 'cipAllowUnauthenticatedIdentities'
   -> CognitoIdentityPool
 cognitoIdentityPool allowUnauthenticatedIdentitiesarg =
   CognitoIdentityPool
@@ -83,7 +84,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-allowunauthenticatedidentities
-cipAllowUnauthenticatedIdentities :: Lens' CognitoIdentityPool (Val Bool')
+cipAllowUnauthenticatedIdentities :: Lens' CognitoIdentityPool (Val Bool)
 cipAllowUnauthenticatedIdentities = lens _cognitoIdentityPoolAllowUnauthenticatedIdentities (\s a -> s { _cognitoIdentityPoolAllowUnauthenticatedIdentities = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-cognitoevents
@@ -107,7 +108,7 @@
 cipIdentityPoolName = lens _cognitoIdentityPoolIdentityPoolName (\s a -> s { _cognitoIdentityPoolIdentityPoolName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-openidconnectproviderarns
-cipOpenIdConnectProviderARNs :: Lens' CognitoIdentityPool (Maybe [Val Text])
+cipOpenIdConnectProviderARNs :: Lens' CognitoIdentityPool (Maybe (ValList Text))
 cipOpenIdConnectProviderARNs = lens _cognitoIdentityPoolOpenIdConnectProviderARNs (\s a -> s { _cognitoIdentityPoolOpenIdConnectProviderARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-pushsync
@@ -115,7 +116,7 @@
 cipPushSync = lens _cognitoIdentityPoolPushSync (\s a -> s { _cognitoIdentityPoolPushSync = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-samlproviderarns
-cipSamlProviderARNs :: Lens' CognitoIdentityPool (Maybe [Val Text])
+cipSamlProviderARNs :: Lens' CognitoIdentityPool (Maybe (ValList Text))
 cipSamlProviderARNs = lens _cognitoIdentityPoolSamlProviderARNs (\s a -> s { _cognitoIdentityPoolSamlProviderARNs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-supportedloginproviders
diff --git a/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs b/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
--- a/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
+++ b/library-gen/Stratosphere/Resources/CognitoIdentityPoolRoleAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
 
@@ -27,17 +28,17 @@
   toJSON CognitoIdentityPoolRoleAttachment{..} =
     object $
     catMaybes
-    [ Just ("IdentityPoolId" .= _cognitoIdentityPoolRoleAttachmentIdentityPoolId)
-    , ("RoleMappings" .=) <$> _cognitoIdentityPoolRoleAttachmentRoleMappings
-    , ("Roles" .=) <$> _cognitoIdentityPoolRoleAttachmentRoles
+    [ (Just . ("IdentityPoolId",) . toJSON) _cognitoIdentityPoolRoleAttachmentIdentityPoolId
+    , fmap (("RoleMappings",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoleMappings
+    , fmap (("Roles",) . toJSON) _cognitoIdentityPoolRoleAttachmentRoles
     ]
 
 instance FromJSON CognitoIdentityPoolRoleAttachment where
   parseJSON (Object obj) =
     CognitoIdentityPoolRoleAttachment <$>
-      obj .: "IdentityPoolId" <*>
-      obj .:? "RoleMappings" <*>
-      obj .:? "Roles"
+      (obj .: "IdentityPoolId") <*>
+      (obj .:? "RoleMappings") <*>
+      (obj .:? "Roles")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoIdentityPoolRoleAttachment' containing required
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPool.hs b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html
 
@@ -25,8 +26,8 @@
 data CognitoUserPool =
   CognitoUserPool
   { _cognitoUserPoolAdminCreateUserConfig :: Maybe CognitoUserPoolAdminCreateUserConfig
-  , _cognitoUserPoolAliasAttributes :: Maybe [Val Text]
-  , _cognitoUserPoolAutoVerifiedAttributes :: Maybe [Val Text]
+  , _cognitoUserPoolAliasAttributes :: Maybe (ValList Text)
+  , _cognitoUserPoolAutoVerifiedAttributes :: Maybe (ValList Text)
   , _cognitoUserPoolDeviceConfiguration :: Maybe CognitoUserPoolDeviceConfiguration
   , _cognitoUserPoolEmailConfiguration :: Maybe CognitoUserPoolEmailConfiguration
   , _cognitoUserPoolEmailVerificationMessage :: Maybe (Val Text)
@@ -46,43 +47,43 @@
   toJSON CognitoUserPool{..} =
     object $
     catMaybes
-    [ ("AdminCreateUserConfig" .=) <$> _cognitoUserPoolAdminCreateUserConfig
-    , ("AliasAttributes" .=) <$> _cognitoUserPoolAliasAttributes
-    , ("AutoVerifiedAttributes" .=) <$> _cognitoUserPoolAutoVerifiedAttributes
-    , ("DeviceConfiguration" .=) <$> _cognitoUserPoolDeviceConfiguration
-    , ("EmailConfiguration" .=) <$> _cognitoUserPoolEmailConfiguration
-    , ("EmailVerificationMessage" .=) <$> _cognitoUserPoolEmailVerificationMessage
-    , ("EmailVerificationSubject" .=) <$> _cognitoUserPoolEmailVerificationSubject
-    , ("LambdaConfig" .=) <$> _cognitoUserPoolLambdaConfig
-    , ("MfaConfiguration" .=) <$> _cognitoUserPoolMfaConfiguration
-    , ("Policies" .=) <$> _cognitoUserPoolPolicies
-    , ("Schema" .=) <$> _cognitoUserPoolSchema
-    , ("SmsAuthenticationMessage" .=) <$> _cognitoUserPoolSmsAuthenticationMessage
-    , ("SmsConfiguration" .=) <$> _cognitoUserPoolSmsConfiguration
-    , ("SmsVerificationMessage" .=) <$> _cognitoUserPoolSmsVerificationMessage
-    , ("UserPoolName" .=) <$> _cognitoUserPoolUserPoolName
-    , ("UserPoolTags" .=) <$> _cognitoUserPoolUserPoolTags
+    [ fmap (("AdminCreateUserConfig",) . toJSON) _cognitoUserPoolAdminCreateUserConfig
+    , fmap (("AliasAttributes",) . toJSON) _cognitoUserPoolAliasAttributes
+    , fmap (("AutoVerifiedAttributes",) . toJSON) _cognitoUserPoolAutoVerifiedAttributes
+    , fmap (("DeviceConfiguration",) . toJSON) _cognitoUserPoolDeviceConfiguration
+    , fmap (("EmailConfiguration",) . toJSON) _cognitoUserPoolEmailConfiguration
+    , fmap (("EmailVerificationMessage",) . toJSON) _cognitoUserPoolEmailVerificationMessage
+    , fmap (("EmailVerificationSubject",) . toJSON) _cognitoUserPoolEmailVerificationSubject
+    , fmap (("LambdaConfig",) . toJSON) _cognitoUserPoolLambdaConfig
+    , fmap (("MfaConfiguration",) . toJSON) _cognitoUserPoolMfaConfiguration
+    , fmap (("Policies",) . toJSON) _cognitoUserPoolPolicies
+    , fmap (("Schema",) . toJSON) _cognitoUserPoolSchema
+    , fmap (("SmsAuthenticationMessage",) . toJSON) _cognitoUserPoolSmsAuthenticationMessage
+    , fmap (("SmsConfiguration",) . toJSON) _cognitoUserPoolSmsConfiguration
+    , fmap (("SmsVerificationMessage",) . toJSON) _cognitoUserPoolSmsVerificationMessage
+    , fmap (("UserPoolName",) . toJSON) _cognitoUserPoolUserPoolName
+    , fmap (("UserPoolTags",) . toJSON) _cognitoUserPoolUserPoolTags
     ]
 
 instance FromJSON CognitoUserPool where
   parseJSON (Object obj) =
     CognitoUserPool <$>
-      obj .:? "AdminCreateUserConfig" <*>
-      obj .:? "AliasAttributes" <*>
-      obj .:? "AutoVerifiedAttributes" <*>
-      obj .:? "DeviceConfiguration" <*>
-      obj .:? "EmailConfiguration" <*>
-      obj .:? "EmailVerificationMessage" <*>
-      obj .:? "EmailVerificationSubject" <*>
-      obj .:? "LambdaConfig" <*>
-      obj .:? "MfaConfiguration" <*>
-      obj .:? "Policies" <*>
-      obj .:? "Schema" <*>
-      obj .:? "SmsAuthenticationMessage" <*>
-      obj .:? "SmsConfiguration" <*>
-      obj .:? "SmsVerificationMessage" <*>
-      obj .:? "UserPoolName" <*>
-      obj .:? "UserPoolTags"
+      (obj .:? "AdminCreateUserConfig") <*>
+      (obj .:? "AliasAttributes") <*>
+      (obj .:? "AutoVerifiedAttributes") <*>
+      (obj .:? "DeviceConfiguration") <*>
+      (obj .:? "EmailConfiguration") <*>
+      (obj .:? "EmailVerificationMessage") <*>
+      (obj .:? "EmailVerificationSubject") <*>
+      (obj .:? "LambdaConfig") <*>
+      (obj .:? "MfaConfiguration") <*>
+      (obj .:? "Policies") <*>
+      (obj .:? "Schema") <*>
+      (obj .:? "SmsAuthenticationMessage") <*>
+      (obj .:? "SmsConfiguration") <*>
+      (obj .:? "SmsVerificationMessage") <*>
+      (obj .:? "UserPoolName") <*>
+      (obj .:? "UserPoolTags")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPool' containing required fields as
@@ -114,11 +115,11 @@
 cupAdminCreateUserConfig = lens _cognitoUserPoolAdminCreateUserConfig (\s a -> s { _cognitoUserPoolAdminCreateUserConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-aliasattributes
-cupAliasAttributes :: Lens' CognitoUserPool (Maybe [Val Text])
+cupAliasAttributes :: Lens' CognitoUserPool (Maybe (ValList Text))
 cupAliasAttributes = lens _cognitoUserPoolAliasAttributes (\s a -> s { _cognitoUserPoolAliasAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-autoverifiedattributes
-cupAutoVerifiedAttributes :: Lens' CognitoUserPool (Maybe [Val Text])
+cupAutoVerifiedAttributes :: Lens' CognitoUserPool (Maybe (ValList Text))
 cupAutoVerifiedAttributes = lens _cognitoUserPoolAutoVerifiedAttributes (\s a -> s { _cognitoUserPoolAutoVerifiedAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-deviceconfiguration
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolClient.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
 
@@ -19,37 +20,37 @@
 data CognitoUserPoolClient =
   CognitoUserPoolClient
   { _cognitoUserPoolClientClientName :: Maybe (Val Text)
-  , _cognitoUserPoolClientExplicitAuthFlows :: Maybe [Val Text]
-  , _cognitoUserPoolClientGenerateSecret :: Maybe (Val Bool')
-  , _cognitoUserPoolClientReadAttributes :: Maybe [Val Text]
-  , _cognitoUserPoolClientRefreshTokenValidity :: Maybe (Val Double')
+  , _cognitoUserPoolClientExplicitAuthFlows :: Maybe (ValList Text)
+  , _cognitoUserPoolClientGenerateSecret :: Maybe (Val Bool)
+  , _cognitoUserPoolClientReadAttributes :: Maybe (ValList Text)
+  , _cognitoUserPoolClientRefreshTokenValidity :: Maybe (Val Double)
   , _cognitoUserPoolClientUserPoolId :: Val Text
-  , _cognitoUserPoolClientWriteAttributes :: Maybe [Val Text]
+  , _cognitoUserPoolClientWriteAttributes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON CognitoUserPoolClient where
   toJSON CognitoUserPoolClient{..} =
     object $
     catMaybes
-    [ ("ClientName" .=) <$> _cognitoUserPoolClientClientName
-    , ("ExplicitAuthFlows" .=) <$> _cognitoUserPoolClientExplicitAuthFlows
-    , ("GenerateSecret" .=) <$> _cognitoUserPoolClientGenerateSecret
-    , ("ReadAttributes" .=) <$> _cognitoUserPoolClientReadAttributes
-    , ("RefreshTokenValidity" .=) <$> _cognitoUserPoolClientRefreshTokenValidity
-    , Just ("UserPoolId" .= _cognitoUserPoolClientUserPoolId)
-    , ("WriteAttributes" .=) <$> _cognitoUserPoolClientWriteAttributes
+    [ fmap (("ClientName",) . toJSON) _cognitoUserPoolClientClientName
+    , fmap (("ExplicitAuthFlows",) . toJSON) _cognitoUserPoolClientExplicitAuthFlows
+    , fmap (("GenerateSecret",) . toJSON . fmap Bool') _cognitoUserPoolClientGenerateSecret
+    , fmap (("ReadAttributes",) . toJSON) _cognitoUserPoolClientReadAttributes
+    , fmap (("RefreshTokenValidity",) . toJSON . fmap Double') _cognitoUserPoolClientRefreshTokenValidity
+    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolClientUserPoolId
+    , fmap (("WriteAttributes",) . toJSON) _cognitoUserPoolClientWriteAttributes
     ]
 
 instance FromJSON CognitoUserPoolClient where
   parseJSON (Object obj) =
     CognitoUserPoolClient <$>
-      obj .:? "ClientName" <*>
-      obj .:? "ExplicitAuthFlows" <*>
-      obj .:? "GenerateSecret" <*>
-      obj .:? "ReadAttributes" <*>
-      obj .:? "RefreshTokenValidity" <*>
-      obj .: "UserPoolId" <*>
-      obj .:? "WriteAttributes"
+      (obj .:? "ClientName") <*>
+      (obj .:? "ExplicitAuthFlows") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "GenerateSecret") <*>
+      (obj .:? "ReadAttributes") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "RefreshTokenValidity") <*>
+      (obj .: "UserPoolId") <*>
+      (obj .:? "WriteAttributes")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolClient' containing required fields as
@@ -73,19 +74,19 @@
 cupcClientName = lens _cognitoUserPoolClientClientName (\s a -> s { _cognitoUserPoolClientClientName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-explicitauthflows
-cupcExplicitAuthFlows :: Lens' CognitoUserPoolClient (Maybe [Val Text])
+cupcExplicitAuthFlows :: Lens' CognitoUserPoolClient (Maybe (ValList Text))
 cupcExplicitAuthFlows = lens _cognitoUserPoolClientExplicitAuthFlows (\s a -> s { _cognitoUserPoolClientExplicitAuthFlows = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-generatesecret
-cupcGenerateSecret :: Lens' CognitoUserPoolClient (Maybe (Val Bool'))
+cupcGenerateSecret :: Lens' CognitoUserPoolClient (Maybe (Val Bool))
 cupcGenerateSecret = lens _cognitoUserPoolClientGenerateSecret (\s a -> s { _cognitoUserPoolClientGenerateSecret = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-readattributes
-cupcReadAttributes :: Lens' CognitoUserPoolClient (Maybe [Val Text])
+cupcReadAttributes :: Lens' CognitoUserPoolClient (Maybe (ValList Text))
 cupcReadAttributes = lens _cognitoUserPoolClientReadAttributes (\s a -> s { _cognitoUserPoolClientReadAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-refreshtokenvalidity
-cupcRefreshTokenValidity :: Lens' CognitoUserPoolClient (Maybe (Val Double'))
+cupcRefreshTokenValidity :: Lens' CognitoUserPoolClient (Maybe (Val Double))
 cupcRefreshTokenValidity = lens _cognitoUserPoolClientRefreshTokenValidity (\s a -> s { _cognitoUserPoolClientRefreshTokenValidity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-userpoolid
@@ -93,5 +94,5 @@
 cupcUserPoolId = lens _cognitoUserPoolClientUserPoolId (\s a -> s { _cognitoUserPoolClientUserPoolId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-writeattributes
-cupcWriteAttributes :: Lens' CognitoUserPoolClient (Maybe [Val Text])
+cupcWriteAttributes :: Lens' CognitoUserPoolClient (Maybe (ValList Text))
 cupcWriteAttributes = lens _cognitoUserPoolClientWriteAttributes (\s a -> s { _cognitoUserPoolClientWriteAttributes = a })
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html
 
@@ -20,7 +21,7 @@
   CognitoUserPoolGroup
   { _cognitoUserPoolGroupDescription :: Maybe (Val Text)
   , _cognitoUserPoolGroupGroupName :: Maybe (Val Text)
-  , _cognitoUserPoolGroupPrecedence :: Maybe (Val Double')
+  , _cognitoUserPoolGroupPrecedence :: Maybe (Val Double)
   , _cognitoUserPoolGroupRoleArn :: Maybe (Val Text)
   , _cognitoUserPoolGroupUserPoolId :: Val Text
   } deriving (Show, Eq)
@@ -29,21 +30,21 @@
   toJSON CognitoUserPoolGroup{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _cognitoUserPoolGroupDescription
-    , ("GroupName" .=) <$> _cognitoUserPoolGroupGroupName
-    , ("Precedence" .=) <$> _cognitoUserPoolGroupPrecedence
-    , ("RoleArn" .=) <$> _cognitoUserPoolGroupRoleArn
-    , Just ("UserPoolId" .= _cognitoUserPoolGroupUserPoolId)
+    [ fmap (("Description",) . toJSON) _cognitoUserPoolGroupDescription
+    , fmap (("GroupName",) . toJSON) _cognitoUserPoolGroupGroupName
+    , fmap (("Precedence",) . toJSON . fmap Double') _cognitoUserPoolGroupPrecedence
+    , fmap (("RoleArn",) . toJSON) _cognitoUserPoolGroupRoleArn
+    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolGroupUserPoolId
     ]
 
 instance FromJSON CognitoUserPoolGroup where
   parseJSON (Object obj) =
     CognitoUserPoolGroup <$>
-      obj .:? "Description" <*>
-      obj .:? "GroupName" <*>
-      obj .:? "Precedence" <*>
-      obj .:? "RoleArn" <*>
-      obj .: "UserPoolId"
+      (obj .:? "Description") <*>
+      (obj .:? "GroupName") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "Precedence") <*>
+      (obj .:? "RoleArn") <*>
+      (obj .: "UserPoolId")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolGroup' containing required fields as
@@ -69,7 +70,7 @@
 cupgGroupName = lens _cognitoUserPoolGroupGroupName (\s a -> s { _cognitoUserPoolGroupGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-precedence
-cupgPrecedence :: Lens' CognitoUserPoolGroup (Maybe (Val Double'))
+cupgPrecedence :: Lens' CognitoUserPoolGroup (Maybe (Val Double))
 cupgPrecedence = lens _cognitoUserPoolGroupPrecedence (\s a -> s { _cognitoUserPoolGroupPrecedence = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-rolearn
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html
 
@@ -18,8 +19,8 @@
 -- 'cognitoUserPoolUser' for a more convenient constructor.
 data CognitoUserPoolUser =
   CognitoUserPoolUser
-  { _cognitoUserPoolUserDesiredDeliveryMediums :: Maybe [Val Text]
-  , _cognitoUserPoolUserForceAliasCreation :: Maybe (Val Bool')
+  { _cognitoUserPoolUserDesiredDeliveryMediums :: Maybe (ValList Text)
+  , _cognitoUserPoolUserForceAliasCreation :: Maybe (Val Bool)
   , _cognitoUserPoolUserMessageAction :: Maybe (Val Text)
   , _cognitoUserPoolUserUserAttributes :: Maybe [CognitoUserPoolUserAttributeType]
   , _cognitoUserPoolUserUserPoolId :: Val Text
@@ -31,25 +32,25 @@
   toJSON CognitoUserPoolUser{..} =
     object $
     catMaybes
-    [ ("DesiredDeliveryMediums" .=) <$> _cognitoUserPoolUserDesiredDeliveryMediums
-    , ("ForceAliasCreation" .=) <$> _cognitoUserPoolUserForceAliasCreation
-    , ("MessageAction" .=) <$> _cognitoUserPoolUserMessageAction
-    , ("UserAttributes" .=) <$> _cognitoUserPoolUserUserAttributes
-    , Just ("UserPoolId" .= _cognitoUserPoolUserUserPoolId)
-    , ("Username" .=) <$> _cognitoUserPoolUserUsername
-    , ("ValidationData" .=) <$> _cognitoUserPoolUserValidationData
+    [ fmap (("DesiredDeliveryMediums",) . toJSON) _cognitoUserPoolUserDesiredDeliveryMediums
+    , fmap (("ForceAliasCreation",) . toJSON . fmap Bool') _cognitoUserPoolUserForceAliasCreation
+    , fmap (("MessageAction",) . toJSON) _cognitoUserPoolUserMessageAction
+    , fmap (("UserAttributes",) . toJSON) _cognitoUserPoolUserUserAttributes
+    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserUserPoolId
+    , fmap (("Username",) . toJSON) _cognitoUserPoolUserUsername
+    , fmap (("ValidationData",) . toJSON) _cognitoUserPoolUserValidationData
     ]
 
 instance FromJSON CognitoUserPoolUser where
   parseJSON (Object obj) =
     CognitoUserPoolUser <$>
-      obj .:? "DesiredDeliveryMediums" <*>
-      obj .:? "ForceAliasCreation" <*>
-      obj .:? "MessageAction" <*>
-      obj .:? "UserAttributes" <*>
-      obj .: "UserPoolId" <*>
-      obj .:? "Username" <*>
-      obj .:? "ValidationData"
+      (obj .:? "DesiredDeliveryMediums") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ForceAliasCreation") <*>
+      (obj .:? "MessageAction") <*>
+      (obj .:? "UserAttributes") <*>
+      (obj .: "UserPoolId") <*>
+      (obj .:? "Username") <*>
+      (obj .:? "ValidationData")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolUser' containing required fields as
@@ -69,11 +70,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-desireddeliverymediums
-cupuDesiredDeliveryMediums :: Lens' CognitoUserPoolUser (Maybe [Val Text])
+cupuDesiredDeliveryMediums :: Lens' CognitoUserPoolUser (Maybe (ValList Text))
 cupuDesiredDeliveryMediums = lens _cognitoUserPoolUserDesiredDeliveryMediums (\s a -> s { _cognitoUserPoolUserDesiredDeliveryMediums = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-forcealiascreation
-cupuForceAliasCreation :: Lens' CognitoUserPoolUser (Maybe (Val Bool'))
+cupuForceAliasCreation :: Lens' CognitoUserPoolUser (Maybe (Val Bool))
 cupuForceAliasCreation = lens _cognitoUserPoolUserForceAliasCreation (\s a -> s { _cognitoUserPoolUserForceAliasCreation = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-messageaction
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs b/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPoolUserToGroupAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html
 
@@ -27,17 +28,17 @@
   toJSON CognitoUserPoolUserToGroupAttachment{..} =
     object $
     catMaybes
-    [ Just ("GroupName" .= _cognitoUserPoolUserToGroupAttachmentGroupName)
-    , Just ("UserPoolId" .= _cognitoUserPoolUserToGroupAttachmentUserPoolId)
-    , Just ("Username" .= _cognitoUserPoolUserToGroupAttachmentUsername)
+    [ (Just . ("GroupName",) . toJSON) _cognitoUserPoolUserToGroupAttachmentGroupName
+    , (Just . ("UserPoolId",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUserPoolId
+    , (Just . ("Username",) . toJSON) _cognitoUserPoolUserToGroupAttachmentUsername
     ]
 
 instance FromJSON CognitoUserPoolUserToGroupAttachment where
   parseJSON (Object obj) =
     CognitoUserPoolUserToGroupAttachment <$>
-      obj .: "GroupName" <*>
-      obj .: "UserPoolId" <*>
-      obj .: "Username"
+      (obj .: "GroupName") <*>
+      (obj .: "UserPoolId") <*>
+      (obj .: "Username")
   parseJSON _ = mempty
 
 -- | Constructor for 'CognitoUserPoolUserToGroupAttachment' containing
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigRule.hs b/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html
 
@@ -31,23 +32,23 @@
   toJSON ConfigConfigRule{..} =
     object $
     catMaybes
-    [ ("ConfigRuleName" .=) <$> _configConfigRuleConfigRuleName
-    , ("Description" .=) <$> _configConfigRuleDescription
-    , ("InputParameters" .=) <$> _configConfigRuleInputParameters
-    , ("MaximumExecutionFrequency" .=) <$> _configConfigRuleMaximumExecutionFrequency
-    , ("Scope" .=) <$> _configConfigRuleScope
-    , Just ("Source" .= _configConfigRuleSource)
+    [ fmap (("ConfigRuleName",) . toJSON) _configConfigRuleConfigRuleName
+    , fmap (("Description",) . toJSON) _configConfigRuleDescription
+    , fmap (("InputParameters",) . toJSON) _configConfigRuleInputParameters
+    , fmap (("MaximumExecutionFrequency",) . toJSON) _configConfigRuleMaximumExecutionFrequency
+    , fmap (("Scope",) . toJSON) _configConfigRuleScope
+    , (Just . ("Source",) . toJSON) _configConfigRuleSource
     ]
 
 instance FromJSON ConfigConfigRule where
   parseJSON (Object obj) =
     ConfigConfigRule <$>
-      obj .:? "ConfigRuleName" <*>
-      obj .:? "Description" <*>
-      obj .:? "InputParameters" <*>
-      obj .:? "MaximumExecutionFrequency" <*>
-      obj .:? "Scope" <*>
-      obj .: "Source"
+      (obj .:? "ConfigRuleName") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "InputParameters") <*>
+      (obj .:? "MaximumExecutionFrequency") <*>
+      (obj .:? "Scope") <*>
+      (obj .: "Source")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigRule' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs b/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigurationRecorder.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html
 
@@ -27,17 +28,17 @@
   toJSON ConfigConfigurationRecorder{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _configConfigurationRecorderName
-    , ("RecordingGroup" .=) <$> _configConfigurationRecorderRecordingGroup
-    , Just ("RoleARN" .= _configConfigurationRecorderRoleARN)
+    [ fmap (("Name",) . toJSON) _configConfigurationRecorderName
+    , fmap (("RecordingGroup",) . toJSON) _configConfigurationRecorderRecordingGroup
+    , (Just . ("RoleARN",) . toJSON) _configConfigurationRecorderRoleARN
     ]
 
 instance FromJSON ConfigConfigurationRecorder where
   parseJSON (Object obj) =
     ConfigConfigurationRecorder <$>
-      obj .:? "Name" <*>
-      obj .:? "RecordingGroup" <*>
-      obj .: "RoleARN"
+      (obj .:? "Name") <*>
+      (obj .:? "RecordingGroup") <*>
+      (obj .: "RoleARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigConfigurationRecorder' containing required fields
diff --git a/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs b/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
--- a/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
+++ b/library-gen/Stratosphere/Resources/ConfigDeliveryChannel.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html
 
@@ -29,21 +30,21 @@
   toJSON ConfigDeliveryChannel{..} =
     object $
     catMaybes
-    [ ("ConfigSnapshotDeliveryProperties" .=) <$> _configDeliveryChannelConfigSnapshotDeliveryProperties
-    , ("Name" .=) <$> _configDeliveryChannelName
-    , Just ("S3BucketName" .= _configDeliveryChannelS3BucketName)
-    , ("S3KeyPrefix" .=) <$> _configDeliveryChannelS3KeyPrefix
-    , ("SnsTopicARN" .=) <$> _configDeliveryChannelSnsTopicARN
+    [ fmap (("ConfigSnapshotDeliveryProperties",) . toJSON) _configDeliveryChannelConfigSnapshotDeliveryProperties
+    , fmap (("Name",) . toJSON) _configDeliveryChannelName
+    , (Just . ("S3BucketName",) . toJSON) _configDeliveryChannelS3BucketName
+    , fmap (("S3KeyPrefix",) . toJSON) _configDeliveryChannelS3KeyPrefix
+    , fmap (("SnsTopicARN",) . toJSON) _configDeliveryChannelSnsTopicARN
     ]
 
 instance FromJSON ConfigDeliveryChannel where
   parseJSON (Object obj) =
     ConfigDeliveryChannel <$>
-      obj .:? "ConfigSnapshotDeliveryProperties" <*>
-      obj .:? "Name" <*>
-      obj .: "S3BucketName" <*>
-      obj .:? "S3KeyPrefix" <*>
-      obj .:? "SnsTopicARN"
+      (obj .:? "ConfigSnapshotDeliveryProperties") <*>
+      (obj .:? "Name") <*>
+      (obj .: "S3BucketName") <*>
+      (obj .:? "S3KeyPrefix") <*>
+      (obj .:? "SnsTopicARN")
   parseJSON _ = mempty
 
 -- | Constructor for 'ConfigDeliveryChannel' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/DMSCertificate.hs b/library-gen/Stratosphere/Resources/DMSCertificate.hs
--- a/library-gen/Stratosphere/Resources/DMSCertificate.hs
+++ b/library-gen/Stratosphere/Resources/DMSCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html
 
@@ -27,17 +28,17 @@
   toJSON DMSCertificate{..} =
     object $
     catMaybes
-    [ ("CertificateIdentifier" .=) <$> _dMSCertificateCertificateIdentifier
-    , ("CertificatePem" .=) <$> _dMSCertificateCertificatePem
-    , ("CertificateWallet" .=) <$> _dMSCertificateCertificateWallet
+    [ fmap (("CertificateIdentifier",) . toJSON) _dMSCertificateCertificateIdentifier
+    , fmap (("CertificatePem",) . toJSON) _dMSCertificateCertificatePem
+    , fmap (("CertificateWallet",) . toJSON) _dMSCertificateCertificateWallet
     ]
 
 instance FromJSON DMSCertificate where
   parseJSON (Object obj) =
     DMSCertificate <$>
-      obj .:? "CertificateIdentifier" <*>
-      obj .:? "CertificatePem" <*>
-      obj .:? "CertificateWallet"
+      (obj .:? "CertificateIdentifier") <*>
+      (obj .:? "CertificatePem") <*>
+      (obj .:? "CertificateWallet")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSCertificate' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/DMSEndpoint.hs b/library-gen/Stratosphere/Resources/DMSEndpoint.hs
--- a/library-gen/Stratosphere/Resources/DMSEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/DMSEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html
 
@@ -31,7 +32,7 @@
   , _dMSEndpointKmsKeyId :: Maybe (Val Text)
   , _dMSEndpointMongoDbSettings :: Maybe DMSEndpointMongoDbSettings
   , _dMSEndpointPassword :: Maybe (Val Text)
-  , _dMSEndpointPort :: Maybe (Val Integer')
+  , _dMSEndpointPort :: Maybe (Val Integer)
   , _dMSEndpointS3Settings :: Maybe DMSEndpointS3Settings
   , _dMSEndpointServerName :: Maybe (Val Text)
   , _dMSEndpointSslMode :: Maybe (Val Text)
@@ -43,43 +44,43 @@
   toJSON DMSEndpoint{..} =
     object $
     catMaybes
-    [ ("CertificateArn" .=) <$> _dMSEndpointCertificateArn
-    , ("DatabaseName" .=) <$> _dMSEndpointDatabaseName
-    , ("DynamoDbSettings" .=) <$> _dMSEndpointDynamoDbSettings
-    , ("EndpointIdentifier" .=) <$> _dMSEndpointEndpointIdentifier
-    , Just ("EndpointType" .= _dMSEndpointEndpointType)
-    , Just ("EngineName" .= _dMSEndpointEngineName)
-    , ("ExtraConnectionAttributes" .=) <$> _dMSEndpointExtraConnectionAttributes
-    , ("KmsKeyId" .=) <$> _dMSEndpointKmsKeyId
-    , ("MongoDbSettings" .=) <$> _dMSEndpointMongoDbSettings
-    , ("Password" .=) <$> _dMSEndpointPassword
-    , ("Port" .=) <$> _dMSEndpointPort
-    , ("S3Settings" .=) <$> _dMSEndpointS3Settings
-    , ("ServerName" .=) <$> _dMSEndpointServerName
-    , ("SslMode" .=) <$> _dMSEndpointSslMode
-    , ("Tags" .=) <$> _dMSEndpointTags
-    , ("Username" .=) <$> _dMSEndpointUsername
+    [ fmap (("CertificateArn",) . toJSON) _dMSEndpointCertificateArn
+    , fmap (("DatabaseName",) . toJSON) _dMSEndpointDatabaseName
+    , fmap (("DynamoDbSettings",) . toJSON) _dMSEndpointDynamoDbSettings
+    , fmap (("EndpointIdentifier",) . toJSON) _dMSEndpointEndpointIdentifier
+    , (Just . ("EndpointType",) . toJSON) _dMSEndpointEndpointType
+    , (Just . ("EngineName",) . toJSON) _dMSEndpointEngineName
+    , fmap (("ExtraConnectionAttributes",) . toJSON) _dMSEndpointExtraConnectionAttributes
+    , fmap (("KmsKeyId",) . toJSON) _dMSEndpointKmsKeyId
+    , fmap (("MongoDbSettings",) . toJSON) _dMSEndpointMongoDbSettings
+    , fmap (("Password",) . toJSON) _dMSEndpointPassword
+    , fmap (("Port",) . toJSON . fmap Integer') _dMSEndpointPort
+    , fmap (("S3Settings",) . toJSON) _dMSEndpointS3Settings
+    , fmap (("ServerName",) . toJSON) _dMSEndpointServerName
+    , fmap (("SslMode",) . toJSON) _dMSEndpointSslMode
+    , fmap (("Tags",) . toJSON) _dMSEndpointTags
+    , fmap (("Username",) . toJSON) _dMSEndpointUsername
     ]
 
 instance FromJSON DMSEndpoint where
   parseJSON (Object obj) =
     DMSEndpoint <$>
-      obj .:? "CertificateArn" <*>
-      obj .:? "DatabaseName" <*>
-      obj .:? "DynamoDbSettings" <*>
-      obj .:? "EndpointIdentifier" <*>
-      obj .: "EndpointType" <*>
-      obj .: "EngineName" <*>
-      obj .:? "ExtraConnectionAttributes" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "MongoDbSettings" <*>
-      obj .:? "Password" <*>
-      obj .:? "Port" <*>
-      obj .:? "S3Settings" <*>
-      obj .:? "ServerName" <*>
-      obj .:? "SslMode" <*>
-      obj .:? "Tags" <*>
-      obj .:? "Username"
+      (obj .:? "CertificateArn") <*>
+      (obj .:? "DatabaseName") <*>
+      (obj .:? "DynamoDbSettings") <*>
+      (obj .:? "EndpointIdentifier") <*>
+      (obj .: "EndpointType") <*>
+      (obj .: "EngineName") <*>
+      (obj .:? "ExtraConnectionAttributes") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .:? "MongoDbSettings") <*>
+      (obj .:? "Password") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "S3Settings") <*>
+      (obj .:? "ServerName") <*>
+      (obj .:? "SslMode") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "Username")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSEndpoint' containing required fields as arguments.
@@ -148,7 +149,7 @@
 dmsePassword = lens _dMSEndpointPassword (\s a -> s { _dMSEndpointPassword = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-port
-dmsePort :: Lens' DMSEndpoint (Maybe (Val Integer'))
+dmsePort :: Lens' DMSEndpoint (Maybe (Val Integer))
 dmsePort = lens _dMSEndpointPort (\s a -> s { _dMSEndpointPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-s3settings
diff --git a/library-gen/Stratosphere/Resources/DMSEventSubscription.hs b/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
--- a/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
+++ b/library-gen/Stratosphere/Resources/DMSEventSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html
 
@@ -18,10 +19,10 @@
 -- 'dmsEventSubscription' for a more convenient constructor.
 data DMSEventSubscription =
   DMSEventSubscription
-  { _dMSEventSubscriptionEnabled :: Maybe (Val Bool')
-  , _dMSEventSubscriptionEventCategories :: Maybe [Val Text]
+  { _dMSEventSubscriptionEnabled :: Maybe (Val Bool)
+  , _dMSEventSubscriptionEventCategories :: Maybe (ValList Text)
   , _dMSEventSubscriptionSnsTopicArn :: Val Text
-  , _dMSEventSubscriptionSourceIds :: Maybe [Val Text]
+  , _dMSEventSubscriptionSourceIds :: Maybe (ValList Text)
   , _dMSEventSubscriptionSourceType :: Maybe (Val Text)
   , _dMSEventSubscriptionSubscriptionName :: Maybe (Val Text)
   , _dMSEventSubscriptionTags :: Maybe [Tag]
@@ -31,25 +32,25 @@
   toJSON DMSEventSubscription{..} =
     object $
     catMaybes
-    [ ("Enabled" .=) <$> _dMSEventSubscriptionEnabled
-    , ("EventCategories" .=) <$> _dMSEventSubscriptionEventCategories
-    , Just ("SnsTopicArn" .= _dMSEventSubscriptionSnsTopicArn)
-    , ("SourceIds" .=) <$> _dMSEventSubscriptionSourceIds
-    , ("SourceType" .=) <$> _dMSEventSubscriptionSourceType
-    , ("SubscriptionName" .=) <$> _dMSEventSubscriptionSubscriptionName
-    , ("Tags" .=) <$> _dMSEventSubscriptionTags
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _dMSEventSubscriptionEnabled
+    , fmap (("EventCategories",) . toJSON) _dMSEventSubscriptionEventCategories
+    , (Just . ("SnsTopicArn",) . toJSON) _dMSEventSubscriptionSnsTopicArn
+    , fmap (("SourceIds",) . toJSON) _dMSEventSubscriptionSourceIds
+    , fmap (("SourceType",) . toJSON) _dMSEventSubscriptionSourceType
+    , fmap (("SubscriptionName",) . toJSON) _dMSEventSubscriptionSubscriptionName
+    , fmap (("Tags",) . toJSON) _dMSEventSubscriptionTags
     ]
 
 instance FromJSON DMSEventSubscription where
   parseJSON (Object obj) =
     DMSEventSubscription <$>
-      obj .:? "Enabled" <*>
-      obj .:? "EventCategories" <*>
-      obj .: "SnsTopicArn" <*>
-      obj .:? "SourceIds" <*>
-      obj .:? "SourceType" <*>
-      obj .:? "SubscriptionName" <*>
-      obj .:? "Tags"
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "EventCategories") <*>
+      (obj .: "SnsTopicArn") <*>
+      (obj .:? "SourceIds") <*>
+      (obj .:? "SourceType") <*>
+      (obj .:? "SubscriptionName") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSEventSubscription' containing required fields as
@@ -69,11 +70,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-enabled
-dmsesEnabled :: Lens' DMSEventSubscription (Maybe (Val Bool'))
+dmsesEnabled :: Lens' DMSEventSubscription (Maybe (Val Bool))
 dmsesEnabled = lens _dMSEventSubscriptionEnabled (\s a -> s { _dMSEventSubscriptionEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-eventcategories
-dmsesEventCategories :: Lens' DMSEventSubscription (Maybe [Val Text])
+dmsesEventCategories :: Lens' DMSEventSubscription (Maybe (ValList Text))
 dmsesEventCategories = lens _dMSEventSubscriptionEventCategories (\s a -> s { _dMSEventSubscriptionEventCategories = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-snstopicarn
@@ -81,7 +82,7 @@
 dmsesSnsTopicArn = lens _dMSEventSubscriptionSnsTopicArn (\s a -> s { _dMSEventSubscriptionSnsTopicArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-sourceids
-dmsesSourceIds :: Lens' DMSEventSubscription (Maybe [Val Text])
+dmsesSourceIds :: Lens' DMSEventSubscription (Maybe (ValList Text))
 dmsesSourceIds = lens _dMSEventSubscriptionSourceIds (\s a -> s { _dMSEventSubscriptionSourceIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-sourcetype
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs b/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html
 
@@ -18,59 +19,59 @@
 -- 'dmsReplicationInstance' for a more convenient constructor.
 data DMSReplicationInstance =
   DMSReplicationInstance
-  { _dMSReplicationInstanceAllocatedStorage :: Maybe (Val Integer')
-  , _dMSReplicationInstanceAllowMajorVersionUpgrade :: Maybe (Val Bool')
-  , _dMSReplicationInstanceAutoMinorVersionUpgrade :: Maybe (Val Bool')
+  { _dMSReplicationInstanceAllocatedStorage :: Maybe (Val Integer)
+  , _dMSReplicationInstanceAllowMajorVersionUpgrade :: Maybe (Val Bool)
+  , _dMSReplicationInstanceAutoMinorVersionUpgrade :: Maybe (Val Bool)
   , _dMSReplicationInstanceAvailabilityZone :: Maybe (Val Text)
   , _dMSReplicationInstanceEngineVersion :: Maybe (Val Text)
   , _dMSReplicationInstanceKmsKeyId :: Maybe (Val Text)
-  , _dMSReplicationInstanceMultiAZ :: Maybe (Val Bool')
+  , _dMSReplicationInstanceMultiAZ :: Maybe (Val Bool)
   , _dMSReplicationInstancePreferredMaintenanceWindow :: Maybe (Val Text)
-  , _dMSReplicationInstancePubliclyAccessible :: Maybe (Val Bool')
+  , _dMSReplicationInstancePubliclyAccessible :: Maybe (Val Bool)
   , _dMSReplicationInstanceReplicationInstanceClass :: Val Text
   , _dMSReplicationInstanceReplicationInstanceIdentifier :: Maybe (Val Text)
   , _dMSReplicationInstanceReplicationSubnetGroupIdentifier :: Maybe (Val Text)
   , _dMSReplicationInstanceTags :: Maybe [Tag]
-  , _dMSReplicationInstanceVpcSecurityGroupIds :: Maybe [Val Text]
+  , _dMSReplicationInstanceVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON DMSReplicationInstance where
   toJSON DMSReplicationInstance{..} =
     object $
     catMaybes
-    [ ("AllocatedStorage" .=) <$> _dMSReplicationInstanceAllocatedStorage
-    , ("AllowMajorVersionUpgrade" .=) <$> _dMSReplicationInstanceAllowMajorVersionUpgrade
-    , ("AutoMinorVersionUpgrade" .=) <$> _dMSReplicationInstanceAutoMinorVersionUpgrade
-    , ("AvailabilityZone" .=) <$> _dMSReplicationInstanceAvailabilityZone
-    , ("EngineVersion" .=) <$> _dMSReplicationInstanceEngineVersion
-    , ("KmsKeyId" .=) <$> _dMSReplicationInstanceKmsKeyId
-    , ("MultiAZ" .=) <$> _dMSReplicationInstanceMultiAZ
-    , ("PreferredMaintenanceWindow" .=) <$> _dMSReplicationInstancePreferredMaintenanceWindow
-    , ("PubliclyAccessible" .=) <$> _dMSReplicationInstancePubliclyAccessible
-    , Just ("ReplicationInstanceClass" .= _dMSReplicationInstanceReplicationInstanceClass)
-    , ("ReplicationInstanceIdentifier" .=) <$> _dMSReplicationInstanceReplicationInstanceIdentifier
-    , ("ReplicationSubnetGroupIdentifier" .=) <$> _dMSReplicationInstanceReplicationSubnetGroupIdentifier
-    , ("Tags" .=) <$> _dMSReplicationInstanceTags
-    , ("VpcSecurityGroupIds" .=) <$> _dMSReplicationInstanceVpcSecurityGroupIds
+    [ fmap (("AllocatedStorage",) . toJSON . fmap Integer') _dMSReplicationInstanceAllocatedStorage
+    , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAllowMajorVersionUpgrade
+    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _dMSReplicationInstanceAutoMinorVersionUpgrade
+    , fmap (("AvailabilityZone",) . toJSON) _dMSReplicationInstanceAvailabilityZone
+    , fmap (("EngineVersion",) . toJSON) _dMSReplicationInstanceEngineVersion
+    , fmap (("KmsKeyId",) . toJSON) _dMSReplicationInstanceKmsKeyId
+    , fmap (("MultiAZ",) . toJSON . fmap Bool') _dMSReplicationInstanceMultiAZ
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _dMSReplicationInstancePreferredMaintenanceWindow
+    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _dMSReplicationInstancePubliclyAccessible
+    , (Just . ("ReplicationInstanceClass",) . toJSON) _dMSReplicationInstanceReplicationInstanceClass
+    , fmap (("ReplicationInstanceIdentifier",) . toJSON) _dMSReplicationInstanceReplicationInstanceIdentifier
+    , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationInstanceReplicationSubnetGroupIdentifier
+    , fmap (("Tags",) . toJSON) _dMSReplicationInstanceTags
+    , fmap (("VpcSecurityGroupIds",) . toJSON) _dMSReplicationInstanceVpcSecurityGroupIds
     ]
 
 instance FromJSON DMSReplicationInstance where
   parseJSON (Object obj) =
     DMSReplicationInstance <$>
-      obj .:? "AllocatedStorage" <*>
-      obj .:? "AllowMajorVersionUpgrade" <*>
-      obj .:? "AutoMinorVersionUpgrade" <*>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "EngineVersion" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "MultiAZ" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "PubliclyAccessible" <*>
-      obj .: "ReplicationInstanceClass" <*>
-      obj .:? "ReplicationInstanceIdentifier" <*>
-      obj .:? "ReplicationSubnetGroupIdentifier" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VpcSecurityGroupIds"
+      fmap (fmap (fmap unInteger')) (obj .:? "AllocatedStorage") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AllowMajorVersionUpgrade") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AutoMinorVersionUpgrade") <*>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "EngineVersion") <*>
+      (obj .:? "KmsKeyId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MultiAZ") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "PubliclyAccessible") <*>
+      (obj .: "ReplicationInstanceClass") <*>
+      (obj .:? "ReplicationInstanceIdentifier") <*>
+      (obj .:? "ReplicationSubnetGroupIdentifier") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcSecurityGroupIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSReplicationInstance' containing required fields as
@@ -97,15 +98,15 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-allocatedstorage
-dmsriAllocatedStorage :: Lens' DMSReplicationInstance (Maybe (Val Integer'))
+dmsriAllocatedStorage :: Lens' DMSReplicationInstance (Maybe (Val Integer))
 dmsriAllocatedStorage = lens _dMSReplicationInstanceAllocatedStorage (\s a -> s { _dMSReplicationInstanceAllocatedStorage = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-allowmajorversionupgrade
-dmsriAllowMajorVersionUpgrade :: Lens' DMSReplicationInstance (Maybe (Val Bool'))
+dmsriAllowMajorVersionUpgrade :: Lens' DMSReplicationInstance (Maybe (Val Bool))
 dmsriAllowMajorVersionUpgrade = lens _dMSReplicationInstanceAllowMajorVersionUpgrade (\s a -> s { _dMSReplicationInstanceAllowMajorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-autominorversionupgrade
-dmsriAutoMinorVersionUpgrade :: Lens' DMSReplicationInstance (Maybe (Val Bool'))
+dmsriAutoMinorVersionUpgrade :: Lens' DMSReplicationInstance (Maybe (Val Bool))
 dmsriAutoMinorVersionUpgrade = lens _dMSReplicationInstanceAutoMinorVersionUpgrade (\s a -> s { _dMSReplicationInstanceAutoMinorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-availabilityzone
@@ -121,7 +122,7 @@
 dmsriKmsKeyId = lens _dMSReplicationInstanceKmsKeyId (\s a -> s { _dMSReplicationInstanceKmsKeyId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-multiaz
-dmsriMultiAZ :: Lens' DMSReplicationInstance (Maybe (Val Bool'))
+dmsriMultiAZ :: Lens' DMSReplicationInstance (Maybe (Val Bool))
 dmsriMultiAZ = lens _dMSReplicationInstanceMultiAZ (\s a -> s { _dMSReplicationInstanceMultiAZ = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-preferredmaintenancewindow
@@ -129,7 +130,7 @@
 dmsriPreferredMaintenanceWindow = lens _dMSReplicationInstancePreferredMaintenanceWindow (\s a -> s { _dMSReplicationInstancePreferredMaintenanceWindow = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-publiclyaccessible
-dmsriPubliclyAccessible :: Lens' DMSReplicationInstance (Maybe (Val Bool'))
+dmsriPubliclyAccessible :: Lens' DMSReplicationInstance (Maybe (Val Bool))
 dmsriPubliclyAccessible = lens _dMSReplicationInstancePubliclyAccessible (\s a -> s { _dMSReplicationInstancePubliclyAccessible = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-replicationinstanceclass
@@ -149,5 +150,5 @@
 dmsriTags = lens _dMSReplicationInstanceTags (\s a -> s { _dMSReplicationInstanceTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-vpcsecuritygroupids
-dmsriVpcSecurityGroupIds :: Lens' DMSReplicationInstance (Maybe [Val Text])
+dmsriVpcSecurityGroupIds :: Lens' DMSReplicationInstance (Maybe (ValList Text))
 dmsriVpcSecurityGroupIds = lens _dMSReplicationInstanceVpcSecurityGroupIds (\s a -> s { _dMSReplicationInstanceVpcSecurityGroupIds = a })
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs b/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html
 
@@ -20,7 +21,7 @@
   DMSReplicationSubnetGroup
   { _dMSReplicationSubnetGroupReplicationSubnetGroupDescription :: Val Text
   , _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier :: Maybe (Val Text)
-  , _dMSReplicationSubnetGroupSubnetIds :: [Val Text]
+  , _dMSReplicationSubnetGroupSubnetIds :: ValList Text
   , _dMSReplicationSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -28,26 +29,26 @@
   toJSON DMSReplicationSubnetGroup{..} =
     object $
     catMaybes
-    [ Just ("ReplicationSubnetGroupDescription" .= _dMSReplicationSubnetGroupReplicationSubnetGroupDescription)
-    , ("ReplicationSubnetGroupIdentifier" .=) <$> _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier
-    , Just ("SubnetIds" .= _dMSReplicationSubnetGroupSubnetIds)
-    , ("Tags" .=) <$> _dMSReplicationSubnetGroupTags
+    [ (Just . ("ReplicationSubnetGroupDescription",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupDescription
+    , fmap (("ReplicationSubnetGroupIdentifier",) . toJSON) _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier
+    , (Just . ("SubnetIds",) . toJSON) _dMSReplicationSubnetGroupSubnetIds
+    , fmap (("Tags",) . toJSON) _dMSReplicationSubnetGroupTags
     ]
 
 instance FromJSON DMSReplicationSubnetGroup where
   parseJSON (Object obj) =
     DMSReplicationSubnetGroup <$>
-      obj .: "ReplicationSubnetGroupDescription" <*>
-      obj .:? "ReplicationSubnetGroupIdentifier" <*>
-      obj .: "SubnetIds" <*>
-      obj .:? "Tags"
+      (obj .: "ReplicationSubnetGroupDescription") <*>
+      (obj .:? "ReplicationSubnetGroupIdentifier") <*>
+      (obj .: "SubnetIds") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSReplicationSubnetGroup' containing required fields as
 -- arguments.
 dmsReplicationSubnetGroup
   :: Val Text -- ^ 'dmsrsgReplicationSubnetGroupDescription'
-  -> [Val Text] -- ^ 'dmsrsgSubnetIds'
+  -> ValList Text -- ^ 'dmsrsgSubnetIds'
   -> DMSReplicationSubnetGroup
 dmsReplicationSubnetGroup replicationSubnetGroupDescriptionarg subnetIdsarg =
   DMSReplicationSubnetGroup
@@ -66,7 +67,7 @@
 dmsrsgReplicationSubnetGroupIdentifier = lens _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier (\s a -> s { _dMSReplicationSubnetGroupReplicationSubnetGroupIdentifier = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-subnetids
-dmsrsgSubnetIds :: Lens' DMSReplicationSubnetGroup [Val Text]
+dmsrsgSubnetIds :: Lens' DMSReplicationSubnetGroup (ValList Text)
 dmsrsgSubnetIds = lens _dMSReplicationSubnetGroupSubnetIds (\s a -> s { _dMSReplicationSubnetGroupSubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-tags
diff --git a/library-gen/Stratosphere/Resources/DMSReplicationTask.hs b/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
--- a/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
+++ b/library-gen/Stratosphere/Resources/DMSReplicationTask.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html
 
@@ -18,7 +19,7 @@
 -- 'dmsReplicationTask' for a more convenient constructor.
 data DMSReplicationTask =
   DMSReplicationTask
-  { _dMSReplicationTaskCdcStartTime :: Maybe (Val Double')
+  { _dMSReplicationTaskCdcStartTime :: Maybe (Val Double)
   , _dMSReplicationTaskMigrationType :: Val Text
   , _dMSReplicationTaskReplicationInstanceArn :: Val Text
   , _dMSReplicationTaskReplicationTaskIdentifier :: Maybe (Val Text)
@@ -33,29 +34,29 @@
   toJSON DMSReplicationTask{..} =
     object $
     catMaybes
-    [ ("CdcStartTime" .=) <$> _dMSReplicationTaskCdcStartTime
-    , Just ("MigrationType" .= _dMSReplicationTaskMigrationType)
-    , Just ("ReplicationInstanceArn" .= _dMSReplicationTaskReplicationInstanceArn)
-    , ("ReplicationTaskIdentifier" .=) <$> _dMSReplicationTaskReplicationTaskIdentifier
-    , ("ReplicationTaskSettings" .=) <$> _dMSReplicationTaskReplicationTaskSettings
-    , Just ("SourceEndpointArn" .= _dMSReplicationTaskSourceEndpointArn)
-    , Just ("TableMappings" .= _dMSReplicationTaskTableMappings)
-    , ("Tags" .=) <$> _dMSReplicationTaskTags
-    , Just ("TargetEndpointArn" .= _dMSReplicationTaskTargetEndpointArn)
+    [ fmap (("CdcStartTime",) . toJSON . fmap Double') _dMSReplicationTaskCdcStartTime
+    , (Just . ("MigrationType",) . toJSON) _dMSReplicationTaskMigrationType
+    , (Just . ("ReplicationInstanceArn",) . toJSON) _dMSReplicationTaskReplicationInstanceArn
+    , fmap (("ReplicationTaskIdentifier",) . toJSON) _dMSReplicationTaskReplicationTaskIdentifier
+    , fmap (("ReplicationTaskSettings",) . toJSON) _dMSReplicationTaskReplicationTaskSettings
+    , (Just . ("SourceEndpointArn",) . toJSON) _dMSReplicationTaskSourceEndpointArn
+    , (Just . ("TableMappings",) . toJSON) _dMSReplicationTaskTableMappings
+    , fmap (("Tags",) . toJSON) _dMSReplicationTaskTags
+    , (Just . ("TargetEndpointArn",) . toJSON) _dMSReplicationTaskTargetEndpointArn
     ]
 
 instance FromJSON DMSReplicationTask where
   parseJSON (Object obj) =
     DMSReplicationTask <$>
-      obj .:? "CdcStartTime" <*>
-      obj .: "MigrationType" <*>
-      obj .: "ReplicationInstanceArn" <*>
-      obj .:? "ReplicationTaskIdentifier" <*>
-      obj .:? "ReplicationTaskSettings" <*>
-      obj .: "SourceEndpointArn" <*>
-      obj .: "TableMappings" <*>
-      obj .:? "Tags" <*>
-      obj .: "TargetEndpointArn"
+      fmap (fmap (fmap unDouble')) (obj .:? "CdcStartTime") <*>
+      (obj .: "MigrationType") <*>
+      (obj .: "ReplicationInstanceArn") <*>
+      (obj .:? "ReplicationTaskIdentifier") <*>
+      (obj .:? "ReplicationTaskSettings") <*>
+      (obj .: "SourceEndpointArn") <*>
+      (obj .: "TableMappings") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "TargetEndpointArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'DMSReplicationTask' containing required fields as
@@ -81,7 +82,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-cdcstarttime
-dmsrtCdcStartTime :: Lens' DMSReplicationTask (Maybe (Val Double'))
+dmsrtCdcStartTime :: Lens' DMSReplicationTask (Maybe (Val Double))
 dmsrtCdcStartTime = lens _dMSReplicationTaskCdcStartTime (\s a -> s { _dMSReplicationTaskCdcStartTime = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-migrationtype
diff --git a/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs b/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
--- a/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
+++ b/library-gen/Stratosphere/Resources/DataPipelinePipeline.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html
 
@@ -21,7 +22,7 @@
 -- 'dataPipelinePipeline' for a more convenient constructor.
 data DataPipelinePipeline =
   DataPipelinePipeline
-  { _dataPipelinePipelineActivate :: Maybe (Val Bool')
+  { _dataPipelinePipelineActivate :: Maybe (Val Bool)
   , _dataPipelinePipelineDescription :: Maybe (Val Text)
   , _dataPipelinePipelineName :: Val Text
   , _dataPipelinePipelineParameterObjects :: [DataPipelinePipelineParameterObject]
@@ -34,25 +35,25 @@
   toJSON DataPipelinePipeline{..} =
     object $
     catMaybes
-    [ ("Activate" .=) <$> _dataPipelinePipelineActivate
-    , ("Description" .=) <$> _dataPipelinePipelineDescription
-    , Just ("Name" .= _dataPipelinePipelineName)
-    , Just ("ParameterObjects" .= _dataPipelinePipelineParameterObjects)
-    , ("ParameterValues" .=) <$> _dataPipelinePipelineParameterValues
-    , ("PipelineObjects" .=) <$> _dataPipelinePipelinePipelineObjects
-    , ("PipelineTags" .=) <$> _dataPipelinePipelinePipelineTags
+    [ fmap (("Activate",) . toJSON . fmap Bool') _dataPipelinePipelineActivate
+    , fmap (("Description",) . toJSON) _dataPipelinePipelineDescription
+    , (Just . ("Name",) . toJSON) _dataPipelinePipelineName
+    , (Just . ("ParameterObjects",) . toJSON) _dataPipelinePipelineParameterObjects
+    , fmap (("ParameterValues",) . toJSON) _dataPipelinePipelineParameterValues
+    , fmap (("PipelineObjects",) . toJSON) _dataPipelinePipelinePipelineObjects
+    , fmap (("PipelineTags",) . toJSON) _dataPipelinePipelinePipelineTags
     ]
 
 instance FromJSON DataPipelinePipeline where
   parseJSON (Object obj) =
     DataPipelinePipeline <$>
-      obj .:? "Activate" <*>
-      obj .:? "Description" <*>
-      obj .: "Name" <*>
-      obj .: "ParameterObjects" <*>
-      obj .:? "ParameterValues" <*>
-      obj .:? "PipelineObjects" <*>
-      obj .:? "PipelineTags"
+      fmap (fmap (fmap unBool')) (obj .:? "Activate") <*>
+      (obj .:? "Description") <*>
+      (obj .: "Name") <*>
+      (obj .: "ParameterObjects") <*>
+      (obj .:? "ParameterValues") <*>
+      (obj .:? "PipelineObjects") <*>
+      (obj .:? "PipelineTags")
   parseJSON _ = mempty
 
 -- | Constructor for 'DataPipelinePipeline' containing required fields as
@@ -73,7 +74,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-activate
-dppActivate :: Lens' DataPipelinePipeline (Maybe (Val Bool'))
+dppActivate :: Lens' DataPipelinePipeline (Maybe (Val Bool))
 dppActivate = lens _dataPipelinePipelineActivate (\s a -> s { _dataPipelinePipelineActivate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-description
diff --git a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
--- a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
+++ b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html
 
@@ -18,8 +19,8 @@
 -- 'directoryServiceMicrosoftAD' for a more convenient constructor.
 data DirectoryServiceMicrosoftAD =
   DirectoryServiceMicrosoftAD
-  { _directoryServiceMicrosoftADCreateAlias :: Maybe (Val Bool')
-  , _directoryServiceMicrosoftADEnableSso :: Maybe (Val Bool')
+  { _directoryServiceMicrosoftADCreateAlias :: Maybe (Val Bool)
+  , _directoryServiceMicrosoftADEnableSso :: Maybe (Val Bool)
   , _directoryServiceMicrosoftADName :: Val Text
   , _directoryServiceMicrosoftADPassword :: Val Text
   , _directoryServiceMicrosoftADShortName :: Maybe (Val Text)
@@ -30,23 +31,23 @@
   toJSON DirectoryServiceMicrosoftAD{..} =
     object $
     catMaybes
-    [ ("CreateAlias" .=) <$> _directoryServiceMicrosoftADCreateAlias
-    , ("EnableSso" .=) <$> _directoryServiceMicrosoftADEnableSso
-    , Just ("Name" .= _directoryServiceMicrosoftADName)
-    , Just ("Password" .= _directoryServiceMicrosoftADPassword)
-    , ("ShortName" .=) <$> _directoryServiceMicrosoftADShortName
-    , Just ("VpcSettings" .= _directoryServiceMicrosoftADVpcSettings)
+    [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceMicrosoftADCreateAlias
+    , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceMicrosoftADEnableSso
+    , (Just . ("Name",) . toJSON) _directoryServiceMicrosoftADName
+    , (Just . ("Password",) . toJSON) _directoryServiceMicrosoftADPassword
+    , fmap (("ShortName",) . toJSON) _directoryServiceMicrosoftADShortName
+    , (Just . ("VpcSettings",) . toJSON) _directoryServiceMicrosoftADVpcSettings
     ]
 
 instance FromJSON DirectoryServiceMicrosoftAD where
   parseJSON (Object obj) =
     DirectoryServiceMicrosoftAD <$>
-      obj .:? "CreateAlias" <*>
-      obj .:? "EnableSso" <*>
-      obj .: "Name" <*>
-      obj .: "Password" <*>
-      obj .:? "ShortName" <*>
-      obj .: "VpcSettings"
+      fmap (fmap (fmap unBool')) (obj .:? "CreateAlias") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableSso") <*>
+      (obj .: "Name") <*>
+      (obj .: "Password") <*>
+      (obj .:? "ShortName") <*>
+      (obj .: "VpcSettings")
   parseJSON _ = mempty
 
 -- | Constructor for 'DirectoryServiceMicrosoftAD' containing required fields
@@ -67,11 +68,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-createalias
-dsmadCreateAlias :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool'))
+dsmadCreateAlias :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool))
 dsmadCreateAlias = lens _directoryServiceMicrosoftADCreateAlias (\s a -> s { _directoryServiceMicrosoftADCreateAlias = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-enablesso
-dsmadEnableSso :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool'))
+dsmadEnableSso :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool))
 dsmadEnableSso = lens _directoryServiceMicrosoftADEnableSso (\s a -> s { _directoryServiceMicrosoftADEnableSso = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-name
diff --git a/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs b/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
--- a/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
+++ b/library-gen/Stratosphere/Resources/DirectoryServiceSimpleAD.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html
 
@@ -18,9 +19,9 @@
 -- 'directoryServiceSimpleAD' for a more convenient constructor.
 data DirectoryServiceSimpleAD =
   DirectoryServiceSimpleAD
-  { _directoryServiceSimpleADCreateAlias :: Maybe (Val Bool')
+  { _directoryServiceSimpleADCreateAlias :: Maybe (Val Bool)
   , _directoryServiceSimpleADDescription :: Maybe (Val Text)
-  , _directoryServiceSimpleADEnableSso :: Maybe (Val Bool')
+  , _directoryServiceSimpleADEnableSso :: Maybe (Val Bool)
   , _directoryServiceSimpleADName :: Val Text
   , _directoryServiceSimpleADPassword :: Val Text
   , _directoryServiceSimpleADShortName :: Maybe (Val Text)
@@ -32,27 +33,27 @@
   toJSON DirectoryServiceSimpleAD{..} =
     object $
     catMaybes
-    [ ("CreateAlias" .=) <$> _directoryServiceSimpleADCreateAlias
-    , ("Description" .=) <$> _directoryServiceSimpleADDescription
-    , ("EnableSso" .=) <$> _directoryServiceSimpleADEnableSso
-    , Just ("Name" .= _directoryServiceSimpleADName)
-    , Just ("Password" .= _directoryServiceSimpleADPassword)
-    , ("ShortName" .=) <$> _directoryServiceSimpleADShortName
-    , Just ("Size" .= _directoryServiceSimpleADSize)
-    , Just ("VpcSettings" .= _directoryServiceSimpleADVpcSettings)
+    [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceSimpleADCreateAlias
+    , fmap (("Description",) . toJSON) _directoryServiceSimpleADDescription
+    , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceSimpleADEnableSso
+    , (Just . ("Name",) . toJSON) _directoryServiceSimpleADName
+    , (Just . ("Password",) . toJSON) _directoryServiceSimpleADPassword
+    , fmap (("ShortName",) . toJSON) _directoryServiceSimpleADShortName
+    , (Just . ("Size",) . toJSON) _directoryServiceSimpleADSize
+    , (Just . ("VpcSettings",) . toJSON) _directoryServiceSimpleADVpcSettings
     ]
 
 instance FromJSON DirectoryServiceSimpleAD where
   parseJSON (Object obj) =
     DirectoryServiceSimpleAD <$>
-      obj .:? "CreateAlias" <*>
-      obj .:? "Description" <*>
-      obj .:? "EnableSso" <*>
-      obj .: "Name" <*>
-      obj .: "Password" <*>
-      obj .:? "ShortName" <*>
-      obj .: "Size" <*>
-      obj .: "VpcSettings"
+      fmap (fmap (fmap unBool')) (obj .:? "CreateAlias") <*>
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableSso") <*>
+      (obj .: "Name") <*>
+      (obj .: "Password") <*>
+      (obj .:? "ShortName") <*>
+      (obj .: "Size") <*>
+      (obj .: "VpcSettings")
   parseJSON _ = mempty
 
 -- | Constructor for 'DirectoryServiceSimpleAD' containing required fields as
@@ -76,7 +77,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-createalias
-dssadCreateAlias :: Lens' DirectoryServiceSimpleAD (Maybe (Val Bool'))
+dssadCreateAlias :: Lens' DirectoryServiceSimpleAD (Maybe (Val Bool))
 dssadCreateAlias = lens _directoryServiceSimpleADCreateAlias (\s a -> s { _directoryServiceSimpleADCreateAlias = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-description
@@ -84,7 +85,7 @@
 dssadDescription = lens _directoryServiceSimpleADDescription (\s a -> s { _directoryServiceSimpleADDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-enablesso
-dssadEnableSso :: Lens' DirectoryServiceSimpleAD (Maybe (Val Bool'))
+dssadEnableSso :: Lens' DirectoryServiceSimpleAD (Maybe (Val Bool))
 dssadEnableSso = lens _directoryServiceSimpleADEnableSso (\s a -> s { _directoryServiceSimpleADEnableSso = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-name
diff --git a/library-gen/Stratosphere/Resources/DynamoDBTable.hs b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
--- a/library-gen/Stratosphere/Resources/DynamoDBTable.hs
+++ b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html
 
@@ -36,25 +37,25 @@
   toJSON DynamoDBTable{..} =
     object $
     catMaybes
-    [ Just ("AttributeDefinitions" .= _dynamoDBTableAttributeDefinitions)
-    , ("GlobalSecondaryIndexes" .=) <$> _dynamoDBTableGlobalSecondaryIndexes
-    , Just ("KeySchema" .= _dynamoDBTableKeySchema)
-    , ("LocalSecondaryIndexes" .=) <$> _dynamoDBTableLocalSecondaryIndexes
-    , Just ("ProvisionedThroughput" .= _dynamoDBTableProvisionedThroughput)
-    , ("StreamSpecification" .=) <$> _dynamoDBTableStreamSpecification
-    , ("TableName" .=) <$> _dynamoDBTableTableName
+    [ (Just . ("AttributeDefinitions",) . toJSON) _dynamoDBTableAttributeDefinitions
+    , fmap (("GlobalSecondaryIndexes",) . toJSON) _dynamoDBTableGlobalSecondaryIndexes
+    , (Just . ("KeySchema",) . toJSON) _dynamoDBTableKeySchema
+    , fmap (("LocalSecondaryIndexes",) . toJSON) _dynamoDBTableLocalSecondaryIndexes
+    , (Just . ("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
+    , fmap (("StreamSpecification",) . toJSON) _dynamoDBTableStreamSpecification
+    , fmap (("TableName",) . toJSON) _dynamoDBTableTableName
     ]
 
 instance FromJSON DynamoDBTable where
   parseJSON (Object obj) =
     DynamoDBTable <$>
-      obj .: "AttributeDefinitions" <*>
-      obj .:? "GlobalSecondaryIndexes" <*>
-      obj .: "KeySchema" <*>
-      obj .:? "LocalSecondaryIndexes" <*>
-      obj .: "ProvisionedThroughput" <*>
-      obj .:? "StreamSpecification" <*>
-      obj .:? "TableName"
+      (obj .: "AttributeDefinitions") <*>
+      (obj .:? "GlobalSecondaryIndexes") <*>
+      (obj .: "KeySchema") <*>
+      (obj .:? "LocalSecondaryIndexes") <*>
+      (obj .: "ProvisionedThroughput") <*>
+      (obj .:? "StreamSpecification") <*>
+      (obj .:? "TableName")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTable' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs b/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2CustomerGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html
 
@@ -18,7 +19,7 @@
 -- 'ec2CustomerGateway' for a more convenient constructor.
 data EC2CustomerGateway =
   EC2CustomerGateway
-  { _eC2CustomerGatewayBgpAsn :: Val Integer'
+  { _eC2CustomerGatewayBgpAsn :: Val Integer
   , _eC2CustomerGatewayIpAddress :: Val Text
   , _eC2CustomerGatewayTags :: Maybe [Tag]
   , _eC2CustomerGatewayType :: Val Text
@@ -28,25 +29,25 @@
   toJSON EC2CustomerGateway{..} =
     object $
     catMaybes
-    [ Just ("BgpAsn" .= _eC2CustomerGatewayBgpAsn)
-    , Just ("IpAddress" .= _eC2CustomerGatewayIpAddress)
-    , ("Tags" .=) <$> _eC2CustomerGatewayTags
-    , Just ("Type" .= _eC2CustomerGatewayType)
+    [ (Just . ("BgpAsn",) . toJSON . fmap Integer') _eC2CustomerGatewayBgpAsn
+    , (Just . ("IpAddress",) . toJSON) _eC2CustomerGatewayIpAddress
+    , fmap (("Tags",) . toJSON) _eC2CustomerGatewayTags
+    , (Just . ("Type",) . toJSON) _eC2CustomerGatewayType
     ]
 
 instance FromJSON EC2CustomerGateway where
   parseJSON (Object obj) =
     EC2CustomerGateway <$>
-      obj .: "BgpAsn" <*>
-      obj .: "IpAddress" <*>
-      obj .:? "Tags" <*>
-      obj .: "Type"
+      fmap (fmap unInteger') (obj .: "BgpAsn") <*>
+      (obj .: "IpAddress") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2CustomerGateway' containing required fields as
 -- arguments.
 ec2CustomerGateway
-  :: Val Integer' -- ^ 'eccgBgpAsn'
+  :: Val Integer -- ^ 'eccgBgpAsn'
   -> Val Text -- ^ 'eccgIpAddress'
   -> Val Text -- ^ 'eccgType'
   -> EC2CustomerGateway
@@ -59,7 +60,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-bgpasn
-eccgBgpAsn :: Lens' EC2CustomerGateway (Val Integer')
+eccgBgpAsn :: Lens' EC2CustomerGateway (Val Integer)
 eccgBgpAsn = lens _eC2CustomerGatewayBgpAsn (\s a -> s { _eC2CustomerGatewayBgpAsn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-ipaddress
diff --git a/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs b/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
--- a/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
+++ b/library-gen/Stratosphere/Resources/EC2DHCPOptions.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
 
@@ -19,10 +20,10 @@
 data EC2DHCPOptions =
   EC2DHCPOptions
   { _eC2DHCPOptionsDomainName :: Maybe (Val Text)
-  , _eC2DHCPOptionsDomainNameServers :: Maybe [Val Text]
-  , _eC2DHCPOptionsNetbiosNameServers :: Maybe [Val Text]
-  , _eC2DHCPOptionsNetbiosNodeType :: Maybe (Val Integer')
-  , _eC2DHCPOptionsNtpServers :: Maybe [Val Text]
+  , _eC2DHCPOptionsDomainNameServers :: Maybe (ValList Text)
+  , _eC2DHCPOptionsNetbiosNameServers :: Maybe (ValList Text)
+  , _eC2DHCPOptionsNetbiosNodeType :: Maybe (Val Integer)
+  , _eC2DHCPOptionsNtpServers :: Maybe (ValList Text)
   , _eC2DHCPOptionsTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -30,23 +31,23 @@
   toJSON EC2DHCPOptions{..} =
     object $
     catMaybes
-    [ ("DomainName" .=) <$> _eC2DHCPOptionsDomainName
-    , ("DomainNameServers" .=) <$> _eC2DHCPOptionsDomainNameServers
-    , ("NetbiosNameServers" .=) <$> _eC2DHCPOptionsNetbiosNameServers
-    , ("NetbiosNodeType" .=) <$> _eC2DHCPOptionsNetbiosNodeType
-    , ("NtpServers" .=) <$> _eC2DHCPOptionsNtpServers
-    , ("Tags" .=) <$> _eC2DHCPOptionsTags
+    [ fmap (("DomainName",) . toJSON) _eC2DHCPOptionsDomainName
+    , fmap (("DomainNameServers",) . toJSON) _eC2DHCPOptionsDomainNameServers
+    , fmap (("NetbiosNameServers",) . toJSON) _eC2DHCPOptionsNetbiosNameServers
+    , fmap (("NetbiosNodeType",) . toJSON . fmap Integer') _eC2DHCPOptionsNetbiosNodeType
+    , fmap (("NtpServers",) . toJSON) _eC2DHCPOptionsNtpServers
+    , fmap (("Tags",) . toJSON) _eC2DHCPOptionsTags
     ]
 
 instance FromJSON EC2DHCPOptions where
   parseJSON (Object obj) =
     EC2DHCPOptions <$>
-      obj .:? "DomainName" <*>
-      obj .:? "DomainNameServers" <*>
-      obj .:? "NetbiosNameServers" <*>
-      obj .:? "NetbiosNodeType" <*>
-      obj .:? "NtpServers" <*>
-      obj .:? "Tags"
+      (obj .:? "DomainName") <*>
+      (obj .:? "DomainNameServers") <*>
+      (obj .:? "NetbiosNameServers") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NetbiosNodeType") <*>
+      (obj .:? "NtpServers") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2DHCPOptions' containing required fields as arguments.
@@ -67,19 +68,19 @@
 ecdhcpoDomainName = lens _eC2DHCPOptionsDomainName (\s a -> s { _eC2DHCPOptionsDomainName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-domainnameservers
-ecdhcpoDomainNameServers :: Lens' EC2DHCPOptions (Maybe [Val Text])
+ecdhcpoDomainNameServers :: Lens' EC2DHCPOptions (Maybe (ValList Text))
 ecdhcpoDomainNameServers = lens _eC2DHCPOptionsDomainNameServers (\s a -> s { _eC2DHCPOptionsDomainNameServers = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-netbiosnameservers
-ecdhcpoNetbiosNameServers :: Lens' EC2DHCPOptions (Maybe [Val Text])
+ecdhcpoNetbiosNameServers :: Lens' EC2DHCPOptions (Maybe (ValList Text))
 ecdhcpoNetbiosNameServers = lens _eC2DHCPOptionsNetbiosNameServers (\s a -> s { _eC2DHCPOptionsNetbiosNameServers = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-netbiosnodetype
-ecdhcpoNetbiosNodeType :: Lens' EC2DHCPOptions (Maybe (Val Integer'))
+ecdhcpoNetbiosNodeType :: Lens' EC2DHCPOptions (Maybe (Val Integer))
 ecdhcpoNetbiosNodeType = lens _eC2DHCPOptionsNetbiosNodeType (\s a -> s { _eC2DHCPOptionsNetbiosNodeType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-ntpservers
-ecdhcpoNtpServers :: Lens' EC2DHCPOptions (Maybe [Val Text])
+ecdhcpoNtpServers :: Lens' EC2DHCPOptions (Maybe (ValList Text))
 ecdhcpoNtpServers = lens _eC2DHCPOptionsNtpServers (\s a -> s { _eC2DHCPOptionsNtpServers = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-tags
diff --git a/library-gen/Stratosphere/Resources/EC2EIP.hs b/library-gen/Stratosphere/Resources/EC2EIP.hs
--- a/library-gen/Stratosphere/Resources/EC2EIP.hs
+++ b/library-gen/Stratosphere/Resources/EC2EIP.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html
 
@@ -26,15 +27,15 @@
   toJSON EC2EIP{..} =
     object $
     catMaybes
-    [ ("Domain" .=) <$> _eC2EIPDomain
-    , ("InstanceId" .=) <$> _eC2EIPInstanceId
+    [ fmap (("Domain",) . toJSON) _eC2EIPDomain
+    , fmap (("InstanceId",) . toJSON) _eC2EIPInstanceId
     ]
 
 instance FromJSON EC2EIP where
   parseJSON (Object obj) =
     EC2EIP <$>
-      obj .:? "Domain" <*>
-      obj .:? "InstanceId"
+      (obj .:? "Domain") <*>
+      (obj .:? "InstanceId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2EIP' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs b/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2EIPAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html
 
@@ -29,21 +30,21 @@
   toJSON EC2EIPAssociation{..} =
     object $
     catMaybes
-    [ ("AllocationId" .=) <$> _eC2EIPAssociationAllocationId
-    , ("EIP" .=) <$> _eC2EIPAssociationEIP
-    , ("InstanceId" .=) <$> _eC2EIPAssociationInstanceId
-    , ("NetworkInterfaceId" .=) <$> _eC2EIPAssociationNetworkInterfaceId
-    , ("PrivateIpAddress" .=) <$> _eC2EIPAssociationPrivateIpAddress
+    [ fmap (("AllocationId",) . toJSON) _eC2EIPAssociationAllocationId
+    , fmap (("EIP",) . toJSON) _eC2EIPAssociationEIP
+    , fmap (("InstanceId",) . toJSON) _eC2EIPAssociationInstanceId
+    , fmap (("NetworkInterfaceId",) . toJSON) _eC2EIPAssociationNetworkInterfaceId
+    , fmap (("PrivateIpAddress",) . toJSON) _eC2EIPAssociationPrivateIpAddress
     ]
 
 instance FromJSON EC2EIPAssociation where
   parseJSON (Object obj) =
     EC2EIPAssociation <$>
-      obj .:? "AllocationId" <*>
-      obj .:? "EIP" <*>
-      obj .:? "InstanceId" <*>
-      obj .:? "NetworkInterfaceId" <*>
-      obj .:? "PrivateIpAddress"
+      (obj .:? "AllocationId") <*>
+      (obj .:? "EIP") <*>
+      (obj .:? "InstanceId") <*>
+      (obj .:? "NetworkInterfaceId") <*>
+      (obj .:? "PrivateIpAddress")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2EIPAssociation' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs b/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2EgressOnlyInternetGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html
 
@@ -25,13 +26,13 @@
   toJSON EC2EgressOnlyInternetGateway{..} =
     object $
     catMaybes
-    [ Just ("VpcId" .= _eC2EgressOnlyInternetGatewayVpcId)
+    [ (Just . ("VpcId",) . toJSON) _eC2EgressOnlyInternetGatewayVpcId
     ]
 
 instance FromJSON EC2EgressOnlyInternetGateway where
   parseJSON (Object obj) =
     EC2EgressOnlyInternetGateway <$>
-      obj .: "VpcId"
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2EgressOnlyInternetGateway' containing required fields
diff --git a/library-gen/Stratosphere/Resources/EC2FlowLog.hs b/library-gen/Stratosphere/Resources/EC2FlowLog.hs
--- a/library-gen/Stratosphere/Resources/EC2FlowLog.hs
+++ b/library-gen/Stratosphere/Resources/EC2FlowLog.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html
 
@@ -29,21 +30,21 @@
   toJSON EC2FlowLog{..} =
     object $
     catMaybes
-    [ Just ("DeliverLogsPermissionArn" .= _eC2FlowLogDeliverLogsPermissionArn)
-    , Just ("LogGroupName" .= _eC2FlowLogLogGroupName)
-    , Just ("ResourceId" .= _eC2FlowLogResourceId)
-    , Just ("ResourceType" .= _eC2FlowLogResourceType)
-    , Just ("TrafficType" .= _eC2FlowLogTrafficType)
+    [ (Just . ("DeliverLogsPermissionArn",) . toJSON) _eC2FlowLogDeliverLogsPermissionArn
+    , (Just . ("LogGroupName",) . toJSON) _eC2FlowLogLogGroupName
+    , (Just . ("ResourceId",) . toJSON) _eC2FlowLogResourceId
+    , (Just . ("ResourceType",) . toJSON) _eC2FlowLogResourceType
+    , (Just . ("TrafficType",) . toJSON) _eC2FlowLogTrafficType
     ]
 
 instance FromJSON EC2FlowLog where
   parseJSON (Object obj) =
     EC2FlowLog <$>
-      obj .: "DeliverLogsPermissionArn" <*>
-      obj .: "LogGroupName" <*>
-      obj .: "ResourceId" <*>
-      obj .: "ResourceType" <*>
-      obj .: "TrafficType"
+      (obj .: "DeliverLogsPermissionArn") <*>
+      (obj .: "LogGroupName") <*>
+      (obj .: "ResourceId") <*>
+      (obj .: "ResourceType") <*>
+      (obj .: "TrafficType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2FlowLog' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2Host.hs b/library-gen/Stratosphere/Resources/EC2Host.hs
--- a/library-gen/Stratosphere/Resources/EC2Host.hs
+++ b/library-gen/Stratosphere/Resources/EC2Host.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html
 
@@ -27,17 +28,17 @@
   toJSON EC2Host{..} =
     object $
     catMaybes
-    [ ("AutoPlacement" .=) <$> _eC2HostAutoPlacement
-    , Just ("AvailabilityZone" .= _eC2HostAvailabilityZone)
-    , Just ("InstanceType" .= _eC2HostInstanceType)
+    [ fmap (("AutoPlacement",) . toJSON) _eC2HostAutoPlacement
+    , (Just . ("AvailabilityZone",) . toJSON) _eC2HostAvailabilityZone
+    , (Just . ("InstanceType",) . toJSON) _eC2HostInstanceType
     ]
 
 instance FromJSON EC2Host where
   parseJSON (Object obj) =
     EC2Host <$>
-      obj .:? "AutoPlacement" <*>
-      obj .: "AvailabilityZone" <*>
-      obj .: "InstanceType"
+      (obj .:? "AutoPlacement") <*>
+      (obj .: "AvailabilityZone") <*>
+      (obj .: "InstanceType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2Host' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2Instance.hs b/library-gen/Stratosphere/Resources/EC2Instance.hs
--- a/library-gen/Stratosphere/Resources/EC2Instance.hs
+++ b/library-gen/Stratosphere/Resources/EC2Instance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html
 
@@ -27,25 +28,25 @@
   , _eC2InstanceAffinity :: Maybe (Val Text)
   , _eC2InstanceAvailabilityZone :: Maybe (Val Text)
   , _eC2InstanceBlockDeviceMappings :: Maybe [EC2InstanceBlockDeviceMapping]
-  , _eC2InstanceDisableApiTermination :: Maybe (Val Bool')
-  , _eC2InstanceEbsOptimized :: Maybe (Val Bool')
+  , _eC2InstanceDisableApiTermination :: Maybe (Val Bool)
+  , _eC2InstanceEbsOptimized :: Maybe (Val Bool)
   , _eC2InstanceHostId :: Maybe (Val Text)
   , _eC2InstanceIamInstanceProfile :: Maybe (Val Text)
   , _eC2InstanceImageId :: Val Text
   , _eC2InstanceInstanceInitiatedShutdownBehavior :: Maybe (Val Text)
   , _eC2InstanceInstanceType :: Maybe (Val Text)
-  , _eC2InstanceIpv6AddressCount :: Maybe (Val Integer')
+  , _eC2InstanceIpv6AddressCount :: Maybe (Val Integer)
   , _eC2InstanceIpv6Addresses :: Maybe [EC2InstanceInstanceIpv6Address]
   , _eC2InstanceKernelId :: Maybe (Val Text)
   , _eC2InstanceKeyName :: Maybe (Val Text)
-  , _eC2InstanceMonitoring :: Maybe (Val Bool')
+  , _eC2InstanceMonitoring :: Maybe (Val Bool)
   , _eC2InstanceNetworkInterfaces :: Maybe [EC2InstanceNetworkInterface]
   , _eC2InstancePlacementGroupName :: Maybe (Val Text)
   , _eC2InstancePrivateIpAddress :: Maybe (Val Text)
   , _eC2InstanceRamdiskId :: Maybe (Val Text)
-  , _eC2InstanceSecurityGroupIds :: Maybe [Val Text]
-  , _eC2InstanceSecurityGroups :: Maybe [Val Text]
-  , _eC2InstanceSourceDestCheck :: Maybe (Val Bool')
+  , _eC2InstanceSecurityGroupIds :: Maybe (ValList Text)
+  , _eC2InstanceSecurityGroups :: Maybe (ValList Text)
+  , _eC2InstanceSourceDestCheck :: Maybe (Val Bool)
   , _eC2InstanceSsmAssociations :: Maybe [EC2InstanceSsmAssociation]
   , _eC2InstanceSubnetId :: Maybe (Val Text)
   , _eC2InstanceTags :: Maybe [Tag]
@@ -58,69 +59,69 @@
   toJSON EC2Instance{..} =
     object $
     catMaybes
-    [ ("AdditionalInfo" .=) <$> _eC2InstanceAdditionalInfo
-    , ("Affinity" .=) <$> _eC2InstanceAffinity
-    , ("AvailabilityZone" .=) <$> _eC2InstanceAvailabilityZone
-    , ("BlockDeviceMappings" .=) <$> _eC2InstanceBlockDeviceMappings
-    , ("DisableApiTermination" .=) <$> _eC2InstanceDisableApiTermination
-    , ("EbsOptimized" .=) <$> _eC2InstanceEbsOptimized
-    , ("HostId" .=) <$> _eC2InstanceHostId
-    , ("IamInstanceProfile" .=) <$> _eC2InstanceIamInstanceProfile
-    , Just ("ImageId" .= _eC2InstanceImageId)
-    , ("InstanceInitiatedShutdownBehavior" .=) <$> _eC2InstanceInstanceInitiatedShutdownBehavior
-    , ("InstanceType" .=) <$> _eC2InstanceInstanceType
-    , ("Ipv6AddressCount" .=) <$> _eC2InstanceIpv6AddressCount
-    , ("Ipv6Addresses" .=) <$> _eC2InstanceIpv6Addresses
-    , ("KernelId" .=) <$> _eC2InstanceKernelId
-    , ("KeyName" .=) <$> _eC2InstanceKeyName
-    , ("Monitoring" .=) <$> _eC2InstanceMonitoring
-    , ("NetworkInterfaces" .=) <$> _eC2InstanceNetworkInterfaces
-    , ("PlacementGroupName" .=) <$> _eC2InstancePlacementGroupName
-    , ("PrivateIpAddress" .=) <$> _eC2InstancePrivateIpAddress
-    , ("RamdiskId" .=) <$> _eC2InstanceRamdiskId
-    , ("SecurityGroupIds" .=) <$> _eC2InstanceSecurityGroupIds
-    , ("SecurityGroups" .=) <$> _eC2InstanceSecurityGroups
-    , ("SourceDestCheck" .=) <$> _eC2InstanceSourceDestCheck
-    , ("SsmAssociations" .=) <$> _eC2InstanceSsmAssociations
-    , ("SubnetId" .=) <$> _eC2InstanceSubnetId
-    , ("Tags" .=) <$> _eC2InstanceTags
-    , ("Tenancy" .=) <$> _eC2InstanceTenancy
-    , ("UserData" .=) <$> _eC2InstanceUserData
-    , ("Volumes" .=) <$> _eC2InstanceVolumes
+    [ fmap (("AdditionalInfo",) . toJSON) _eC2InstanceAdditionalInfo
+    , fmap (("Affinity",) . toJSON) _eC2InstanceAffinity
+    , fmap (("AvailabilityZone",) . toJSON) _eC2InstanceAvailabilityZone
+    , fmap (("BlockDeviceMappings",) . toJSON) _eC2InstanceBlockDeviceMappings
+    , fmap (("DisableApiTermination",) . toJSON . fmap Bool') _eC2InstanceDisableApiTermination
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eC2InstanceEbsOptimized
+    , fmap (("HostId",) . toJSON) _eC2InstanceHostId
+    , fmap (("IamInstanceProfile",) . toJSON) _eC2InstanceIamInstanceProfile
+    , (Just . ("ImageId",) . toJSON) _eC2InstanceImageId
+    , fmap (("InstanceInitiatedShutdownBehavior",) . toJSON) _eC2InstanceInstanceInitiatedShutdownBehavior
+    , fmap (("InstanceType",) . toJSON) _eC2InstanceInstanceType
+    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2InstanceIpv6AddressCount
+    , fmap (("Ipv6Addresses",) . toJSON) _eC2InstanceIpv6Addresses
+    , fmap (("KernelId",) . toJSON) _eC2InstanceKernelId
+    , fmap (("KeyName",) . toJSON) _eC2InstanceKeyName
+    , fmap (("Monitoring",) . toJSON . fmap Bool') _eC2InstanceMonitoring
+    , fmap (("NetworkInterfaces",) . toJSON) _eC2InstanceNetworkInterfaces
+    , fmap (("PlacementGroupName",) . toJSON) _eC2InstancePlacementGroupName
+    , fmap (("PrivateIpAddress",) . toJSON) _eC2InstancePrivateIpAddress
+    , fmap (("RamdiskId",) . toJSON) _eC2InstanceRamdiskId
+    , fmap (("SecurityGroupIds",) . toJSON) _eC2InstanceSecurityGroupIds
+    , fmap (("SecurityGroups",) . toJSON) _eC2InstanceSecurityGroups
+    , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2InstanceSourceDestCheck
+    , fmap (("SsmAssociations",) . toJSON) _eC2InstanceSsmAssociations
+    , fmap (("SubnetId",) . toJSON) _eC2InstanceSubnetId
+    , fmap (("Tags",) . toJSON) _eC2InstanceTags
+    , fmap (("Tenancy",) . toJSON) _eC2InstanceTenancy
+    , fmap (("UserData",) . toJSON) _eC2InstanceUserData
+    , fmap (("Volumes",) . toJSON) _eC2InstanceVolumes
     ]
 
 instance FromJSON EC2Instance where
   parseJSON (Object obj) =
     EC2Instance <$>
-      obj .:? "AdditionalInfo" <*>
-      obj .:? "Affinity" <*>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "BlockDeviceMappings" <*>
-      obj .:? "DisableApiTermination" <*>
-      obj .:? "EbsOptimized" <*>
-      obj .:? "HostId" <*>
-      obj .:? "IamInstanceProfile" <*>
-      obj .: "ImageId" <*>
-      obj .:? "InstanceInitiatedShutdownBehavior" <*>
-      obj .:? "InstanceType" <*>
-      obj .:? "Ipv6AddressCount" <*>
-      obj .:? "Ipv6Addresses" <*>
-      obj .:? "KernelId" <*>
-      obj .:? "KeyName" <*>
-      obj .:? "Monitoring" <*>
-      obj .:? "NetworkInterfaces" <*>
-      obj .:? "PlacementGroupName" <*>
-      obj .:? "PrivateIpAddress" <*>
-      obj .:? "RamdiskId" <*>
-      obj .:? "SecurityGroupIds" <*>
-      obj .:? "SecurityGroups" <*>
-      obj .:? "SourceDestCheck" <*>
-      obj .:? "SsmAssociations" <*>
-      obj .:? "SubnetId" <*>
-      obj .:? "Tags" <*>
-      obj .:? "Tenancy" <*>
-      obj .:? "UserData" <*>
-      obj .:? "Volumes"
+      (obj .:? "AdditionalInfo") <*>
+      (obj .:? "Affinity") <*>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "BlockDeviceMappings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableApiTermination") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized") <*>
+      (obj .:? "HostId") <*>
+      (obj .:? "IamInstanceProfile") <*>
+      (obj .: "ImageId") <*>
+      (obj .:? "InstanceInitiatedShutdownBehavior") <*>
+      (obj .:? "InstanceType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Ipv6AddressCount") <*>
+      (obj .:? "Ipv6Addresses") <*>
+      (obj .:? "KernelId") <*>
+      (obj .:? "KeyName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Monitoring") <*>
+      (obj .:? "NetworkInterfaces") <*>
+      (obj .:? "PlacementGroupName") <*>
+      (obj .:? "PrivateIpAddress") <*>
+      (obj .:? "RamdiskId") <*>
+      (obj .:? "SecurityGroupIds") <*>
+      (obj .:? "SecurityGroups") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "SourceDestCheck") <*>
+      (obj .:? "SsmAssociations") <*>
+      (obj .:? "SubnetId") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "Tenancy") <*>
+      (obj .:? "UserData") <*>
+      (obj .:? "Volumes")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2Instance' containing required fields as arguments.
@@ -177,11 +178,11 @@
 eciBlockDeviceMappings = lens _eC2InstanceBlockDeviceMappings (\s a -> s { _eC2InstanceBlockDeviceMappings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-disableapitermination
-eciDisableApiTermination :: Lens' EC2Instance (Maybe (Val Bool'))
+eciDisableApiTermination :: Lens' EC2Instance (Maybe (Val Bool))
 eciDisableApiTermination = lens _eC2InstanceDisableApiTermination (\s a -> s { _eC2InstanceDisableApiTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ebsoptimized
-eciEbsOptimized :: Lens' EC2Instance (Maybe (Val Bool'))
+eciEbsOptimized :: Lens' EC2Instance (Maybe (Val Bool))
 eciEbsOptimized = lens _eC2InstanceEbsOptimized (\s a -> s { _eC2InstanceEbsOptimized = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-hostid
@@ -205,7 +206,7 @@
 eciInstanceType = lens _eC2InstanceInstanceType (\s a -> s { _eC2InstanceInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ipv6addresscount
-eciIpv6AddressCount :: Lens' EC2Instance (Maybe (Val Integer'))
+eciIpv6AddressCount :: Lens' EC2Instance (Maybe (Val Integer))
 eciIpv6AddressCount = lens _eC2InstanceIpv6AddressCount (\s a -> s { _eC2InstanceIpv6AddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ipv6addresses
@@ -221,7 +222,7 @@
 eciKeyName = lens _eC2InstanceKeyName (\s a -> s { _eC2InstanceKeyName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-monitoring
-eciMonitoring :: Lens' EC2Instance (Maybe (Val Bool'))
+eciMonitoring :: Lens' EC2Instance (Maybe (Val Bool))
 eciMonitoring = lens _eC2InstanceMonitoring (\s a -> s { _eC2InstanceMonitoring = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-networkinterfaces
@@ -241,15 +242,15 @@
 eciRamdiskId = lens _eC2InstanceRamdiskId (\s a -> s { _eC2InstanceRamdiskId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-securitygroupids
-eciSecurityGroupIds :: Lens' EC2Instance (Maybe [Val Text])
+eciSecurityGroupIds :: Lens' EC2Instance (Maybe (ValList Text))
 eciSecurityGroupIds = lens _eC2InstanceSecurityGroupIds (\s a -> s { _eC2InstanceSecurityGroupIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-securitygroups
-eciSecurityGroups :: Lens' EC2Instance (Maybe [Val Text])
+eciSecurityGroups :: Lens' EC2Instance (Maybe (ValList Text))
 eciSecurityGroups = lens _eC2InstanceSecurityGroups (\s a -> s { _eC2InstanceSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-sourcedestcheck
-eciSourceDestCheck :: Lens' EC2Instance (Maybe (Val Bool'))
+eciSourceDestCheck :: Lens' EC2Instance (Maybe (Val Bool))
 eciSourceDestCheck = lens _eC2InstanceSourceDestCheck (\s a -> s { _eC2InstanceSourceDestCheck = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ssmassociations
diff --git a/library-gen/Stratosphere/Resources/EC2InternetGateway.hs b/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2InternetGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html
 
@@ -25,13 +26,13 @@
   toJSON EC2InternetGateway{..} =
     object $
     catMaybes
-    [ ("Tags" .=) <$> _eC2InternetGatewayTags
+    [ fmap (("Tags",) . toJSON) _eC2InternetGatewayTags
     ]
 
 instance FromJSON EC2InternetGateway where
   parseJSON (Object obj) =
     EC2InternetGateway <$>
-      obj .:? "Tags"
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2InternetGateway' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2NatGateway.hs b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2NatGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html
 
@@ -26,15 +27,15 @@
   toJSON EC2NatGateway{..} =
     object $
     catMaybes
-    [ Just ("AllocationId" .= _eC2NatGatewayAllocationId)
-    , Just ("SubnetId" .= _eC2NatGatewaySubnetId)
+    [ (Just . ("AllocationId",) . toJSON) _eC2NatGatewayAllocationId
+    , (Just . ("SubnetId",) . toJSON) _eC2NatGatewaySubnetId
     ]
 
 instance FromJSON EC2NatGateway where
   parseJSON (Object obj) =
     EC2NatGateway <$>
-      obj .: "AllocationId" <*>
-      obj .: "SubnetId"
+      (obj .: "AllocationId") <*>
+      (obj .: "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NatGateway' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs b/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkAcl.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html
 
@@ -26,15 +27,15 @@
   toJSON EC2NetworkAcl{..} =
     object $
     catMaybes
-    [ ("Tags" .=) <$> _eC2NetworkAclTags
-    , Just ("VpcId" .= _eC2NetworkAclVpcId)
+    [ fmap (("Tags",) . toJSON) _eC2NetworkAclTags
+    , (Just . ("VpcId",) . toJSON) _eC2NetworkAclVpcId
     ]
 
 instance FromJSON EC2NetworkAcl where
   parseJSON (Object obj) =
     EC2NetworkAcl <$>
-      obj .:? "Tags" <*>
-      obj .: "VpcId"
+      (obj .:? "Tags") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkAcl' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs b/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkAclEntry.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html
 
@@ -20,43 +21,43 @@
 data EC2NetworkAclEntry =
   EC2NetworkAclEntry
   { _eC2NetworkAclEntryCidrBlock :: Val Text
-  , _eC2NetworkAclEntryEgress :: Maybe (Val Bool')
+  , _eC2NetworkAclEntryEgress :: Maybe (Val Bool)
   , _eC2NetworkAclEntryIcmp :: Maybe EC2NetworkAclEntryIcmp
   , _eC2NetworkAclEntryIpv6CidrBlock :: Maybe (Val Text)
   , _eC2NetworkAclEntryNetworkAclId :: Val Text
   , _eC2NetworkAclEntryPortRange :: Maybe EC2NetworkAclEntryPortRange
-  , _eC2NetworkAclEntryProtocol :: Val Integer'
+  , _eC2NetworkAclEntryProtocol :: Val Integer
   , _eC2NetworkAclEntryRuleAction :: Val Text
-  , _eC2NetworkAclEntryRuleNumber :: Val Integer'
+  , _eC2NetworkAclEntryRuleNumber :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON EC2NetworkAclEntry where
   toJSON EC2NetworkAclEntry{..} =
     object $
     catMaybes
-    [ Just ("CidrBlock" .= _eC2NetworkAclEntryCidrBlock)
-    , ("Egress" .=) <$> _eC2NetworkAclEntryEgress
-    , ("Icmp" .=) <$> _eC2NetworkAclEntryIcmp
-    , ("Ipv6CidrBlock" .=) <$> _eC2NetworkAclEntryIpv6CidrBlock
-    , Just ("NetworkAclId" .= _eC2NetworkAclEntryNetworkAclId)
-    , ("PortRange" .=) <$> _eC2NetworkAclEntryPortRange
-    , Just ("Protocol" .= _eC2NetworkAclEntryProtocol)
-    , Just ("RuleAction" .= _eC2NetworkAclEntryRuleAction)
-    , Just ("RuleNumber" .= _eC2NetworkAclEntryRuleNumber)
+    [ (Just . ("CidrBlock",) . toJSON) _eC2NetworkAclEntryCidrBlock
+    , fmap (("Egress",) . toJSON . fmap Bool') _eC2NetworkAclEntryEgress
+    , fmap (("Icmp",) . toJSON) _eC2NetworkAclEntryIcmp
+    , fmap (("Ipv6CidrBlock",) . toJSON) _eC2NetworkAclEntryIpv6CidrBlock
+    , (Just . ("NetworkAclId",) . toJSON) _eC2NetworkAclEntryNetworkAclId
+    , fmap (("PortRange",) . toJSON) _eC2NetworkAclEntryPortRange
+    , (Just . ("Protocol",) . toJSON . fmap Integer') _eC2NetworkAclEntryProtocol
+    , (Just . ("RuleAction",) . toJSON) _eC2NetworkAclEntryRuleAction
+    , (Just . ("RuleNumber",) . toJSON . fmap Integer') _eC2NetworkAclEntryRuleNumber
     ]
 
 instance FromJSON EC2NetworkAclEntry where
   parseJSON (Object obj) =
     EC2NetworkAclEntry <$>
-      obj .: "CidrBlock" <*>
-      obj .:? "Egress" <*>
-      obj .:? "Icmp" <*>
-      obj .:? "Ipv6CidrBlock" <*>
-      obj .: "NetworkAclId" <*>
-      obj .:? "PortRange" <*>
-      obj .: "Protocol" <*>
-      obj .: "RuleAction" <*>
-      obj .: "RuleNumber"
+      (obj .: "CidrBlock") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Egress") <*>
+      (obj .:? "Icmp") <*>
+      (obj .:? "Ipv6CidrBlock") <*>
+      (obj .: "NetworkAclId") <*>
+      (obj .:? "PortRange") <*>
+      fmap (fmap unInteger') (obj .: "Protocol") <*>
+      (obj .: "RuleAction") <*>
+      fmap (fmap unInteger') (obj .: "RuleNumber")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkAclEntry' containing required fields as
@@ -64,9 +65,9 @@
 ec2NetworkAclEntry
   :: Val Text -- ^ 'ecnaeCidrBlock'
   -> Val Text -- ^ 'ecnaeNetworkAclId'
-  -> Val Integer' -- ^ 'ecnaeProtocol'
+  -> Val Integer -- ^ 'ecnaeProtocol'
   -> Val Text -- ^ 'ecnaeRuleAction'
-  -> Val Integer' -- ^ 'ecnaeRuleNumber'
+  -> Val Integer -- ^ 'ecnaeRuleNumber'
   -> EC2NetworkAclEntry
 ec2NetworkAclEntry cidrBlockarg networkAclIdarg protocolarg ruleActionarg ruleNumberarg =
   EC2NetworkAclEntry
@@ -86,7 +87,7 @@
 ecnaeCidrBlock = lens _eC2NetworkAclEntryCidrBlock (\s a -> s { _eC2NetworkAclEntryCidrBlock = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-egress
-ecnaeEgress :: Lens' EC2NetworkAclEntry (Maybe (Val Bool'))
+ecnaeEgress :: Lens' EC2NetworkAclEntry (Maybe (Val Bool))
 ecnaeEgress = lens _eC2NetworkAclEntryEgress (\s a -> s { _eC2NetworkAclEntryEgress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-icmp
@@ -106,7 +107,7 @@
 ecnaePortRange = lens _eC2NetworkAclEntryPortRange (\s a -> s { _eC2NetworkAclEntryPortRange = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-protocol
-ecnaeProtocol :: Lens' EC2NetworkAclEntry (Val Integer')
+ecnaeProtocol :: Lens' EC2NetworkAclEntry (Val Integer)
 ecnaeProtocol = lens _eC2NetworkAclEntryProtocol (\s a -> s { _eC2NetworkAclEntryProtocol = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-ruleaction
@@ -114,5 +115,5 @@
 ecnaeRuleAction = lens _eC2NetworkAclEntryRuleAction (\s a -> s { _eC2NetworkAclEntryRuleAction = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-rulenumber
-ecnaeRuleNumber :: Lens' EC2NetworkAclEntry (Val Integer')
+ecnaeRuleNumber :: Lens' EC2NetworkAclEntry (Val Integer)
 ecnaeRuleNumber = lens _eC2NetworkAclEntryRuleNumber (\s a -> s { _eC2NetworkAclEntryRuleNumber = a })
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterface.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html
 
@@ -21,14 +22,14 @@
 data EC2NetworkInterface =
   EC2NetworkInterface
   { _eC2NetworkInterfaceDescription :: Maybe (Val Text)
-  , _eC2NetworkInterfaceGroupSet :: Maybe [Val Text]
+  , _eC2NetworkInterfaceGroupSet :: Maybe (ValList Text)
   , _eC2NetworkInterfaceInterfaceType :: Maybe (Val Text)
-  , _eC2NetworkInterfaceIpv6AddressCount :: Maybe (Val Integer')
+  , _eC2NetworkInterfaceIpv6AddressCount :: Maybe (Val Integer)
   , _eC2NetworkInterfaceIpv6Addresses :: Maybe EC2NetworkInterfaceInstanceIpv6Address
   , _eC2NetworkInterfacePrivateIpAddress :: Maybe (Val Text)
   , _eC2NetworkInterfacePrivateIpAddresses :: Maybe [EC2NetworkInterfacePrivateIpAddressSpecification]
-  , _eC2NetworkInterfaceSecondaryPrivateIpAddressCount :: Maybe (Val Integer')
-  , _eC2NetworkInterfaceSourceDestCheck :: Maybe (Val Bool')
+  , _eC2NetworkInterfaceSecondaryPrivateIpAddressCount :: Maybe (Val Integer)
+  , _eC2NetworkInterfaceSourceDestCheck :: Maybe (Val Bool)
   , _eC2NetworkInterfaceSubnetId :: Val Text
   , _eC2NetworkInterfaceTags :: Maybe [Tag]
   } deriving (Show, Eq)
@@ -37,33 +38,33 @@
   toJSON EC2NetworkInterface{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _eC2NetworkInterfaceDescription
-    , ("GroupSet" .=) <$> _eC2NetworkInterfaceGroupSet
-    , ("InterfaceType" .=) <$> _eC2NetworkInterfaceInterfaceType
-    , ("Ipv6AddressCount" .=) <$> _eC2NetworkInterfaceIpv6AddressCount
-    , ("Ipv6Addresses" .=) <$> _eC2NetworkInterfaceIpv6Addresses
-    , ("PrivateIpAddress" .=) <$> _eC2NetworkInterfacePrivateIpAddress
-    , ("PrivateIpAddresses" .=) <$> _eC2NetworkInterfacePrivateIpAddresses
-    , ("SecondaryPrivateIpAddressCount" .=) <$> _eC2NetworkInterfaceSecondaryPrivateIpAddressCount
-    , ("SourceDestCheck" .=) <$> _eC2NetworkInterfaceSourceDestCheck
-    , Just ("SubnetId" .= _eC2NetworkInterfaceSubnetId)
-    , ("Tags" .=) <$> _eC2NetworkInterfaceTags
+    [ fmap (("Description",) . toJSON) _eC2NetworkInterfaceDescription
+    , fmap (("GroupSet",) . toJSON) _eC2NetworkInterfaceGroupSet
+    , fmap (("InterfaceType",) . toJSON) _eC2NetworkInterfaceInterfaceType
+    , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceIpv6AddressCount
+    , fmap (("Ipv6Addresses",) . toJSON) _eC2NetworkInterfaceIpv6Addresses
+    , fmap (("PrivateIpAddress",) . toJSON) _eC2NetworkInterfacePrivateIpAddress
+    , fmap (("PrivateIpAddresses",) . toJSON) _eC2NetworkInterfacePrivateIpAddresses
+    , fmap (("SecondaryPrivateIpAddressCount",) . toJSON . fmap Integer') _eC2NetworkInterfaceSecondaryPrivateIpAddressCount
+    , fmap (("SourceDestCheck",) . toJSON . fmap Bool') _eC2NetworkInterfaceSourceDestCheck
+    , (Just . ("SubnetId",) . toJSON) _eC2NetworkInterfaceSubnetId
+    , fmap (("Tags",) . toJSON) _eC2NetworkInterfaceTags
     ]
 
 instance FromJSON EC2NetworkInterface where
   parseJSON (Object obj) =
     EC2NetworkInterface <$>
-      obj .:? "Description" <*>
-      obj .:? "GroupSet" <*>
-      obj .:? "InterfaceType" <*>
-      obj .:? "Ipv6AddressCount" <*>
-      obj .:? "Ipv6Addresses" <*>
-      obj .:? "PrivateIpAddress" <*>
-      obj .:? "PrivateIpAddresses" <*>
-      obj .:? "SecondaryPrivateIpAddressCount" <*>
-      obj .:? "SourceDestCheck" <*>
-      obj .: "SubnetId" <*>
-      obj .:? "Tags"
+      (obj .:? "Description") <*>
+      (obj .:? "GroupSet") <*>
+      (obj .:? "InterfaceType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Ipv6AddressCount") <*>
+      (obj .:? "Ipv6Addresses") <*>
+      (obj .:? "PrivateIpAddress") <*>
+      (obj .:? "PrivateIpAddresses") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SecondaryPrivateIpAddressCount") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "SourceDestCheck") <*>
+      (obj .: "SubnetId") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkInterface' containing required fields as
@@ -91,7 +92,7 @@
 ecniDescription = lens _eC2NetworkInterfaceDescription (\s a -> s { _eC2NetworkInterfaceDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-groupset
-ecniGroupSet :: Lens' EC2NetworkInterface (Maybe [Val Text])
+ecniGroupSet :: Lens' EC2NetworkInterface (Maybe (ValList Text))
 ecniGroupSet = lens _eC2NetworkInterfaceGroupSet (\s a -> s { _eC2NetworkInterfaceGroupSet = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-interfacetype
@@ -99,7 +100,7 @@
 ecniInterfaceType = lens _eC2NetworkInterfaceInterfaceType (\s a -> s { _eC2NetworkInterfaceInterfaceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-ipv6addresscount
-ecniIpv6AddressCount :: Lens' EC2NetworkInterface (Maybe (Val Integer'))
+ecniIpv6AddressCount :: Lens' EC2NetworkInterface (Maybe (Val Integer))
 ecniIpv6AddressCount = lens _eC2NetworkInterfaceIpv6AddressCount (\s a -> s { _eC2NetworkInterfaceIpv6AddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-ipv6addresses
@@ -115,11 +116,11 @@
 ecniPrivateIpAddresses = lens _eC2NetworkInterfacePrivateIpAddresses (\s a -> s { _eC2NetworkInterfacePrivateIpAddresses = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-secondaryprivateipcount
-ecniSecondaryPrivateIpAddressCount :: Lens' EC2NetworkInterface (Maybe (Val Integer'))
+ecniSecondaryPrivateIpAddressCount :: Lens' EC2NetworkInterface (Maybe (Val Integer))
 ecniSecondaryPrivateIpAddressCount = lens _eC2NetworkInterfaceSecondaryPrivateIpAddressCount (\s a -> s { _eC2NetworkInterfaceSecondaryPrivateIpAddressCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-sourcedestcheck
-ecniSourceDestCheck :: Lens' EC2NetworkInterface (Maybe (Val Bool'))
+ecniSourceDestCheck :: Lens' EC2NetworkInterface (Maybe (Val Bool))
 ecniSourceDestCheck = lens _eC2NetworkInterfaceSourceDestCheck (\s a -> s { _eC2NetworkInterfaceSourceDestCheck = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-subnetid
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterfaceAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html
 
@@ -18,7 +19,7 @@
 -- 'ec2NetworkInterfaceAttachment' for a more convenient constructor.
 data EC2NetworkInterfaceAttachment =
   EC2NetworkInterfaceAttachment
-  { _eC2NetworkInterfaceAttachmentDeleteOnTermination :: Maybe (Val Bool')
+  { _eC2NetworkInterfaceAttachmentDeleteOnTermination :: Maybe (Val Bool)
   , _eC2NetworkInterfaceAttachmentDeviceIndex :: Val Text
   , _eC2NetworkInterfaceAttachmentInstanceId :: Val Text
   , _eC2NetworkInterfaceAttachmentNetworkInterfaceId :: Val Text
@@ -28,19 +29,19 @@
   toJSON EC2NetworkInterfaceAttachment{..} =
     object $
     catMaybes
-    [ ("DeleteOnTermination" .=) <$> _eC2NetworkInterfaceAttachmentDeleteOnTermination
-    , Just ("DeviceIndex" .= _eC2NetworkInterfaceAttachmentDeviceIndex)
-    , Just ("InstanceId" .= _eC2NetworkInterfaceAttachmentInstanceId)
-    , Just ("NetworkInterfaceId" .= _eC2NetworkInterfaceAttachmentNetworkInterfaceId)
+    [ fmap (("DeleteOnTermination",) . toJSON . fmap Bool') _eC2NetworkInterfaceAttachmentDeleteOnTermination
+    , (Just . ("DeviceIndex",) . toJSON) _eC2NetworkInterfaceAttachmentDeviceIndex
+    , (Just . ("InstanceId",) . toJSON) _eC2NetworkInterfaceAttachmentInstanceId
+    , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfaceAttachmentNetworkInterfaceId
     ]
 
 instance FromJSON EC2NetworkInterfaceAttachment where
   parseJSON (Object obj) =
     EC2NetworkInterfaceAttachment <$>
-      obj .:? "DeleteOnTermination" <*>
-      obj .: "DeviceIndex" <*>
-      obj .: "InstanceId" <*>
-      obj .: "NetworkInterfaceId"
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteOnTermination") <*>
+      (obj .: "DeviceIndex") <*>
+      (obj .: "InstanceId") <*>
+      (obj .: "NetworkInterfaceId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkInterfaceAttachment' containing required
@@ -59,7 +60,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-deleteonterm
-ecniaDeleteOnTermination :: Lens' EC2NetworkInterfaceAttachment (Maybe (Val Bool'))
+ecniaDeleteOnTermination :: Lens' EC2NetworkInterfaceAttachment (Maybe (Val Bool))
 ecniaDeleteOnTermination = lens _eC2NetworkInterfaceAttachmentDeleteOnTermination (\s a -> s { _eC2NetworkInterfaceAttachmentDeleteOnTermination = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-deviceindex
diff --git a/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs b/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
--- a/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
+++ b/library-gen/Stratosphere/Resources/EC2NetworkInterfacePermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html
 
@@ -27,17 +28,17 @@
   toJSON EC2NetworkInterfacePermission{..} =
     object $
     catMaybes
-    [ Just ("AwsAccountId" .= _eC2NetworkInterfacePermissionAwsAccountId)
-    , Just ("NetworkInterfaceId" .= _eC2NetworkInterfacePermissionNetworkInterfaceId)
-    , Just ("Permission" .= _eC2NetworkInterfacePermissionPermission)
+    [ (Just . ("AwsAccountId",) . toJSON) _eC2NetworkInterfacePermissionAwsAccountId
+    , (Just . ("NetworkInterfaceId",) . toJSON) _eC2NetworkInterfacePermissionNetworkInterfaceId
+    , (Just . ("Permission",) . toJSON) _eC2NetworkInterfacePermissionPermission
     ]
 
 instance FromJSON EC2NetworkInterfacePermission where
   parseJSON (Object obj) =
     EC2NetworkInterfacePermission <$>
-      obj .: "AwsAccountId" <*>
-      obj .: "NetworkInterfaceId" <*>
-      obj .: "Permission"
+      (obj .: "AwsAccountId") <*>
+      (obj .: "NetworkInterfaceId") <*>
+      (obj .: "Permission")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NetworkInterfacePermission' containing required
diff --git a/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs b/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
--- a/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
+++ b/library-gen/Stratosphere/Resources/EC2PlacementGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html
 
@@ -25,13 +26,13 @@
   toJSON EC2PlacementGroup{..} =
     object $
     catMaybes
-    [ ("Strategy" .=) <$> _eC2PlacementGroupStrategy
+    [ fmap (("Strategy",) . toJSON) _eC2PlacementGroupStrategy
     ]
 
 instance FromJSON EC2PlacementGroup where
   parseJSON (Object obj) =
     EC2PlacementGroup <$>
-      obj .:? "Strategy"
+      (obj .:? "Strategy")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2PlacementGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2Route.hs b/library-gen/Stratosphere/Resources/EC2Route.hs
--- a/library-gen/Stratosphere/Resources/EC2Route.hs
+++ b/library-gen/Stratosphere/Resources/EC2Route.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html
 
@@ -32,27 +33,27 @@
   toJSON EC2Route{..} =
     object $
     catMaybes
-    [ ("DestinationCidrBlock" .=) <$> _eC2RouteDestinationCidrBlock
-    , ("DestinationIpv6CidrBlock" .=) <$> _eC2RouteDestinationIpv6CidrBlock
-    , ("GatewayId" .=) <$> _eC2RouteGatewayId
-    , ("InstanceId" .=) <$> _eC2RouteInstanceId
-    , ("NatGatewayId" .=) <$> _eC2RouteNatGatewayId
-    , ("NetworkInterfaceId" .=) <$> _eC2RouteNetworkInterfaceId
-    , Just ("RouteTableId" .= _eC2RouteRouteTableId)
-    , ("VpcPeeringConnectionId" .=) <$> _eC2RouteVpcPeeringConnectionId
+    [ fmap (("DestinationCidrBlock",) . toJSON) _eC2RouteDestinationCidrBlock
+    , fmap (("DestinationIpv6CidrBlock",) . toJSON) _eC2RouteDestinationIpv6CidrBlock
+    , fmap (("GatewayId",) . toJSON) _eC2RouteGatewayId
+    , fmap (("InstanceId",) . toJSON) _eC2RouteInstanceId
+    , fmap (("NatGatewayId",) . toJSON) _eC2RouteNatGatewayId
+    , fmap (("NetworkInterfaceId",) . toJSON) _eC2RouteNetworkInterfaceId
+    , (Just . ("RouteTableId",) . toJSON) _eC2RouteRouteTableId
+    , fmap (("VpcPeeringConnectionId",) . toJSON) _eC2RouteVpcPeeringConnectionId
     ]
 
 instance FromJSON EC2Route where
   parseJSON (Object obj) =
     EC2Route <$>
-      obj .:? "DestinationCidrBlock" <*>
-      obj .:? "DestinationIpv6CidrBlock" <*>
-      obj .:? "GatewayId" <*>
-      obj .:? "InstanceId" <*>
-      obj .:? "NatGatewayId" <*>
-      obj .:? "NetworkInterfaceId" <*>
-      obj .: "RouteTableId" <*>
-      obj .:? "VpcPeeringConnectionId"
+      (obj .:? "DestinationCidrBlock") <*>
+      (obj .:? "DestinationIpv6CidrBlock") <*>
+      (obj .:? "GatewayId") <*>
+      (obj .:? "InstanceId") <*>
+      (obj .:? "NatGatewayId") <*>
+      (obj .:? "NetworkInterfaceId") <*>
+      (obj .: "RouteTableId") <*>
+      (obj .:? "VpcPeeringConnectionId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2Route' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2RouteTable.hs b/library-gen/Stratosphere/Resources/EC2RouteTable.hs
--- a/library-gen/Stratosphere/Resources/EC2RouteTable.hs
+++ b/library-gen/Stratosphere/Resources/EC2RouteTable.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html
 
@@ -26,15 +27,15 @@
   toJSON EC2RouteTable{..} =
     object $
     catMaybes
-    [ ("Tags" .=) <$> _eC2RouteTableTags
-    , Just ("VpcId" .= _eC2RouteTableVpcId)
+    [ fmap (("Tags",) . toJSON) _eC2RouteTableTags
+    , (Just . ("VpcId",) . toJSON) _eC2RouteTableVpcId
     ]
 
 instance FromJSON EC2RouteTable where
   parseJSON (Object obj) =
     EC2RouteTable <$>
-      obj .:? "Tags" <*>
-      obj .: "VpcId"
+      (obj .:? "Tags") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2RouteTable' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html
 
@@ -32,23 +33,23 @@
   toJSON EC2SecurityGroup{..} =
     object $
     catMaybes
-    [ Just ("GroupDescription" .= _eC2SecurityGroupGroupDescription)
-    , ("GroupName" .=) <$> _eC2SecurityGroupGroupName
-    , ("SecurityGroupEgress" .=) <$> _eC2SecurityGroupSecurityGroupEgress
-    , ("SecurityGroupIngress" .=) <$> _eC2SecurityGroupSecurityGroupIngress
-    , ("Tags" .=) <$> _eC2SecurityGroupTags
-    , ("VpcId" .=) <$> _eC2SecurityGroupVpcId
+    [ (Just . ("GroupDescription",) . toJSON) _eC2SecurityGroupGroupDescription
+    , fmap (("GroupName",) . toJSON) _eC2SecurityGroupGroupName
+    , fmap (("SecurityGroupEgress",) . toJSON) _eC2SecurityGroupSecurityGroupEgress
+    , fmap (("SecurityGroupIngress",) . toJSON) _eC2SecurityGroupSecurityGroupIngress
+    , fmap (("Tags",) . toJSON) _eC2SecurityGroupTags
+    , fmap (("VpcId",) . toJSON) _eC2SecurityGroupVpcId
     ]
 
 instance FromJSON EC2SecurityGroup where
   parseJSON (Object obj) =
     EC2SecurityGroup <$>
-      obj .: "GroupDescription" <*>
-      obj .:? "GroupName" <*>
-      obj .:? "SecurityGroupEgress" <*>
-      obj .:? "SecurityGroupIngress" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VpcId"
+      (obj .: "GroupDescription") <*>
+      (obj .:? "GroupName") <*>
+      (obj .:? "SecurityGroupEgress") <*>
+      (obj .:? "SecurityGroupIngress") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SecurityGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html
 
@@ -22,37 +23,37 @@
   , _eC2SecurityGroupEgressCidrIpv6 :: Maybe (Val Text)
   , _eC2SecurityGroupEgressDestinationPrefixListId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressDestinationSecurityGroupId :: Maybe (Val Text)
-  , _eC2SecurityGroupEgressFromPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupEgressFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupEgressGroupId :: Val Text
   , _eC2SecurityGroupEgressIpProtocol :: Val Text
-  , _eC2SecurityGroupEgressToPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupEgressToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SecurityGroupEgress where
   toJSON EC2SecurityGroupEgress{..} =
     object $
     catMaybes
-    [ ("CidrIp" .=) <$> _eC2SecurityGroupEgressCidrIp
-    , ("CidrIpv6" .=) <$> _eC2SecurityGroupEgressCidrIpv6
-    , ("DestinationPrefixListId" .=) <$> _eC2SecurityGroupEgressDestinationPrefixListId
-    , ("DestinationSecurityGroupId" .=) <$> _eC2SecurityGroupEgressDestinationSecurityGroupId
-    , ("FromPort" .=) <$> _eC2SecurityGroupEgressFromPort
-    , Just ("GroupId" .= _eC2SecurityGroupEgressGroupId)
-    , Just ("IpProtocol" .= _eC2SecurityGroupEgressIpProtocol)
-    , ("ToPort" .=) <$> _eC2SecurityGroupEgressToPort
+    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressCidrIp
+    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressCidrIpv6
+    , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressDestinationPrefixListId
+    , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressDestinationSecurityGroupId
+    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressFromPort
+    , (Just . ("GroupId",) . toJSON) _eC2SecurityGroupEgressGroupId
+    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupEgressIpProtocol
+    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressToPort
     ]
 
 instance FromJSON EC2SecurityGroupEgress where
   parseJSON (Object obj) =
     EC2SecurityGroupEgress <$>
-      obj .:? "CidrIp" <*>
-      obj .:? "CidrIpv6" <*>
-      obj .:? "DestinationPrefixListId" <*>
-      obj .:? "DestinationSecurityGroupId" <*>
-      obj .:? "FromPort" <*>
-      obj .: "GroupId" <*>
-      obj .: "IpProtocol" <*>
-      obj .:? "ToPort"
+      (obj .:? "CidrIp") <*>
+      (obj .:? "CidrIpv6") <*>
+      (obj .:? "DestinationPrefixListId") <*>
+      (obj .:? "DestinationSecurityGroupId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
+      (obj .: "GroupId") <*>
+      (obj .: "IpProtocol") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ToPort")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SecurityGroupEgress' containing required fields as
@@ -90,7 +91,7 @@
 ecsgeDestinationSecurityGroupId = lens _eC2SecurityGroupEgressDestinationSecurityGroupId (\s a -> s { _eC2SecurityGroupEgressDestinationSecurityGroupId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-fromport
-ecsgeFromPort :: Lens' EC2SecurityGroupEgress (Maybe (Val Integer'))
+ecsgeFromPort :: Lens' EC2SecurityGroupEgress (Maybe (Val Integer))
 ecsgeFromPort = lens _eC2SecurityGroupEgressFromPort (\s a -> s { _eC2SecurityGroupEgressFromPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-groupid
@@ -102,5 +103,5 @@
 ecsgeIpProtocol = lens _eC2SecurityGroupEgressIpProtocol (\s a -> s { _eC2SecurityGroupEgressIpProtocol = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-toport
-ecsgeToPort :: Lens' EC2SecurityGroupEgress (Maybe (Val Integer'))
+ecsgeToPort :: Lens' EC2SecurityGroupEgress (Maybe (Val Integer))
 ecsgeToPort = lens _eC2SecurityGroupEgressToPort (\s a -> s { _eC2SecurityGroupEgressToPort = a })
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html
 
@@ -20,45 +21,45 @@
   EC2SecurityGroupIngress
   { _eC2SecurityGroupIngressCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupIngressCidrIpv6 :: Maybe (Val Text)
-  , _eC2SecurityGroupIngressFromPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupIngressFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupIngressGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupIngressGroupName :: Maybe (Val Text)
   , _eC2SecurityGroupIngressIpProtocol :: Val Text
   , _eC2SecurityGroupIngressSourceSecurityGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupIngressSourceSecurityGroupName :: Maybe (Val Text)
   , _eC2SecurityGroupIngressSourceSecurityGroupOwnerId :: Maybe (Val Text)
-  , _eC2SecurityGroupIngressToPort :: Maybe (Val Integer')
+  , _eC2SecurityGroupIngressToPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2SecurityGroupIngress where
   toJSON EC2SecurityGroupIngress{..} =
     object $
     catMaybes
-    [ ("CidrIp" .=) <$> _eC2SecurityGroupIngressCidrIp
-    , ("CidrIpv6" .=) <$> _eC2SecurityGroupIngressCidrIpv6
-    , ("FromPort" .=) <$> _eC2SecurityGroupIngressFromPort
-    , ("GroupId" .=) <$> _eC2SecurityGroupIngressGroupId
-    , ("GroupName" .=) <$> _eC2SecurityGroupIngressGroupName
-    , Just ("IpProtocol" .= _eC2SecurityGroupIngressIpProtocol)
-    , ("SourceSecurityGroupId" .=) <$> _eC2SecurityGroupIngressSourceSecurityGroupId
-    , ("SourceSecurityGroupName" .=) <$> _eC2SecurityGroupIngressSourceSecurityGroupName
-    , ("SourceSecurityGroupOwnerId" .=) <$> _eC2SecurityGroupIngressSourceSecurityGroupOwnerId
-    , ("ToPort" .=) <$> _eC2SecurityGroupIngressToPort
+    [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressCidrIp
+    , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressCidrIpv6
+    , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressFromPort
+    , fmap (("GroupId",) . toJSON) _eC2SecurityGroupIngressGroupId
+    , fmap (("GroupName",) . toJSON) _eC2SecurityGroupIngressGroupName
+    , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupIngressIpProtocol
+    , fmap (("SourceSecurityGroupId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupId
+    , fmap (("SourceSecurityGroupName",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupName
+    , fmap (("SourceSecurityGroupOwnerId",) . toJSON) _eC2SecurityGroupIngressSourceSecurityGroupOwnerId
+    , fmap (("ToPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressToPort
     ]
 
 instance FromJSON EC2SecurityGroupIngress where
   parseJSON (Object obj) =
     EC2SecurityGroupIngress <$>
-      obj .:? "CidrIp" <*>
-      obj .:? "CidrIpv6" <*>
-      obj .:? "FromPort" <*>
-      obj .:? "GroupId" <*>
-      obj .:? "GroupName" <*>
-      obj .: "IpProtocol" <*>
-      obj .:? "SourceSecurityGroupId" <*>
-      obj .:? "SourceSecurityGroupName" <*>
-      obj .:? "SourceSecurityGroupOwnerId" <*>
-      obj .:? "ToPort"
+      (obj .:? "CidrIp") <*>
+      (obj .:? "CidrIpv6") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
+      (obj .:? "GroupId") <*>
+      (obj .:? "GroupName") <*>
+      (obj .: "IpProtocol") <*>
+      (obj .:? "SourceSecurityGroupId") <*>
+      (obj .:? "SourceSecurityGroupName") <*>
+      (obj .:? "SourceSecurityGroupOwnerId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ToPort")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SecurityGroupIngress' containing required fields as
@@ -89,7 +90,7 @@
 ecsgiCidrIpv6 = lens _eC2SecurityGroupIngressCidrIpv6 (\s a -> s { _eC2SecurityGroupIngressCidrIpv6 = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-fromport
-ecsgiFromPort :: Lens' EC2SecurityGroupIngress (Maybe (Val Integer'))
+ecsgiFromPort :: Lens' EC2SecurityGroupIngress (Maybe (Val Integer))
 ecsgiFromPort = lens _eC2SecurityGroupIngressFromPort (\s a -> s { _eC2SecurityGroupIngressFromPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-groupid
@@ -117,5 +118,5 @@
 ecsgiSourceSecurityGroupOwnerId = lens _eC2SecurityGroupIngressSourceSecurityGroupOwnerId (\s a -> s { _eC2SecurityGroupIngressSourceSecurityGroupOwnerId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-toport
-ecsgiToPort :: Lens' EC2SecurityGroupIngress (Maybe (Val Integer'))
+ecsgiToPort :: Lens' EC2SecurityGroupIngress (Maybe (Val Integer))
 ecsgiToPort = lens _eC2SecurityGroupIngressToPort (\s a -> s { _eC2SecurityGroupIngressToPort = a })
diff --git a/library-gen/Stratosphere/Resources/EC2SpotFleet.hs b/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
--- a/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
+++ b/library-gen/Stratosphere/Resources/EC2SpotFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html
 
@@ -25,13 +26,13 @@
   toJSON EC2SpotFleet{..} =
     object $
     catMaybes
-    [ Just ("SpotFleetRequestConfigData" .= _eC2SpotFleetSpotFleetRequestConfigData)
+    [ (Just . ("SpotFleetRequestConfigData",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigData
     ]
 
 instance FromJSON EC2SpotFleet where
   parseJSON (Object obj) =
     EC2SpotFleet <$>
-      obj .: "SpotFleetRequestConfigData"
+      (obj .: "SpotFleetRequestConfigData")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SpotFleet' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2Subnet.hs b/library-gen/Stratosphere/Resources/EC2Subnet.hs
--- a/library-gen/Stratosphere/Resources/EC2Subnet.hs
+++ b/library-gen/Stratosphere/Resources/EC2Subnet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html
 
@@ -20,7 +21,7 @@
   EC2Subnet
   { _eC2SubnetAvailabilityZone :: Maybe (Val Text)
   , _eC2SubnetCidrBlock :: Val Text
-  , _eC2SubnetMapPublicIpOnLaunch :: Maybe (Val Bool')
+  , _eC2SubnetMapPublicIpOnLaunch :: Maybe (Val Bool)
   , _eC2SubnetTags :: Maybe [Tag]
   , _eC2SubnetVpcId :: Val Text
   } deriving (Show, Eq)
@@ -29,21 +30,21 @@
   toJSON EC2Subnet{..} =
     object $
     catMaybes
-    [ ("AvailabilityZone" .=) <$> _eC2SubnetAvailabilityZone
-    , Just ("CidrBlock" .= _eC2SubnetCidrBlock)
-    , ("MapPublicIpOnLaunch" .=) <$> _eC2SubnetMapPublicIpOnLaunch
-    , ("Tags" .=) <$> _eC2SubnetTags
-    , Just ("VpcId" .= _eC2SubnetVpcId)
+    [ fmap (("AvailabilityZone",) . toJSON) _eC2SubnetAvailabilityZone
+    , (Just . ("CidrBlock",) . toJSON) _eC2SubnetCidrBlock
+    , fmap (("MapPublicIpOnLaunch",) . toJSON . fmap Bool') _eC2SubnetMapPublicIpOnLaunch
+    , fmap (("Tags",) . toJSON) _eC2SubnetTags
+    , (Just . ("VpcId",) . toJSON) _eC2SubnetVpcId
     ]
 
 instance FromJSON EC2Subnet where
   parseJSON (Object obj) =
     EC2Subnet <$>
-      obj .:? "AvailabilityZone" <*>
-      obj .: "CidrBlock" <*>
-      obj .:? "MapPublicIpOnLaunch" <*>
-      obj .:? "Tags" <*>
-      obj .: "VpcId"
+      (obj .:? "AvailabilityZone") <*>
+      (obj .: "CidrBlock") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MapPublicIpOnLaunch") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2Subnet' containing required fields as arguments.
@@ -69,7 +70,7 @@
 ecsCidrBlock = lens _eC2SubnetCidrBlock (\s a -> s { _eC2SubnetCidrBlock = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-mappubliciponlaunch
-ecsMapPublicIpOnLaunch :: Lens' EC2Subnet (Maybe (Val Bool'))
+ecsMapPublicIpOnLaunch :: Lens' EC2Subnet (Maybe (Val Bool))
 ecsMapPublicIpOnLaunch = lens _eC2SubnetMapPublicIpOnLaunch (\s a -> s { _eC2SubnetMapPublicIpOnLaunch = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-tags
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs b/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetCidrBlock.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html
 
@@ -26,15 +27,15 @@
   toJSON EC2SubnetCidrBlock{..} =
     object $
     catMaybes
-    [ Just ("Ipv6CidrBlock" .= _eC2SubnetCidrBlockIpv6CidrBlock)
-    , Just ("SubnetId" .= _eC2SubnetCidrBlockSubnetId)
+    [ (Just . ("Ipv6CidrBlock",) . toJSON) _eC2SubnetCidrBlockIpv6CidrBlock
+    , (Just . ("SubnetId",) . toJSON) _eC2SubnetCidrBlockSubnetId
     ]
 
 instance FromJSON EC2SubnetCidrBlock where
   parseJSON (Object obj) =
     EC2SubnetCidrBlock <$>
-      obj .: "Ipv6CidrBlock" <*>
-      obj .: "SubnetId"
+      (obj .: "Ipv6CidrBlock") <*>
+      (obj .: "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SubnetCidrBlock' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs b/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetNetworkAclAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html
 
@@ -26,15 +27,15 @@
   toJSON EC2SubnetNetworkAclAssociation{..} =
     object $
     catMaybes
-    [ Just ("NetworkAclId" .= _eC2SubnetNetworkAclAssociationNetworkAclId)
-    , Just ("SubnetId" .= _eC2SubnetNetworkAclAssociationSubnetId)
+    [ (Just . ("NetworkAclId",) . toJSON) _eC2SubnetNetworkAclAssociationNetworkAclId
+    , (Just . ("SubnetId",) . toJSON) _eC2SubnetNetworkAclAssociationSubnetId
     ]
 
 instance FromJSON EC2SubnetNetworkAclAssociation where
   parseJSON (Object obj) =
     EC2SubnetNetworkAclAssociation <$>
-      obj .: "NetworkAclId" <*>
-      obj .: "SubnetId"
+      (obj .: "NetworkAclId") <*>
+      (obj .: "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SubnetNetworkAclAssociation' containing required
diff --git a/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs b/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2SubnetRouteTableAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html
 
@@ -26,15 +27,15 @@
   toJSON EC2SubnetRouteTableAssociation{..} =
     object $
     catMaybes
-    [ Just ("RouteTableId" .= _eC2SubnetRouteTableAssociationRouteTableId)
-    , Just ("SubnetId" .= _eC2SubnetRouteTableAssociationSubnetId)
+    [ (Just . ("RouteTableId",) . toJSON) _eC2SubnetRouteTableAssociationRouteTableId
+    , (Just . ("SubnetId",) . toJSON) _eC2SubnetRouteTableAssociationSubnetId
     ]
 
 instance FromJSON EC2SubnetRouteTableAssociation where
   parseJSON (Object obj) =
     EC2SubnetRouteTableAssociation <$>
-      obj .: "RouteTableId" <*>
-      obj .: "SubnetId"
+      (obj .: "RouteTableId") <*>
+      (obj .: "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2SubnetRouteTableAssociation' containing required
diff --git a/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs b/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2TrunkInterfaceAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html
 
@@ -19,28 +20,28 @@
 data EC2TrunkInterfaceAssociation =
   EC2TrunkInterfaceAssociation
   { _eC2TrunkInterfaceAssociationBranchInterfaceId :: Val Text
-  , _eC2TrunkInterfaceAssociationGREKey :: Maybe (Val Integer')
+  , _eC2TrunkInterfaceAssociationGREKey :: Maybe (Val Integer)
   , _eC2TrunkInterfaceAssociationTrunkInterfaceId :: Val Text
-  , _eC2TrunkInterfaceAssociationVLANId :: Maybe (Val Integer')
+  , _eC2TrunkInterfaceAssociationVLANId :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EC2TrunkInterfaceAssociation where
   toJSON EC2TrunkInterfaceAssociation{..} =
     object $
     catMaybes
-    [ Just ("BranchInterfaceId" .= _eC2TrunkInterfaceAssociationBranchInterfaceId)
-    , ("GREKey" .=) <$> _eC2TrunkInterfaceAssociationGREKey
-    , Just ("TrunkInterfaceId" .= _eC2TrunkInterfaceAssociationTrunkInterfaceId)
-    , ("VLANId" .=) <$> _eC2TrunkInterfaceAssociationVLANId
+    [ (Just . ("BranchInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationBranchInterfaceId
+    , fmap (("GREKey",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationGREKey
+    , (Just . ("TrunkInterfaceId",) . toJSON) _eC2TrunkInterfaceAssociationTrunkInterfaceId
+    , fmap (("VLANId",) . toJSON . fmap Integer') _eC2TrunkInterfaceAssociationVLANId
     ]
 
 instance FromJSON EC2TrunkInterfaceAssociation where
   parseJSON (Object obj) =
     EC2TrunkInterfaceAssociation <$>
-      obj .: "BranchInterfaceId" <*>
-      obj .:? "GREKey" <*>
-      obj .: "TrunkInterfaceId" <*>
-      obj .:? "VLANId"
+      (obj .: "BranchInterfaceId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "GREKey") <*>
+      (obj .: "TrunkInterfaceId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VLANId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2TrunkInterfaceAssociation' containing required fields
@@ -62,7 +63,7 @@
 ectiaBranchInterfaceId = lens _eC2TrunkInterfaceAssociationBranchInterfaceId (\s a -> s { _eC2TrunkInterfaceAssociationBranchInterfaceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-grekey
-ectiaGREKey :: Lens' EC2TrunkInterfaceAssociation (Maybe (Val Integer'))
+ectiaGREKey :: Lens' EC2TrunkInterfaceAssociation (Maybe (Val Integer))
 ectiaGREKey = lens _eC2TrunkInterfaceAssociationGREKey (\s a -> s { _eC2TrunkInterfaceAssociationGREKey = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-trunkinterfaceid
@@ -70,5 +71,5 @@
 ectiaTrunkInterfaceId = lens _eC2TrunkInterfaceAssociationTrunkInterfaceId (\s a -> s { _eC2TrunkInterfaceAssociationTrunkInterfaceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-vlanid
-ectiaVLANId :: Lens' EC2TrunkInterfaceAssociation (Maybe (Val Integer'))
+ectiaVLANId :: Lens' EC2TrunkInterfaceAssociation (Maybe (Val Integer))
 ectiaVLANId = lens _eC2TrunkInterfaceAssociationVLANId (\s a -> s { _eC2TrunkInterfaceAssociationVLANId = a })
diff --git a/library-gen/Stratosphere/Resources/EC2VPC.hs b/library-gen/Stratosphere/Resources/EC2VPC.hs
--- a/library-gen/Stratosphere/Resources/EC2VPC.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPC.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html
 
@@ -19,8 +20,8 @@
 data EC2VPC =
   EC2VPC
   { _eC2VPCCidrBlock :: Val Text
-  , _eC2VPCEnableDnsHostnames :: Maybe (Val Bool')
-  , _eC2VPCEnableDnsSupport :: Maybe (Val Bool')
+  , _eC2VPCEnableDnsHostnames :: Maybe (Val Bool)
+  , _eC2VPCEnableDnsSupport :: Maybe (Val Bool)
   , _eC2VPCInstanceTenancy :: Maybe (Val Text)
   , _eC2VPCTags :: Maybe [Tag]
   } deriving (Show, Eq)
@@ -29,21 +30,21 @@
   toJSON EC2VPC{..} =
     object $
     catMaybes
-    [ Just ("CidrBlock" .= _eC2VPCCidrBlock)
-    , ("EnableDnsHostnames" .=) <$> _eC2VPCEnableDnsHostnames
-    , ("EnableDnsSupport" .=) <$> _eC2VPCEnableDnsSupport
-    , ("InstanceTenancy" .=) <$> _eC2VPCInstanceTenancy
-    , ("Tags" .=) <$> _eC2VPCTags
+    [ (Just . ("CidrBlock",) . toJSON) _eC2VPCCidrBlock
+    , fmap (("EnableDnsHostnames",) . toJSON . fmap Bool') _eC2VPCEnableDnsHostnames
+    , fmap (("EnableDnsSupport",) . toJSON . fmap Bool') _eC2VPCEnableDnsSupport
+    , fmap (("InstanceTenancy",) . toJSON) _eC2VPCInstanceTenancy
+    , fmap (("Tags",) . toJSON) _eC2VPCTags
     ]
 
 instance FromJSON EC2VPC where
   parseJSON (Object obj) =
     EC2VPC <$>
-      obj .: "CidrBlock" <*>
-      obj .:? "EnableDnsHostnames" <*>
-      obj .:? "EnableDnsSupport" <*>
-      obj .:? "InstanceTenancy" <*>
-      obj .:? "Tags"
+      (obj .: "CidrBlock") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableDnsHostnames") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableDnsSupport") <*>
+      (obj .:? "InstanceTenancy") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPC' containing required fields as arguments.
@@ -64,11 +65,11 @@
 ecvpcCidrBlock = lens _eC2VPCCidrBlock (\s a -> s { _eC2VPCCidrBlock = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-EnableDnsHostnames
-ecvpcEnableDnsHostnames :: Lens' EC2VPC (Maybe (Val Bool'))
+ecvpcEnableDnsHostnames :: Lens' EC2VPC (Maybe (Val Bool))
 ecvpcEnableDnsHostnames = lens _eC2VPCEnableDnsHostnames (\s a -> s { _eC2VPCEnableDnsHostnames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-EnableDnsSupport
-ecvpcEnableDnsSupport :: Lens' EC2VPC (Maybe (Val Bool'))
+ecvpcEnableDnsSupport :: Lens' EC2VPC (Maybe (Val Bool))
 ecvpcEnableDnsSupport = lens _eC2VPCEnableDnsSupport (\s a -> s { _eC2VPCEnableDnsSupport = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-instancetenancy
diff --git a/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs b/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCCidrBlock.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html
 
@@ -18,7 +19,7 @@
 -- a more convenient constructor.
 data EC2VPCCidrBlock =
   EC2VPCCidrBlock
-  { _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock :: Maybe (Val Bool')
+  { _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock :: Maybe (Val Bool)
   , _eC2VPCCidrBlockVpcId :: Val Text
   } deriving (Show, Eq)
 
@@ -26,15 +27,15 @@
   toJSON EC2VPCCidrBlock{..} =
     object $
     catMaybes
-    [ ("AmazonProvidedIpv6CidrBlock" .=) <$> _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock
-    , Just ("VpcId" .= _eC2VPCCidrBlockVpcId)
+    [ fmap (("AmazonProvidedIpv6CidrBlock",) . toJSON . fmap Bool') _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock
+    , (Just . ("VpcId",) . toJSON) _eC2VPCCidrBlockVpcId
     ]
 
 instance FromJSON EC2VPCCidrBlock where
   parseJSON (Object obj) =
     EC2VPCCidrBlock <$>
-      obj .:? "AmazonProvidedIpv6CidrBlock" <*>
-      obj .: "VpcId"
+      fmap (fmap (fmap unBool')) (obj .:? "AmazonProvidedIpv6CidrBlock") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPCCidrBlock' containing required fields as
@@ -49,7 +50,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html#cfn-ec2-vpccidrblock-amazonprovidedipv6cidrblock
-ecvpccbAmazonProvidedIpv6CidrBlock :: Lens' EC2VPCCidrBlock (Maybe (Val Bool'))
+ecvpccbAmazonProvidedIpv6CidrBlock :: Lens' EC2VPCCidrBlock (Maybe (Val Bool))
 ecvpccbAmazonProvidedIpv6CidrBlock = lens _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock (\s a -> s { _eC2VPCCidrBlockAmazonProvidedIpv6CidrBlock = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html#cfn-ec2-vpccidrblock-vpcid
diff --git a/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs b/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCDHCPOptionsAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html
 
@@ -26,15 +27,15 @@
   toJSON EC2VPCDHCPOptionsAssociation{..} =
     object $
     catMaybes
-    [ Just ("DhcpOptionsId" .= _eC2VPCDHCPOptionsAssociationDhcpOptionsId)
-    , Just ("VpcId" .= _eC2VPCDHCPOptionsAssociationVpcId)
+    [ (Just . ("DhcpOptionsId",) . toJSON) _eC2VPCDHCPOptionsAssociationDhcpOptionsId
+    , (Just . ("VpcId",) . toJSON) _eC2VPCDHCPOptionsAssociationVpcId
     ]
 
 instance FromJSON EC2VPCDHCPOptionsAssociation where
   parseJSON (Object obj) =
     EC2VPCDHCPOptionsAssociation <$>
-      obj .: "DhcpOptionsId" <*>
-      obj .: "VpcId"
+      (obj .: "DhcpOptionsId") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPCDHCPOptionsAssociation' containing required fields
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html
 
@@ -19,7 +20,7 @@
 data EC2VPCEndpoint =
   EC2VPCEndpoint
   { _eC2VPCEndpointPolicyDocument :: Maybe Object
-  , _eC2VPCEndpointRouteTableIds :: Maybe [Val Text]
+  , _eC2VPCEndpointRouteTableIds :: Maybe (ValList Text)
   , _eC2VPCEndpointServiceName :: Val Text
   , _eC2VPCEndpointVpcId :: Val Text
   } deriving (Show, Eq)
@@ -28,19 +29,19 @@
   toJSON EC2VPCEndpoint{..} =
     object $
     catMaybes
-    [ ("PolicyDocument" .=) <$> _eC2VPCEndpointPolicyDocument
-    , ("RouteTableIds" .=) <$> _eC2VPCEndpointRouteTableIds
-    , Just ("ServiceName" .= _eC2VPCEndpointServiceName)
-    , Just ("VpcId" .= _eC2VPCEndpointVpcId)
+    [ fmap (("PolicyDocument",) . toJSON) _eC2VPCEndpointPolicyDocument
+    , fmap (("RouteTableIds",) . toJSON) _eC2VPCEndpointRouteTableIds
+    , (Just . ("ServiceName",) . toJSON) _eC2VPCEndpointServiceName
+    , (Just . ("VpcId",) . toJSON) _eC2VPCEndpointVpcId
     ]
 
 instance FromJSON EC2VPCEndpoint where
   parseJSON (Object obj) =
     EC2VPCEndpoint <$>
-      obj .:? "PolicyDocument" <*>
-      obj .:? "RouteTableIds" <*>
-      obj .: "ServiceName" <*>
-      obj .: "VpcId"
+      (obj .:? "PolicyDocument") <*>
+      (obj .:? "RouteTableIds") <*>
+      (obj .: "ServiceName") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPCEndpoint' containing required fields as arguments.
@@ -61,7 +62,7 @@
 ecvpcePolicyDocument = lens _eC2VPCEndpointPolicyDocument (\s a -> s { _eC2VPCEndpointPolicyDocument = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-routetableids
-ecvpceRouteTableIds :: Lens' EC2VPCEndpoint (Maybe [Val Text])
+ecvpceRouteTableIds :: Lens' EC2VPCEndpoint (Maybe (ValList Text))
 ecvpceRouteTableIds = lens _eC2VPCEndpointRouteTableIds (\s a -> s { _eC2VPCEndpointRouteTableIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-servicename
diff --git a/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs b/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCGatewayAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html
 
@@ -27,17 +28,17 @@
   toJSON EC2VPCGatewayAttachment{..} =
     object $
     catMaybes
-    [ ("InternetGatewayId" .=) <$> _eC2VPCGatewayAttachmentInternetGatewayId
-    , Just ("VpcId" .= _eC2VPCGatewayAttachmentVpcId)
-    , ("VpnGatewayId" .=) <$> _eC2VPCGatewayAttachmentVpnGatewayId
+    [ fmap (("InternetGatewayId",) . toJSON) _eC2VPCGatewayAttachmentInternetGatewayId
+    , (Just . ("VpcId",) . toJSON) _eC2VPCGatewayAttachmentVpcId
+    , fmap (("VpnGatewayId",) . toJSON) _eC2VPCGatewayAttachmentVpnGatewayId
     ]
 
 instance FromJSON EC2VPCGatewayAttachment where
   parseJSON (Object obj) =
     EC2VPCGatewayAttachment <$>
-      obj .:? "InternetGatewayId" <*>
-      obj .: "VpcId" <*>
-      obj .:? "VpnGatewayId"
+      (obj .:? "InternetGatewayId") <*>
+      (obj .: "VpcId") <*>
+      (obj .:? "VpnGatewayId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPCGatewayAttachment' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs b/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCPeeringConnection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html
 
@@ -29,21 +30,21 @@
   toJSON EC2VPCPeeringConnection{..} =
     object $
     catMaybes
-    [ ("PeerOwnerId" .=) <$> _eC2VPCPeeringConnectionPeerOwnerId
-    , ("PeerRoleArn" .=) <$> _eC2VPCPeeringConnectionPeerRoleArn
-    , Just ("PeerVpcId" .= _eC2VPCPeeringConnectionPeerVpcId)
-    , ("Tags" .=) <$> _eC2VPCPeeringConnectionTags
-    , Just ("VpcId" .= _eC2VPCPeeringConnectionVpcId)
+    [ fmap (("PeerOwnerId",) . toJSON) _eC2VPCPeeringConnectionPeerOwnerId
+    , fmap (("PeerRoleArn",) . toJSON) _eC2VPCPeeringConnectionPeerRoleArn
+    , (Just . ("PeerVpcId",) . toJSON) _eC2VPCPeeringConnectionPeerVpcId
+    , fmap (("Tags",) . toJSON) _eC2VPCPeeringConnectionTags
+    , (Just . ("VpcId",) . toJSON) _eC2VPCPeeringConnectionVpcId
     ]
 
 instance FromJSON EC2VPCPeeringConnection where
   parseJSON (Object obj) =
     EC2VPCPeeringConnection <$>
-      obj .:? "PeerOwnerId" <*>
-      obj .:? "PeerRoleArn" <*>
-      obj .: "PeerVpcId" <*>
-      obj .:? "Tags" <*>
-      obj .: "VpcId"
+      (obj .:? "PeerOwnerId") <*>
+      (obj .:? "PeerRoleArn") <*>
+      (obj .: "PeerVpcId") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPCPeeringConnection' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html
 
@@ -19,7 +20,7 @@
 data EC2VPNConnection =
   EC2VPNConnection
   { _eC2VPNConnectionCustomerGatewayId :: Val Text
-  , _eC2VPNConnectionStaticRoutesOnly :: Maybe (Val Bool')
+  , _eC2VPNConnectionStaticRoutesOnly :: Maybe (Val Bool)
   , _eC2VPNConnectionTags :: Maybe [Tag]
   , _eC2VPNConnectionType :: Val Text
   , _eC2VPNConnectionVpnGatewayId :: Val Text
@@ -29,21 +30,21 @@
   toJSON EC2VPNConnection{..} =
     object $
     catMaybes
-    [ Just ("CustomerGatewayId" .= _eC2VPNConnectionCustomerGatewayId)
-    , ("StaticRoutesOnly" .=) <$> _eC2VPNConnectionStaticRoutesOnly
-    , ("Tags" .=) <$> _eC2VPNConnectionTags
-    , Just ("Type" .= _eC2VPNConnectionType)
-    , Just ("VpnGatewayId" .= _eC2VPNConnectionVpnGatewayId)
+    [ (Just . ("CustomerGatewayId",) . toJSON) _eC2VPNConnectionCustomerGatewayId
+    , fmap (("StaticRoutesOnly",) . toJSON . fmap Bool') _eC2VPNConnectionStaticRoutesOnly
+    , fmap (("Tags",) . toJSON) _eC2VPNConnectionTags
+    , (Just . ("Type",) . toJSON) _eC2VPNConnectionType
+    , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
     ]
 
 instance FromJSON EC2VPNConnection where
   parseJSON (Object obj) =
     EC2VPNConnection <$>
-      obj .: "CustomerGatewayId" <*>
-      obj .:? "StaticRoutesOnly" <*>
-      obj .:? "Tags" <*>
-      obj .: "Type" <*>
-      obj .: "VpnGatewayId"
+      (obj .: "CustomerGatewayId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "StaticRoutesOnly") <*>
+      (obj .:? "Tags") <*>
+      (obj .: "Type") <*>
+      (obj .: "VpnGatewayId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPNConnection' containing required fields as
@@ -67,7 +68,7 @@
 ecvpncCustomerGatewayId = lens _eC2VPNConnectionCustomerGatewayId (\s a -> s { _eC2VPNConnectionCustomerGatewayId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-StaticRoutesOnly
-ecvpncStaticRoutesOnly :: Lens' EC2VPNConnection (Maybe (Val Bool'))
+ecvpncStaticRoutesOnly :: Lens' EC2VPNConnection (Maybe (Val Bool))
 ecvpncStaticRoutesOnly = lens _eC2VPNConnectionStaticRoutesOnly (\s a -> s { _eC2VPNConnectionStaticRoutesOnly = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-tags
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs b/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnectionRoute.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html
 
@@ -26,15 +27,15 @@
   toJSON EC2VPNConnectionRoute{..} =
     object $
     catMaybes
-    [ Just ("DestinationCidrBlock" .= _eC2VPNConnectionRouteDestinationCidrBlock)
-    , Just ("VpnConnectionId" .= _eC2VPNConnectionRouteVpnConnectionId)
+    [ (Just . ("DestinationCidrBlock",) . toJSON) _eC2VPNConnectionRouteDestinationCidrBlock
+    , (Just . ("VpnConnectionId",) . toJSON) _eC2VPNConnectionRouteVpnConnectionId
     ]
 
 instance FromJSON EC2VPNConnectionRoute where
   parseJSON (Object obj) =
     EC2VPNConnectionRoute <$>
-      obj .: "DestinationCidrBlock" <*>
-      obj .: "VpnConnectionId"
+      (obj .: "DestinationCidrBlock") <*>
+      (obj .: "VpnConnectionId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPNConnectionRoute' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html
 
@@ -26,15 +27,15 @@
   toJSON EC2VPNGateway{..} =
     object $
     catMaybes
-    [ ("Tags" .=) <$> _eC2VPNGatewayTags
-    , Just ("Type" .= _eC2VPNGatewayType)
+    [ fmap (("Tags",) . toJSON) _eC2VPNGatewayTags
+    , (Just . ("Type",) . toJSON) _eC2VPNGatewayType
     ]
 
 instance FromJSON EC2VPNGateway where
   parseJSON (Object obj) =
     EC2VPNGateway <$>
-      obj .:? "Tags" <*>
-      obj .: "Type"
+      (obj .:? "Tags") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPNGateway' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs b/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNGatewayRoutePropagation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html
 
@@ -18,7 +19,7 @@
 -- 'ec2VPNGatewayRoutePropagation' for a more convenient constructor.
 data EC2VPNGatewayRoutePropagation =
   EC2VPNGatewayRoutePropagation
-  { _eC2VPNGatewayRoutePropagationRouteTableIds :: [Val Text]
+  { _eC2VPNGatewayRoutePropagationRouteTableIds :: ValList Text
   , _eC2VPNGatewayRoutePropagationVpnGatewayId :: Val Text
   } deriving (Show, Eq)
 
@@ -26,21 +27,21 @@
   toJSON EC2VPNGatewayRoutePropagation{..} =
     object $
     catMaybes
-    [ Just ("RouteTableIds" .= _eC2VPNGatewayRoutePropagationRouteTableIds)
-    , Just ("VpnGatewayId" .= _eC2VPNGatewayRoutePropagationVpnGatewayId)
+    [ (Just . ("RouteTableIds",) . toJSON) _eC2VPNGatewayRoutePropagationRouteTableIds
+    , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNGatewayRoutePropagationVpnGatewayId
     ]
 
 instance FromJSON EC2VPNGatewayRoutePropagation where
   parseJSON (Object obj) =
     EC2VPNGatewayRoutePropagation <$>
-      obj .: "RouteTableIds" <*>
-      obj .: "VpnGatewayId"
+      (obj .: "RouteTableIds") <*>
+      (obj .: "VpnGatewayId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPNGatewayRoutePropagation' containing required
 -- fields as arguments.
 ec2VPNGatewayRoutePropagation
-  :: [Val Text] -- ^ 'ecvpngrpRouteTableIds'
+  :: ValList Text -- ^ 'ecvpngrpRouteTableIds'
   -> Val Text -- ^ 'ecvpngrpVpnGatewayId'
   -> EC2VPNGatewayRoutePropagation
 ec2VPNGatewayRoutePropagation routeTableIdsarg vpnGatewayIdarg =
@@ -50,7 +51,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-routetableids
-ecvpngrpRouteTableIds :: Lens' EC2VPNGatewayRoutePropagation [Val Text]
+ecvpngrpRouteTableIds :: Lens' EC2VPNGatewayRoutePropagation (ValList Text)
 ecvpngrpRouteTableIds = lens _eC2VPNGatewayRoutePropagationRouteTableIds (\s a -> s { _eC2VPNGatewayRoutePropagationRouteTableIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-vpngatewayid
diff --git a/library-gen/Stratosphere/Resources/EC2Volume.hs b/library-gen/Stratosphere/Resources/EC2Volume.hs
--- a/library-gen/Stratosphere/Resources/EC2Volume.hs
+++ b/library-gen/Stratosphere/Resources/EC2Volume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html
 
@@ -18,12 +19,12 @@
 -- convenient constructor.
 data EC2Volume =
   EC2Volume
-  { _eC2VolumeAutoEnableIO :: Maybe (Val Bool')
+  { _eC2VolumeAutoEnableIO :: Maybe (Val Bool)
   , _eC2VolumeAvailabilityZone :: Val Text
-  , _eC2VolumeEncrypted :: Maybe (Val Bool')
-  , _eC2VolumeIops :: Maybe (Val Integer')
+  , _eC2VolumeEncrypted :: Maybe (Val Bool)
+  , _eC2VolumeIops :: Maybe (Val Integer)
   , _eC2VolumeKmsKeyId :: Maybe (Val Text)
-  , _eC2VolumeSize :: Maybe (Val Integer')
+  , _eC2VolumeSize :: Maybe (Val Integer)
   , _eC2VolumeSnapshotId :: Maybe (Val Text)
   , _eC2VolumeTags :: Maybe [Tag]
   , _eC2VolumeVolumeType :: Maybe (Val Text)
@@ -33,29 +34,29 @@
   toJSON EC2Volume{..} =
     object $
     catMaybes
-    [ ("AutoEnableIO" .=) <$> _eC2VolumeAutoEnableIO
-    , Just ("AvailabilityZone" .= _eC2VolumeAvailabilityZone)
-    , ("Encrypted" .=) <$> _eC2VolumeEncrypted
-    , ("Iops" .=) <$> _eC2VolumeIops
-    , ("KmsKeyId" .=) <$> _eC2VolumeKmsKeyId
-    , ("Size" .=) <$> _eC2VolumeSize
-    , ("SnapshotId" .=) <$> _eC2VolumeSnapshotId
-    , ("Tags" .=) <$> _eC2VolumeTags
-    , ("VolumeType" .=) <$> _eC2VolumeVolumeType
+    [ fmap (("AutoEnableIO",) . toJSON . fmap Bool') _eC2VolumeAutoEnableIO
+    , (Just . ("AvailabilityZone",) . toJSON) _eC2VolumeAvailabilityZone
+    , fmap (("Encrypted",) . toJSON . fmap Bool') _eC2VolumeEncrypted
+    , fmap (("Iops",) . toJSON . fmap Integer') _eC2VolumeIops
+    , fmap (("KmsKeyId",) . toJSON) _eC2VolumeKmsKeyId
+    , fmap (("Size",) . toJSON . fmap Integer') _eC2VolumeSize
+    , fmap (("SnapshotId",) . toJSON) _eC2VolumeSnapshotId
+    , fmap (("Tags",) . toJSON) _eC2VolumeTags
+    , fmap (("VolumeType",) . toJSON) _eC2VolumeVolumeType
     ]
 
 instance FromJSON EC2Volume where
   parseJSON (Object obj) =
     EC2Volume <$>
-      obj .:? "AutoEnableIO" <*>
-      obj .: "AvailabilityZone" <*>
-      obj .:? "Encrypted" <*>
-      obj .:? "Iops" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "Size" <*>
-      obj .:? "SnapshotId" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VolumeType"
+      fmap (fmap (fmap unBool')) (obj .:? "AutoEnableIO") <*>
+      (obj .: "AvailabilityZone") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Encrypted") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "KmsKeyId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Size") <*>
+      (obj .:? "SnapshotId") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VolumeType")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2Volume' containing required fields as arguments.
@@ -76,7 +77,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-autoenableio
-ecvAutoEnableIO :: Lens' EC2Volume (Maybe (Val Bool'))
+ecvAutoEnableIO :: Lens' EC2Volume (Maybe (Val Bool))
 ecvAutoEnableIO = lens _eC2VolumeAutoEnableIO (\s a -> s { _eC2VolumeAutoEnableIO = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-availabilityzone
@@ -84,11 +85,11 @@
 ecvAvailabilityZone = lens _eC2VolumeAvailabilityZone (\s a -> s { _eC2VolumeAvailabilityZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-encrypted
-ecvEncrypted :: Lens' EC2Volume (Maybe (Val Bool'))
+ecvEncrypted :: Lens' EC2Volume (Maybe (Val Bool))
 ecvEncrypted = lens _eC2VolumeEncrypted (\s a -> s { _eC2VolumeEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-iops
-ecvIops :: Lens' EC2Volume (Maybe (Val Integer'))
+ecvIops :: Lens' EC2Volume (Maybe (Val Integer))
 ecvIops = lens _eC2VolumeIops (\s a -> s { _eC2VolumeIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-kmskeyid
@@ -96,7 +97,7 @@
 ecvKmsKeyId = lens _eC2VolumeKmsKeyId (\s a -> s { _eC2VolumeKmsKeyId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-size
-ecvSize :: Lens' EC2Volume (Maybe (Val Integer'))
+ecvSize :: Lens' EC2Volume (Maybe (Val Integer))
 ecvSize = lens _eC2VolumeSize (\s a -> s { _eC2VolumeSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-snapshotid
diff --git a/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs b/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
--- a/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
+++ b/library-gen/Stratosphere/Resources/EC2VolumeAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html
 
@@ -27,17 +28,17 @@
   toJSON EC2VolumeAttachment{..} =
     object $
     catMaybes
-    [ Just ("Device" .= _eC2VolumeAttachmentDevice)
-    , Just ("InstanceId" .= _eC2VolumeAttachmentInstanceId)
-    , Just ("VolumeId" .= _eC2VolumeAttachmentVolumeId)
+    [ (Just . ("Device",) . toJSON) _eC2VolumeAttachmentDevice
+    , (Just . ("InstanceId",) . toJSON) _eC2VolumeAttachmentInstanceId
+    , (Just . ("VolumeId",) . toJSON) _eC2VolumeAttachmentVolumeId
     ]
 
 instance FromJSON EC2VolumeAttachment where
   parseJSON (Object obj) =
     EC2VolumeAttachment <$>
-      obj .: "Device" <*>
-      obj .: "InstanceId" <*>
-      obj .: "VolumeId"
+      (obj .: "Device") <*>
+      (obj .: "InstanceId") <*>
+      (obj .: "VolumeId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VolumeAttachment' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ECRRepository.hs b/library-gen/Stratosphere/Resources/ECRRepository.hs
--- a/library-gen/Stratosphere/Resources/ECRRepository.hs
+++ b/library-gen/Stratosphere/Resources/ECRRepository.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html
 
@@ -26,15 +27,15 @@
   toJSON ECRRepository{..} =
     object $
     catMaybes
-    [ ("RepositoryName" .=) <$> _eCRRepositoryRepositoryName
-    , ("RepositoryPolicyText" .=) <$> _eCRRepositoryRepositoryPolicyText
+    [ fmap (("RepositoryName",) . toJSON) _eCRRepositoryRepositoryName
+    , fmap (("RepositoryPolicyText",) . toJSON) _eCRRepositoryRepositoryPolicyText
     ]
 
 instance FromJSON ECRRepository where
   parseJSON (Object obj) =
     ECRRepository <$>
-      obj .:? "RepositoryName" <*>
-      obj .:? "RepositoryPolicyText"
+      (obj .:? "RepositoryName") <*>
+      (obj .:? "RepositoryPolicyText")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECRRepository' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ECSCluster.hs b/library-gen/Stratosphere/Resources/ECSCluster.hs
--- a/library-gen/Stratosphere/Resources/ECSCluster.hs
+++ b/library-gen/Stratosphere/Resources/ECSCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
 
@@ -25,13 +26,13 @@
   toJSON ECSCluster{..} =
     object $
     catMaybes
-    [ ("ClusterName" .=) <$> _eCSClusterClusterName
+    [ fmap (("ClusterName",) . toJSON) _eCSClusterClusterName
     ]
 
 instance FromJSON ECSCluster where
   parseJSON (Object obj) =
     ECSCluster <$>
-      obj .:? "ClusterName"
+      (obj .:? "ClusterName")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSCluster' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ECSService.hs b/library-gen/Stratosphere/Resources/ECSService.hs
--- a/library-gen/Stratosphere/Resources/ECSService.hs
+++ b/library-gen/Stratosphere/Resources/ECSService.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
 
@@ -23,7 +24,7 @@
   ECSService
   { _eCSServiceCluster :: Maybe (Val Text)
   , _eCSServiceDeploymentConfiguration :: Maybe ECSServiceDeploymentConfiguration
-  , _eCSServiceDesiredCount :: Maybe (Val Integer')
+  , _eCSServiceDesiredCount :: Maybe (Val Integer)
   , _eCSServiceLoadBalancers :: Maybe [ECSServiceLoadBalancer]
   , _eCSServicePlacementConstraints :: Maybe [ECSServicePlacementConstraint]
   , _eCSServicePlacementStrategies :: Maybe [ECSServicePlacementStrategy]
@@ -36,29 +37,29 @@
   toJSON ECSService{..} =
     object $
     catMaybes
-    [ ("Cluster" .=) <$> _eCSServiceCluster
-    , ("DeploymentConfiguration" .=) <$> _eCSServiceDeploymentConfiguration
-    , ("DesiredCount" .=) <$> _eCSServiceDesiredCount
-    , ("LoadBalancers" .=) <$> _eCSServiceLoadBalancers
-    , ("PlacementConstraints" .=) <$> _eCSServicePlacementConstraints
-    , ("PlacementStrategies" .=) <$> _eCSServicePlacementStrategies
-    , ("Role" .=) <$> _eCSServiceRole
-    , ("ServiceName" .=) <$> _eCSServiceServiceName
-    , Just ("TaskDefinition" .= _eCSServiceTaskDefinition)
+    [ fmap (("Cluster",) . toJSON) _eCSServiceCluster
+    , fmap (("DeploymentConfiguration",) . toJSON) _eCSServiceDeploymentConfiguration
+    , fmap (("DesiredCount",) . toJSON . fmap Integer') _eCSServiceDesiredCount
+    , fmap (("LoadBalancers",) . toJSON) _eCSServiceLoadBalancers
+    , fmap (("PlacementConstraints",) . toJSON) _eCSServicePlacementConstraints
+    , fmap (("PlacementStrategies",) . toJSON) _eCSServicePlacementStrategies
+    , fmap (("Role",) . toJSON) _eCSServiceRole
+    , fmap (("ServiceName",) . toJSON) _eCSServiceServiceName
+    , (Just . ("TaskDefinition",) . toJSON) _eCSServiceTaskDefinition
     ]
 
 instance FromJSON ECSService where
   parseJSON (Object obj) =
     ECSService <$>
-      obj .:? "Cluster" <*>
-      obj .:? "DeploymentConfiguration" <*>
-      obj .:? "DesiredCount" <*>
-      obj .:? "LoadBalancers" <*>
-      obj .:? "PlacementConstraints" <*>
-      obj .:? "PlacementStrategies" <*>
-      obj .:? "Role" <*>
-      obj .:? "ServiceName" <*>
-      obj .: "TaskDefinition"
+      (obj .:? "Cluster") <*>
+      (obj .:? "DeploymentConfiguration") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DesiredCount") <*>
+      (obj .:? "LoadBalancers") <*>
+      (obj .:? "PlacementConstraints") <*>
+      (obj .:? "PlacementStrategies") <*>
+      (obj .:? "Role") <*>
+      (obj .:? "ServiceName") <*>
+      (obj .: "TaskDefinition")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSService' containing required fields as arguments.
@@ -87,7 +88,7 @@
 ecssDeploymentConfiguration = lens _eCSServiceDeploymentConfiguration (\s a -> s { _eCSServiceDeploymentConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-desiredcount
-ecssDesiredCount :: Lens' ECSService (Maybe (Val Integer'))
+ecssDesiredCount :: Lens' ECSService (Maybe (Val Integer))
 ecssDesiredCount = lens _eCSServiceDesiredCount (\s a -> s { _eCSServiceDesiredCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-loadbalancers
diff --git a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
--- a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
+++ b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
 
@@ -32,23 +33,23 @@
   toJSON ECSTaskDefinition{..} =
     object $
     catMaybes
-    [ ("ContainerDefinitions" .=) <$> _eCSTaskDefinitionContainerDefinitions
-    , ("Family" .=) <$> _eCSTaskDefinitionFamily
-    , ("NetworkMode" .=) <$> _eCSTaskDefinitionNetworkMode
-    , ("PlacementConstraints" .=) <$> _eCSTaskDefinitionPlacementConstraints
-    , ("TaskRoleArn" .=) <$> _eCSTaskDefinitionTaskRoleArn
-    , ("Volumes" .=) <$> _eCSTaskDefinitionVolumes
+    [ fmap (("ContainerDefinitions",) . toJSON) _eCSTaskDefinitionContainerDefinitions
+    , fmap (("Family",) . toJSON) _eCSTaskDefinitionFamily
+    , fmap (("NetworkMode",) . toJSON) _eCSTaskDefinitionNetworkMode
+    , fmap (("PlacementConstraints",) . toJSON) _eCSTaskDefinitionPlacementConstraints
+    , fmap (("TaskRoleArn",) . toJSON) _eCSTaskDefinitionTaskRoleArn
+    , fmap (("Volumes",) . toJSON) _eCSTaskDefinitionVolumes
     ]
 
 instance FromJSON ECSTaskDefinition where
   parseJSON (Object obj) =
     ECSTaskDefinition <$>
-      obj .:? "ContainerDefinitions" <*>
-      obj .:? "Family" <*>
-      obj .:? "NetworkMode" <*>
-      obj .:? "PlacementConstraints" <*>
-      obj .:? "TaskRoleArn" <*>
-      obj .:? "Volumes"
+      (obj .:? "ContainerDefinitions") <*>
+      (obj .:? "Family") <*>
+      (obj .:? "NetworkMode") <*>
+      (obj .:? "PlacementConstraints") <*>
+      (obj .:? "TaskRoleArn") <*>
+      (obj .:? "Volumes")
   parseJSON _ = mempty
 
 -- | Constructor for 'ECSTaskDefinition' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EFSFileSystem.hs b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
--- a/library-gen/Stratosphere/Resources/EFSFileSystem.hs
+++ b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html
 
@@ -26,15 +27,15 @@
   toJSON EFSFileSystem{..} =
     object $
     catMaybes
-    [ ("FileSystemTags" .=) <$> _eFSFileSystemFileSystemTags
-    , ("PerformanceMode" .=) <$> _eFSFileSystemPerformanceMode
+    [ fmap (("FileSystemTags",) . toJSON) _eFSFileSystemFileSystemTags
+    , fmap (("PerformanceMode",) . toJSON) _eFSFileSystemPerformanceMode
     ]
 
 instance FromJSON EFSFileSystem where
   parseJSON (Object obj) =
     EFSFileSystem <$>
-      obj .:? "FileSystemTags" <*>
-      obj .:? "PerformanceMode"
+      (obj .:? "FileSystemTags") <*>
+      (obj .:? "PerformanceMode")
   parseJSON _ = mempty
 
 -- | Constructor for 'EFSFileSystem' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/EFSMountTarget.hs b/library-gen/Stratosphere/Resources/EFSMountTarget.hs
--- a/library-gen/Stratosphere/Resources/EFSMountTarget.hs
+++ b/library-gen/Stratosphere/Resources/EFSMountTarget.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html
 
@@ -20,7 +21,7 @@
   EFSMountTarget
   { _eFSMountTargetFileSystemId :: Val Text
   , _eFSMountTargetIpAddress :: Maybe (Val Text)
-  , _eFSMountTargetSecurityGroups :: [Val Text]
+  , _eFSMountTargetSecurityGroups :: ValList Text
   , _eFSMountTargetSubnetId :: Val Text
   } deriving (Show, Eq)
 
@@ -28,25 +29,25 @@
   toJSON EFSMountTarget{..} =
     object $
     catMaybes
-    [ Just ("FileSystemId" .= _eFSMountTargetFileSystemId)
-    , ("IpAddress" .=) <$> _eFSMountTargetIpAddress
-    , Just ("SecurityGroups" .= _eFSMountTargetSecurityGroups)
-    , Just ("SubnetId" .= _eFSMountTargetSubnetId)
+    [ (Just . ("FileSystemId",) . toJSON) _eFSMountTargetFileSystemId
+    , fmap (("IpAddress",) . toJSON) _eFSMountTargetIpAddress
+    , (Just . ("SecurityGroups",) . toJSON) _eFSMountTargetSecurityGroups
+    , (Just . ("SubnetId",) . toJSON) _eFSMountTargetSubnetId
     ]
 
 instance FromJSON EFSMountTarget where
   parseJSON (Object obj) =
     EFSMountTarget <$>
-      obj .: "FileSystemId" <*>
-      obj .:? "IpAddress" <*>
-      obj .: "SecurityGroups" <*>
-      obj .: "SubnetId"
+      (obj .: "FileSystemId") <*>
+      (obj .:? "IpAddress") <*>
+      (obj .: "SecurityGroups") <*>
+      (obj .: "SubnetId")
   parseJSON _ = mempty
 
 -- | Constructor for 'EFSMountTarget' containing required fields as arguments.
 efsMountTarget
   :: Val Text -- ^ 'efsmtFileSystemId'
-  -> [Val Text] -- ^ 'efsmtSecurityGroups'
+  -> ValList Text -- ^ 'efsmtSecurityGroups'
   -> Val Text -- ^ 'efsmtSubnetId'
   -> EFSMountTarget
 efsMountTarget fileSystemIdarg securityGroupsarg subnetIdarg =
@@ -66,7 +67,7 @@
 efsmtIpAddress = lens _eFSMountTargetIpAddress (\s a -> s { _eFSMountTargetIpAddress = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-securitygroups
-efsmtSecurityGroups :: Lens' EFSMountTarget [Val Text]
+efsmtSecurityGroups :: Lens' EFSMountTarget (ValList Text)
 efsmtSecurityGroups = lens _eFSMountTargetSecurityGroups (\s a -> s { _eFSMountTargetSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-subnetid
diff --git a/library-gen/Stratosphere/Resources/EMRCluster.hs b/library-gen/Stratosphere/Resources/EMRCluster.hs
--- a/library-gen/Stratosphere/Resources/EMRCluster.hs
+++ b/library-gen/Stratosphere/Resources/EMRCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html
 
@@ -36,48 +37,48 @@
   , _eMRClusterSecurityConfiguration :: Maybe (Val Text)
   , _eMRClusterServiceRole :: Val Text
   , _eMRClusterTags :: Maybe [Tag]
-  , _eMRClusterVisibleToAllUsers :: Maybe (Val Bool')
+  , _eMRClusterVisibleToAllUsers :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToJSON EMRCluster where
   toJSON EMRCluster{..} =
     object $
     catMaybes
-    [ ("AdditionalInfo" .=) <$> _eMRClusterAdditionalInfo
-    , ("Applications" .=) <$> _eMRClusterApplications
-    , ("AutoScalingRole" .=) <$> _eMRClusterAutoScalingRole
-    , ("BootstrapActions" .=) <$> _eMRClusterBootstrapActions
-    , ("Configurations" .=) <$> _eMRClusterConfigurations
-    , Just ("Instances" .= _eMRClusterInstances)
-    , Just ("JobFlowRole" .= _eMRClusterJobFlowRole)
-    , ("LogUri" .=) <$> _eMRClusterLogUri
-    , Just ("Name" .= _eMRClusterName)
-    , ("ReleaseLabel" .=) <$> _eMRClusterReleaseLabel
-    , ("ScaleDownBehavior" .=) <$> _eMRClusterScaleDownBehavior
-    , ("SecurityConfiguration" .=) <$> _eMRClusterSecurityConfiguration
-    , Just ("ServiceRole" .= _eMRClusterServiceRole)
-    , ("Tags" .=) <$> _eMRClusterTags
-    , ("VisibleToAllUsers" .=) <$> _eMRClusterVisibleToAllUsers
+    [ fmap (("AdditionalInfo",) . toJSON) _eMRClusterAdditionalInfo
+    , fmap (("Applications",) . toJSON) _eMRClusterApplications
+    , fmap (("AutoScalingRole",) . toJSON) _eMRClusterAutoScalingRole
+    , fmap (("BootstrapActions",) . toJSON) _eMRClusterBootstrapActions
+    , fmap (("Configurations",) . toJSON) _eMRClusterConfigurations
+    , (Just . ("Instances",) . toJSON) _eMRClusterInstances
+    , (Just . ("JobFlowRole",) . toJSON) _eMRClusterJobFlowRole
+    , fmap (("LogUri",) . toJSON) _eMRClusterLogUri
+    , (Just . ("Name",) . toJSON) _eMRClusterName
+    , fmap (("ReleaseLabel",) . toJSON) _eMRClusterReleaseLabel
+    , fmap (("ScaleDownBehavior",) . toJSON) _eMRClusterScaleDownBehavior
+    , fmap (("SecurityConfiguration",) . toJSON) _eMRClusterSecurityConfiguration
+    , (Just . ("ServiceRole",) . toJSON) _eMRClusterServiceRole
+    , fmap (("Tags",) . toJSON) _eMRClusterTags
+    , fmap (("VisibleToAllUsers",) . toJSON . fmap Bool') _eMRClusterVisibleToAllUsers
     ]
 
 instance FromJSON EMRCluster where
   parseJSON (Object obj) =
     EMRCluster <$>
-      obj .:? "AdditionalInfo" <*>
-      obj .:? "Applications" <*>
-      obj .:? "AutoScalingRole" <*>
-      obj .:? "BootstrapActions" <*>
-      obj .:? "Configurations" <*>
-      obj .: "Instances" <*>
-      obj .: "JobFlowRole" <*>
-      obj .:? "LogUri" <*>
-      obj .: "Name" <*>
-      obj .:? "ReleaseLabel" <*>
-      obj .:? "ScaleDownBehavior" <*>
-      obj .:? "SecurityConfiguration" <*>
-      obj .: "ServiceRole" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VisibleToAllUsers"
+      (obj .:? "AdditionalInfo") <*>
+      (obj .:? "Applications") <*>
+      (obj .:? "AutoScalingRole") <*>
+      (obj .:? "BootstrapActions") <*>
+      (obj .:? "Configurations") <*>
+      (obj .: "Instances") <*>
+      (obj .: "JobFlowRole") <*>
+      (obj .:? "LogUri") <*>
+      (obj .: "Name") <*>
+      (obj .:? "ReleaseLabel") <*>
+      (obj .:? "ScaleDownBehavior") <*>
+      (obj .:? "SecurityConfiguration") <*>
+      (obj .: "ServiceRole") <*>
+      (obj .:? "Tags") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "VisibleToAllUsers")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRCluster' containing required fields as arguments.
@@ -163,5 +164,5 @@
 emrcTags = lens _eMRClusterTags (\s a -> s { _eMRClusterTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-visibletoallusers
-emrcVisibleToAllUsers :: Lens' EMRCluster (Maybe (Val Bool'))
+emrcVisibleToAllUsers :: Lens' EMRCluster (Maybe (Val Bool))
 emrcVisibleToAllUsers = lens _eMRClusterVisibleToAllUsers (\s a -> s { _eMRClusterVisibleToAllUsers = a })
diff --git a/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs b/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
--- a/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
+++ b/library-gen/Stratosphere/Resources/EMRInstanceFleetConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html
 
@@ -24,33 +25,33 @@
   , _eMRInstanceFleetConfigInstanceTypeConfigs :: Maybe [EMRInstanceFleetConfigInstanceTypeConfig]
   , _eMRInstanceFleetConfigLaunchSpecifications :: Maybe EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications
   , _eMRInstanceFleetConfigName :: Maybe (Val Text)
-  , _eMRInstanceFleetConfigTargetOnDemandCapacity :: Maybe (Val Integer')
-  , _eMRInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer')
+  , _eMRInstanceFleetConfigTargetOnDemandCapacity :: Maybe (Val Integer)
+  , _eMRInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON EMRInstanceFleetConfig where
   toJSON EMRInstanceFleetConfig{..} =
     object $
     catMaybes
-    [ Just ("ClusterId" .= _eMRInstanceFleetConfigClusterId)
-    , Just ("InstanceFleetType" .= _eMRInstanceFleetConfigInstanceFleetType)
-    , ("InstanceTypeConfigs" .=) <$> _eMRInstanceFleetConfigInstanceTypeConfigs
-    , ("LaunchSpecifications" .=) <$> _eMRInstanceFleetConfigLaunchSpecifications
-    , ("Name" .=) <$> _eMRInstanceFleetConfigName
-    , ("TargetOnDemandCapacity" .=) <$> _eMRInstanceFleetConfigTargetOnDemandCapacity
-    , ("TargetSpotCapacity" .=) <$> _eMRInstanceFleetConfigTargetSpotCapacity
+    [ (Just . ("ClusterId",) . toJSON) _eMRInstanceFleetConfigClusterId
+    , (Just . ("InstanceFleetType",) . toJSON) _eMRInstanceFleetConfigInstanceFleetType
+    , fmap (("InstanceTypeConfigs",) . toJSON) _eMRInstanceFleetConfigInstanceTypeConfigs
+    , fmap (("LaunchSpecifications",) . toJSON) _eMRInstanceFleetConfigLaunchSpecifications
+    , fmap (("Name",) . toJSON) _eMRInstanceFleetConfigName
+    , fmap (("TargetOnDemandCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetOnDemandCapacity
+    , fmap (("TargetSpotCapacity",) . toJSON . fmap Integer') _eMRInstanceFleetConfigTargetSpotCapacity
     ]
 
 instance FromJSON EMRInstanceFleetConfig where
   parseJSON (Object obj) =
     EMRInstanceFleetConfig <$>
-      obj .: "ClusterId" <*>
-      obj .: "InstanceFleetType" <*>
-      obj .:? "InstanceTypeConfigs" <*>
-      obj .:? "LaunchSpecifications" <*>
-      obj .:? "Name" <*>
-      obj .:? "TargetOnDemandCapacity" <*>
-      obj .:? "TargetSpotCapacity"
+      (obj .: "ClusterId") <*>
+      (obj .: "InstanceFleetType") <*>
+      (obj .:? "InstanceTypeConfigs") <*>
+      (obj .:? "LaunchSpecifications") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TargetOnDemandCapacity") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TargetSpotCapacity")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceFleetConfig' containing required fields as
@@ -91,9 +92,9 @@
 emrifcName = lens _eMRInstanceFleetConfigName (\s a -> s { _eMRInstanceFleetConfigName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-targetondemandcapacity
-emrifcTargetOnDemandCapacity :: Lens' EMRInstanceFleetConfig (Maybe (Val Integer'))
+emrifcTargetOnDemandCapacity :: Lens' EMRInstanceFleetConfig (Maybe (Val Integer))
 emrifcTargetOnDemandCapacity = lens _eMRInstanceFleetConfigTargetOnDemandCapacity (\s a -> s { _eMRInstanceFleetConfigTargetOnDemandCapacity = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-targetspotcapacity
-emrifcTargetSpotCapacity :: Lens' EMRInstanceFleetConfig (Maybe (Val Integer'))
+emrifcTargetSpotCapacity :: Lens' EMRInstanceFleetConfig (Maybe (Val Integer))
 emrifcTargetSpotCapacity = lens _eMRInstanceFleetConfigTargetSpotCapacity (\s a -> s { _eMRInstanceFleetConfigTargetSpotCapacity = a })
diff --git a/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs b/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
--- a/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
+++ b/library-gen/Stratosphere/Resources/EMRInstanceGroupConfig.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html
 
@@ -24,7 +25,7 @@
   , _eMRInstanceGroupConfigBidPrice :: Maybe (Val Text)
   , _eMRInstanceGroupConfigConfigurations :: Maybe [EMRInstanceGroupConfigConfiguration]
   , _eMRInstanceGroupConfigEbsConfiguration :: Maybe EMRInstanceGroupConfigEbsConfiguration
-  , _eMRInstanceGroupConfigInstanceCount :: Val Integer'
+  , _eMRInstanceGroupConfigInstanceCount :: Val Integer
   , _eMRInstanceGroupConfigInstanceRole :: Val Text
   , _eMRInstanceGroupConfigInstanceType :: Val Text
   , _eMRInstanceGroupConfigJobFlowId :: Val Text
@@ -36,37 +37,37 @@
   toJSON EMRInstanceGroupConfig{..} =
     object $
     catMaybes
-    [ ("AutoScalingPolicy" .=) <$> _eMRInstanceGroupConfigAutoScalingPolicy
-    , ("BidPrice" .=) <$> _eMRInstanceGroupConfigBidPrice
-    , ("Configurations" .=) <$> _eMRInstanceGroupConfigConfigurations
-    , ("EbsConfiguration" .=) <$> _eMRInstanceGroupConfigEbsConfiguration
-    , Just ("InstanceCount" .= _eMRInstanceGroupConfigInstanceCount)
-    , Just ("InstanceRole" .= _eMRInstanceGroupConfigInstanceRole)
-    , Just ("InstanceType" .= _eMRInstanceGroupConfigInstanceType)
-    , Just ("JobFlowId" .= _eMRInstanceGroupConfigJobFlowId)
-    , ("Market" .=) <$> _eMRInstanceGroupConfigMarket
-    , ("Name" .=) <$> _eMRInstanceGroupConfigName
+    [ fmap (("AutoScalingPolicy",) . toJSON) _eMRInstanceGroupConfigAutoScalingPolicy
+    , fmap (("BidPrice",) . toJSON) _eMRInstanceGroupConfigBidPrice
+    , fmap (("Configurations",) . toJSON) _eMRInstanceGroupConfigConfigurations
+    , fmap (("EbsConfiguration",) . toJSON) _eMRInstanceGroupConfigEbsConfiguration
+    , (Just . ("InstanceCount",) . toJSON . fmap Integer') _eMRInstanceGroupConfigInstanceCount
+    , (Just . ("InstanceRole",) . toJSON) _eMRInstanceGroupConfigInstanceRole
+    , (Just . ("InstanceType",) . toJSON) _eMRInstanceGroupConfigInstanceType
+    , (Just . ("JobFlowId",) . toJSON) _eMRInstanceGroupConfigJobFlowId
+    , fmap (("Market",) . toJSON) _eMRInstanceGroupConfigMarket
+    , fmap (("Name",) . toJSON) _eMRInstanceGroupConfigName
     ]
 
 instance FromJSON EMRInstanceGroupConfig where
   parseJSON (Object obj) =
     EMRInstanceGroupConfig <$>
-      obj .:? "AutoScalingPolicy" <*>
-      obj .:? "BidPrice" <*>
-      obj .:? "Configurations" <*>
-      obj .:? "EbsConfiguration" <*>
-      obj .: "InstanceCount" <*>
-      obj .: "InstanceRole" <*>
-      obj .: "InstanceType" <*>
-      obj .: "JobFlowId" <*>
-      obj .:? "Market" <*>
-      obj .:? "Name"
+      (obj .:? "AutoScalingPolicy") <*>
+      (obj .:? "BidPrice") <*>
+      (obj .:? "Configurations") <*>
+      (obj .:? "EbsConfiguration") <*>
+      fmap (fmap unInteger') (obj .: "InstanceCount") <*>
+      (obj .: "InstanceRole") <*>
+      (obj .: "InstanceType") <*>
+      (obj .: "JobFlowId") <*>
+      (obj .:? "Market") <*>
+      (obj .:? "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRInstanceGroupConfig' containing required fields as
 -- arguments.
 emrInstanceGroupConfig
-  :: Val Integer' -- ^ 'emrigcInstanceCount'
+  :: Val Integer -- ^ 'emrigcInstanceCount'
   -> Val Text -- ^ 'emrigcInstanceRole'
   -> Val Text -- ^ 'emrigcInstanceType'
   -> Val Text -- ^ 'emrigcJobFlowId'
@@ -102,7 +103,7 @@
 emrigcEbsConfiguration = lens _eMRInstanceGroupConfigEbsConfiguration (\s a -> s { _eMRInstanceGroupConfigEbsConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfiginstancecount-
-emrigcInstanceCount :: Lens' EMRInstanceGroupConfig (Val Integer')
+emrigcInstanceCount :: Lens' EMRInstanceGroupConfig (Val Integer)
 emrigcInstanceCount = lens _eMRInstanceGroupConfigInstanceCount (\s a -> s { _eMRInstanceGroupConfigInstanceCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-instancerole
diff --git a/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs b/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
--- a/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/EMRSecurityConfiguration.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html
 
@@ -26,15 +27,15 @@
   toJSON EMRSecurityConfiguration{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _eMRSecurityConfigurationName
-    , Just ("SecurityConfiguration" .= _eMRSecurityConfigurationSecurityConfiguration)
+    [ fmap (("Name",) . toJSON) _eMRSecurityConfigurationName
+    , (Just . ("SecurityConfiguration",) . toJSON) _eMRSecurityConfigurationSecurityConfiguration
     ]
 
 instance FromJSON EMRSecurityConfiguration where
   parseJSON (Object obj) =
     EMRSecurityConfiguration <$>
-      obj .:? "Name" <*>
-      obj .: "SecurityConfiguration"
+      (obj .:? "Name") <*>
+      (obj .: "SecurityConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRSecurityConfiguration' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EMRStep.hs b/library-gen/Stratosphere/Resources/EMRStep.hs
--- a/library-gen/Stratosphere/Resources/EMRStep.hs
+++ b/library-gen/Stratosphere/Resources/EMRStep.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html
 
@@ -28,19 +29,19 @@
   toJSON EMRStep{..} =
     object $
     catMaybes
-    [ Just ("ActionOnFailure" .= _eMRStepActionOnFailure)
-    , Just ("HadoopJarStep" .= _eMRStepHadoopJarStep)
-    , Just ("JobFlowId" .= _eMRStepJobFlowId)
-    , Just ("Name" .= _eMRStepName)
+    [ (Just . ("ActionOnFailure",) . toJSON) _eMRStepActionOnFailure
+    , (Just . ("HadoopJarStep",) . toJSON) _eMRStepHadoopJarStep
+    , (Just . ("JobFlowId",) . toJSON) _eMRStepJobFlowId
+    , (Just . ("Name",) . toJSON) _eMRStepName
     ]
 
 instance FromJSON EMRStep where
   parseJSON (Object obj) =
     EMRStep <$>
-      obj .: "ActionOnFailure" <*>
-      obj .: "HadoopJarStep" <*>
-      obj .: "JobFlowId" <*>
-      obj .: "Name"
+      (obj .: "ActionOnFailure") <*>
+      (obj .: "HadoopJarStep") <*>
+      (obj .: "JobFlowId") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'EMRStep' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs b/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheCacheCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html
 
@@ -19,79 +20,79 @@
 data ElastiCacheCacheCluster =
   ElastiCacheCacheCluster
   { _elastiCacheCacheClusterAZMode :: Maybe (Val Text)
-  , _elastiCacheCacheClusterAutoMinorVersionUpgrade :: Maybe (Val Bool')
+  , _elastiCacheCacheClusterAutoMinorVersionUpgrade :: Maybe (Val Bool)
   , _elastiCacheCacheClusterCacheNodeType :: Val Text
   , _elastiCacheCacheClusterCacheParameterGroupName :: Maybe (Val Text)
-  , _elastiCacheCacheClusterCacheSecurityGroupNames :: Maybe [Val Text]
+  , _elastiCacheCacheClusterCacheSecurityGroupNames :: Maybe (ValList Text)
   , _elastiCacheCacheClusterCacheSubnetGroupName :: Maybe (Val Text)
   , _elastiCacheCacheClusterClusterName :: Maybe (Val Text)
   , _elastiCacheCacheClusterEngine :: Val Text
   , _elastiCacheCacheClusterEngineVersion :: Maybe (Val Text)
   , _elastiCacheCacheClusterNotificationTopicArn :: Maybe (Val Text)
-  , _elastiCacheCacheClusterNumCacheNodes :: Val Integer'
-  , _elastiCacheCacheClusterPort :: Maybe (Val Integer')
+  , _elastiCacheCacheClusterNumCacheNodes :: Val Integer
+  , _elastiCacheCacheClusterPort :: Maybe (Val Integer)
   , _elastiCacheCacheClusterPreferredAvailabilityZone :: Maybe (Val Text)
-  , _elastiCacheCacheClusterPreferredAvailabilityZones :: Maybe [Val Text]
+  , _elastiCacheCacheClusterPreferredAvailabilityZones :: Maybe (ValList Text)
   , _elastiCacheCacheClusterPreferredMaintenanceWindow :: Maybe (Val Text)
-  , _elastiCacheCacheClusterSnapshotArns :: Maybe [Val Text]
+  , _elastiCacheCacheClusterSnapshotArns :: Maybe (ValList Text)
   , _elastiCacheCacheClusterSnapshotName :: Maybe (Val Text)
-  , _elastiCacheCacheClusterSnapshotRetentionLimit :: Maybe (Val Integer')
+  , _elastiCacheCacheClusterSnapshotRetentionLimit :: Maybe (Val Integer)
   , _elastiCacheCacheClusterSnapshotWindow :: Maybe (Val Text)
   , _elastiCacheCacheClusterTags :: Maybe [Tag]
-  , _elastiCacheCacheClusterVpcSecurityGroupIds :: Maybe [Val Text]
+  , _elastiCacheCacheClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON ElastiCacheCacheCluster where
   toJSON ElastiCacheCacheCluster{..} =
     object $
     catMaybes
-    [ ("AZMode" .=) <$> _elastiCacheCacheClusterAZMode
-    , ("AutoMinorVersionUpgrade" .=) <$> _elastiCacheCacheClusterAutoMinorVersionUpgrade
-    , Just ("CacheNodeType" .= _elastiCacheCacheClusterCacheNodeType)
-    , ("CacheParameterGroupName" .=) <$> _elastiCacheCacheClusterCacheParameterGroupName
-    , ("CacheSecurityGroupNames" .=) <$> _elastiCacheCacheClusterCacheSecurityGroupNames
-    , ("CacheSubnetGroupName" .=) <$> _elastiCacheCacheClusterCacheSubnetGroupName
-    , ("ClusterName" .=) <$> _elastiCacheCacheClusterClusterName
-    , Just ("Engine" .= _elastiCacheCacheClusterEngine)
-    , ("EngineVersion" .=) <$> _elastiCacheCacheClusterEngineVersion
-    , ("NotificationTopicArn" .=) <$> _elastiCacheCacheClusterNotificationTopicArn
-    , Just ("NumCacheNodes" .= _elastiCacheCacheClusterNumCacheNodes)
-    , ("Port" .=) <$> _elastiCacheCacheClusterPort
-    , ("PreferredAvailabilityZone" .=) <$> _elastiCacheCacheClusterPreferredAvailabilityZone
-    , ("PreferredAvailabilityZones" .=) <$> _elastiCacheCacheClusterPreferredAvailabilityZones
-    , ("PreferredMaintenanceWindow" .=) <$> _elastiCacheCacheClusterPreferredMaintenanceWindow
-    , ("SnapshotArns" .=) <$> _elastiCacheCacheClusterSnapshotArns
-    , ("SnapshotName" .=) <$> _elastiCacheCacheClusterSnapshotName
-    , ("SnapshotRetentionLimit" .=) <$> _elastiCacheCacheClusterSnapshotRetentionLimit
-    , ("SnapshotWindow" .=) <$> _elastiCacheCacheClusterSnapshotWindow
-    , ("Tags" .=) <$> _elastiCacheCacheClusterTags
-    , ("VpcSecurityGroupIds" .=) <$> _elastiCacheCacheClusterVpcSecurityGroupIds
+    [ fmap (("AZMode",) . toJSON) _elastiCacheCacheClusterAZMode
+    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheCacheClusterAutoMinorVersionUpgrade
+    , (Just . ("CacheNodeType",) . toJSON) _elastiCacheCacheClusterCacheNodeType
+    , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheCacheClusterCacheParameterGroupName
+    , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheCacheClusterCacheSecurityGroupNames
+    , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheCacheClusterCacheSubnetGroupName
+    , fmap (("ClusterName",) . toJSON) _elastiCacheCacheClusterClusterName
+    , (Just . ("Engine",) . toJSON) _elastiCacheCacheClusterEngine
+    , fmap (("EngineVersion",) . toJSON) _elastiCacheCacheClusterEngineVersion
+    , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheCacheClusterNotificationTopicArn
+    , (Just . ("NumCacheNodes",) . toJSON . fmap Integer') _elastiCacheCacheClusterNumCacheNodes
+    , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheCacheClusterPort
+    , fmap (("PreferredAvailabilityZone",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZone
+    , fmap (("PreferredAvailabilityZones",) . toJSON) _elastiCacheCacheClusterPreferredAvailabilityZones
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheCacheClusterPreferredMaintenanceWindow
+    , fmap (("SnapshotArns",) . toJSON) _elastiCacheCacheClusterSnapshotArns
+    , fmap (("SnapshotName",) . toJSON) _elastiCacheCacheClusterSnapshotName
+    , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheCacheClusterSnapshotRetentionLimit
+    , fmap (("SnapshotWindow",) . toJSON) _elastiCacheCacheClusterSnapshotWindow
+    , fmap (("Tags",) . toJSON) _elastiCacheCacheClusterTags
+    , fmap (("VpcSecurityGroupIds",) . toJSON) _elastiCacheCacheClusterVpcSecurityGroupIds
     ]
 
 instance FromJSON ElastiCacheCacheCluster where
   parseJSON (Object obj) =
     ElastiCacheCacheCluster <$>
-      obj .:? "AZMode" <*>
-      obj .:? "AutoMinorVersionUpgrade" <*>
-      obj .: "CacheNodeType" <*>
-      obj .:? "CacheParameterGroupName" <*>
-      obj .:? "CacheSecurityGroupNames" <*>
-      obj .:? "CacheSubnetGroupName" <*>
-      obj .:? "ClusterName" <*>
-      obj .: "Engine" <*>
-      obj .:? "EngineVersion" <*>
-      obj .:? "NotificationTopicArn" <*>
-      obj .: "NumCacheNodes" <*>
-      obj .:? "Port" <*>
-      obj .:? "PreferredAvailabilityZone" <*>
-      obj .:? "PreferredAvailabilityZones" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "SnapshotArns" <*>
-      obj .:? "SnapshotName" <*>
-      obj .:? "SnapshotRetentionLimit" <*>
-      obj .:? "SnapshotWindow" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VpcSecurityGroupIds"
+      (obj .:? "AZMode") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AutoMinorVersionUpgrade") <*>
+      (obj .: "CacheNodeType") <*>
+      (obj .:? "CacheParameterGroupName") <*>
+      (obj .:? "CacheSecurityGroupNames") <*>
+      (obj .:? "CacheSubnetGroupName") <*>
+      (obj .:? "ClusterName") <*>
+      (obj .: "Engine") <*>
+      (obj .:? "EngineVersion") <*>
+      (obj .:? "NotificationTopicArn") <*>
+      fmap (fmap unInteger') (obj .: "NumCacheNodes") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "PreferredAvailabilityZone") <*>
+      (obj .:? "PreferredAvailabilityZones") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      (obj .:? "SnapshotArns") <*>
+      (obj .:? "SnapshotName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SnapshotRetentionLimit") <*>
+      (obj .:? "SnapshotWindow") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcSecurityGroupIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheCacheCluster' containing required fields as
@@ -99,7 +100,7 @@
 elastiCacheCacheCluster
   :: Val Text -- ^ 'ecccCacheNodeType'
   -> Val Text -- ^ 'ecccEngine'
-  -> Val Integer' -- ^ 'ecccNumCacheNodes'
+  -> Val Integer -- ^ 'ecccNumCacheNodes'
   -> ElastiCacheCacheCluster
 elastiCacheCacheCluster cacheNodeTypearg enginearg numCacheNodesarg =
   ElastiCacheCacheCluster
@@ -131,7 +132,7 @@
 ecccAZMode = lens _elastiCacheCacheClusterAZMode (\s a -> s { _elastiCacheCacheClusterAZMode = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-autominorversionupgrade
-ecccAutoMinorVersionUpgrade :: Lens' ElastiCacheCacheCluster (Maybe (Val Bool'))
+ecccAutoMinorVersionUpgrade :: Lens' ElastiCacheCacheCluster (Maybe (Val Bool))
 ecccAutoMinorVersionUpgrade = lens _elastiCacheCacheClusterAutoMinorVersionUpgrade (\s a -> s { _elastiCacheCacheClusterAutoMinorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachenodetype
@@ -143,7 +144,7 @@
 ecccCacheParameterGroupName = lens _elastiCacheCacheClusterCacheParameterGroupName (\s a -> s { _elastiCacheCacheClusterCacheParameterGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachesecuritygroupnames
-ecccCacheSecurityGroupNames :: Lens' ElastiCacheCacheCluster (Maybe [Val Text])
+ecccCacheSecurityGroupNames :: Lens' ElastiCacheCacheCluster (Maybe (ValList Text))
 ecccCacheSecurityGroupNames = lens _elastiCacheCacheClusterCacheSecurityGroupNames (\s a -> s { _elastiCacheCacheClusterCacheSecurityGroupNames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachesubnetgroupname
@@ -167,11 +168,11 @@
 ecccNotificationTopicArn = lens _elastiCacheCacheClusterNotificationTopicArn (\s a -> s { _elastiCacheCacheClusterNotificationTopicArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-numcachenodes
-ecccNumCacheNodes :: Lens' ElastiCacheCacheCluster (Val Integer')
+ecccNumCacheNodes :: Lens' ElastiCacheCacheCluster (Val Integer)
 ecccNumCacheNodes = lens _elastiCacheCacheClusterNumCacheNodes (\s a -> s { _elastiCacheCacheClusterNumCacheNodes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-port
-ecccPort :: Lens' ElastiCacheCacheCluster (Maybe (Val Integer'))
+ecccPort :: Lens' ElastiCacheCacheCluster (Maybe (Val Integer))
 ecccPort = lens _elastiCacheCacheClusterPort (\s a -> s { _elastiCacheCacheClusterPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredavailabilityzone
@@ -179,7 +180,7 @@
 ecccPreferredAvailabilityZone = lens _elastiCacheCacheClusterPreferredAvailabilityZone (\s a -> s { _elastiCacheCacheClusterPreferredAvailabilityZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredavailabilityzones
-ecccPreferredAvailabilityZones :: Lens' ElastiCacheCacheCluster (Maybe [Val Text])
+ecccPreferredAvailabilityZones :: Lens' ElastiCacheCacheCluster (Maybe (ValList Text))
 ecccPreferredAvailabilityZones = lens _elastiCacheCacheClusterPreferredAvailabilityZones (\s a -> s { _elastiCacheCacheClusterPreferredAvailabilityZones = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredmaintenancewindow
@@ -187,7 +188,7 @@
 ecccPreferredMaintenanceWindow = lens _elastiCacheCacheClusterPreferredMaintenanceWindow (\s a -> s { _elastiCacheCacheClusterPreferredMaintenanceWindow = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotarns
-ecccSnapshotArns :: Lens' ElastiCacheCacheCluster (Maybe [Val Text])
+ecccSnapshotArns :: Lens' ElastiCacheCacheCluster (Maybe (ValList Text))
 ecccSnapshotArns = lens _elastiCacheCacheClusterSnapshotArns (\s a -> s { _elastiCacheCacheClusterSnapshotArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotname
@@ -195,7 +196,7 @@
 ecccSnapshotName = lens _elastiCacheCacheClusterSnapshotName (\s a -> s { _elastiCacheCacheClusterSnapshotName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotretentionlimit
-ecccSnapshotRetentionLimit :: Lens' ElastiCacheCacheCluster (Maybe (Val Integer'))
+ecccSnapshotRetentionLimit :: Lens' ElastiCacheCacheCluster (Maybe (Val Integer))
 ecccSnapshotRetentionLimit = lens _elastiCacheCacheClusterSnapshotRetentionLimit (\s a -> s { _elastiCacheCacheClusterSnapshotRetentionLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotwindow
@@ -207,5 +208,5 @@
 ecccTags = lens _elastiCacheCacheClusterTags (\s a -> s { _elastiCacheCacheClusterTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-vpcsecuritygroupids
-ecccVpcSecurityGroupIds :: Lens' ElastiCacheCacheCluster (Maybe [Val Text])
+ecccVpcSecurityGroupIds :: Lens' ElastiCacheCacheCluster (Maybe (ValList Text))
 ecccVpcSecurityGroupIds = lens _elastiCacheCacheClusterVpcSecurityGroupIds (\s a -> s { _elastiCacheCacheClusterVpcSecurityGroupIds = a })
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html
 
@@ -27,17 +28,17 @@
   toJSON ElastiCacheParameterGroup{..} =
     object $
     catMaybes
-    [ Just ("CacheParameterGroupFamily" .= _elastiCacheParameterGroupCacheParameterGroupFamily)
-    , Just ("Description" .= _elastiCacheParameterGroupDescription)
-    , ("Properties" .=) <$> _elastiCacheParameterGroupProperties
+    [ (Just . ("CacheParameterGroupFamily",) . toJSON) _elastiCacheParameterGroupCacheParameterGroupFamily
+    , (Just . ("Description",) . toJSON) _elastiCacheParameterGroupDescription
+    , fmap (("Properties",) . toJSON) _elastiCacheParameterGroupProperties
     ]
 
 instance FromJSON ElastiCacheParameterGroup where
   parseJSON (Object obj) =
     ElastiCacheParameterGroup <$>
-      obj .: "CacheParameterGroupFamily" <*>
-      obj .: "Description" <*>
-      obj .:? "Properties"
+      (obj .: "CacheParameterGroupFamily") <*>
+      (obj .: "Description") <*>
+      (obj .:? "Properties")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheParameterGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html
 
@@ -19,29 +20,29 @@
 -- 'elastiCacheReplicationGroup' for a more convenient constructor.
 data ElastiCacheReplicationGroup =
   ElastiCacheReplicationGroup
-  { _elastiCacheReplicationGroupAutoMinorVersionUpgrade :: Maybe (Val Bool')
-  , _elastiCacheReplicationGroupAutomaticFailoverEnabled :: Maybe (Val Bool')
+  { _elastiCacheReplicationGroupAutoMinorVersionUpgrade :: Maybe (Val Bool)
+  , _elastiCacheReplicationGroupAutomaticFailoverEnabled :: Maybe (Val Bool)
   , _elastiCacheReplicationGroupCacheNodeType :: Maybe (Val Text)
   , _elastiCacheReplicationGroupCacheParameterGroupName :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupCacheSecurityGroupNames :: Maybe [Val Text]
+  , _elastiCacheReplicationGroupCacheSecurityGroupNames :: Maybe (ValList Text)
   , _elastiCacheReplicationGroupCacheSubnetGroupName :: Maybe (Val Text)
   , _elastiCacheReplicationGroupEngine :: Maybe (Val Text)
   , _elastiCacheReplicationGroupEngineVersion :: Maybe (Val Text)
   , _elastiCacheReplicationGroupNodeGroupConfiguration :: Maybe [ElastiCacheReplicationGroupNodeGroupConfiguration]
   , _elastiCacheReplicationGroupNotificationTopicArn :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupNumCacheClusters :: Maybe (Val Integer')
-  , _elastiCacheReplicationGroupNumNodeGroups :: Maybe (Val Integer')
-  , _elastiCacheReplicationGroupPort :: Maybe (Val Integer')
-  , _elastiCacheReplicationGroupPreferredCacheClusterAZs :: Maybe [Val Text]
+  , _elastiCacheReplicationGroupNumCacheClusters :: Maybe (Val Integer)
+  , _elastiCacheReplicationGroupNumNodeGroups :: Maybe (Val Integer)
+  , _elastiCacheReplicationGroupPort :: Maybe (Val Integer)
+  , _elastiCacheReplicationGroupPreferredCacheClusterAZs :: Maybe (ValList Text)
   , _elastiCacheReplicationGroupPreferredMaintenanceWindow :: Maybe (Val Text)
   , _elastiCacheReplicationGroupPrimaryClusterId :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupReplicasPerNodeGroup :: Maybe (Val Integer')
+  , _elastiCacheReplicationGroupReplicasPerNodeGroup :: Maybe (Val Integer)
   , _elastiCacheReplicationGroupReplicationGroupDescription :: Val Text
   , _elastiCacheReplicationGroupReplicationGroupId :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupSecurityGroupIds :: Maybe [Val Text]
-  , _elastiCacheReplicationGroupSnapshotArns :: Maybe [Val Text]
+  , _elastiCacheReplicationGroupSecurityGroupIds :: Maybe (ValList Text)
+  , _elastiCacheReplicationGroupSnapshotArns :: Maybe (ValList Text)
   , _elastiCacheReplicationGroupSnapshotName :: Maybe (Val Text)
-  , _elastiCacheReplicationGroupSnapshotRetentionLimit :: Maybe (Val Integer')
+  , _elastiCacheReplicationGroupSnapshotRetentionLimit :: Maybe (Val Integer)
   , _elastiCacheReplicationGroupSnapshotWindow :: Maybe (Val Text)
   , _elastiCacheReplicationGroupSnapshottingClusterId :: Maybe (Val Text)
   , _elastiCacheReplicationGroupTags :: Maybe [Tag]
@@ -51,63 +52,63 @@
   toJSON ElastiCacheReplicationGroup{..} =
     object $
     catMaybes
-    [ ("AutoMinorVersionUpgrade" .=) <$> _elastiCacheReplicationGroupAutoMinorVersionUpgrade
-    , ("AutomaticFailoverEnabled" .=) <$> _elastiCacheReplicationGroupAutomaticFailoverEnabled
-    , ("CacheNodeType" .=) <$> _elastiCacheReplicationGroupCacheNodeType
-    , ("CacheParameterGroupName" .=) <$> _elastiCacheReplicationGroupCacheParameterGroupName
-    , ("CacheSecurityGroupNames" .=) <$> _elastiCacheReplicationGroupCacheSecurityGroupNames
-    , ("CacheSubnetGroupName" .=) <$> _elastiCacheReplicationGroupCacheSubnetGroupName
-    , ("Engine" .=) <$> _elastiCacheReplicationGroupEngine
-    , ("EngineVersion" .=) <$> _elastiCacheReplicationGroupEngineVersion
-    , ("NodeGroupConfiguration" .=) <$> _elastiCacheReplicationGroupNodeGroupConfiguration
-    , ("NotificationTopicArn" .=) <$> _elastiCacheReplicationGroupNotificationTopicArn
-    , ("NumCacheClusters" .=) <$> _elastiCacheReplicationGroupNumCacheClusters
-    , ("NumNodeGroups" .=) <$> _elastiCacheReplicationGroupNumNodeGroups
-    , ("Port" .=) <$> _elastiCacheReplicationGroupPort
-    , ("PreferredCacheClusterAZs" .=) <$> _elastiCacheReplicationGroupPreferredCacheClusterAZs
-    , ("PreferredMaintenanceWindow" .=) <$> _elastiCacheReplicationGroupPreferredMaintenanceWindow
-    , ("PrimaryClusterId" .=) <$> _elastiCacheReplicationGroupPrimaryClusterId
-    , ("ReplicasPerNodeGroup" .=) <$> _elastiCacheReplicationGroupReplicasPerNodeGroup
-    , Just ("ReplicationGroupDescription" .= _elastiCacheReplicationGroupReplicationGroupDescription)
-    , ("ReplicationGroupId" .=) <$> _elastiCacheReplicationGroupReplicationGroupId
-    , ("SecurityGroupIds" .=) <$> _elastiCacheReplicationGroupSecurityGroupIds
-    , ("SnapshotArns" .=) <$> _elastiCacheReplicationGroupSnapshotArns
-    , ("SnapshotName" .=) <$> _elastiCacheReplicationGroupSnapshotName
-    , ("SnapshotRetentionLimit" .=) <$> _elastiCacheReplicationGroupSnapshotRetentionLimit
-    , ("SnapshotWindow" .=) <$> _elastiCacheReplicationGroupSnapshotWindow
-    , ("SnapshottingClusterId" .=) <$> _elastiCacheReplicationGroupSnapshottingClusterId
-    , ("Tags" .=) <$> _elastiCacheReplicationGroupTags
+    [ fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutoMinorVersionUpgrade
+    , fmap (("AutomaticFailoverEnabled",) . toJSON . fmap Bool') _elastiCacheReplicationGroupAutomaticFailoverEnabled
+    , fmap (("CacheNodeType",) . toJSON) _elastiCacheReplicationGroupCacheNodeType
+    , fmap (("CacheParameterGroupName",) . toJSON) _elastiCacheReplicationGroupCacheParameterGroupName
+    , fmap (("CacheSecurityGroupNames",) . toJSON) _elastiCacheReplicationGroupCacheSecurityGroupNames
+    , fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheReplicationGroupCacheSubnetGroupName
+    , fmap (("Engine",) . toJSON) _elastiCacheReplicationGroupEngine
+    , fmap (("EngineVersion",) . toJSON) _elastiCacheReplicationGroupEngineVersion
+    , fmap (("NodeGroupConfiguration",) . toJSON) _elastiCacheReplicationGroupNodeGroupConfiguration
+    , fmap (("NotificationTopicArn",) . toJSON) _elastiCacheReplicationGroupNotificationTopicArn
+    , fmap (("NumCacheClusters",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumCacheClusters
+    , fmap (("NumNodeGroups",) . toJSON . fmap Integer') _elastiCacheReplicationGroupNumNodeGroups
+    , fmap (("Port",) . toJSON . fmap Integer') _elastiCacheReplicationGroupPort
+    , fmap (("PreferredCacheClusterAZs",) . toJSON) _elastiCacheReplicationGroupPreferredCacheClusterAZs
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _elastiCacheReplicationGroupPreferredMaintenanceWindow
+    , fmap (("PrimaryClusterId",) . toJSON) _elastiCacheReplicationGroupPrimaryClusterId
+    , fmap (("ReplicasPerNodeGroup",) . toJSON . fmap Integer') _elastiCacheReplicationGroupReplicasPerNodeGroup
+    , (Just . ("ReplicationGroupDescription",) . toJSON) _elastiCacheReplicationGroupReplicationGroupDescription
+    , fmap (("ReplicationGroupId",) . toJSON) _elastiCacheReplicationGroupReplicationGroupId
+    , fmap (("SecurityGroupIds",) . toJSON) _elastiCacheReplicationGroupSecurityGroupIds
+    , fmap (("SnapshotArns",) . toJSON) _elastiCacheReplicationGroupSnapshotArns
+    , fmap (("SnapshotName",) . toJSON) _elastiCacheReplicationGroupSnapshotName
+    , fmap (("SnapshotRetentionLimit",) . toJSON . fmap Integer') _elastiCacheReplicationGroupSnapshotRetentionLimit
+    , fmap (("SnapshotWindow",) . toJSON) _elastiCacheReplicationGroupSnapshotWindow
+    , fmap (("SnapshottingClusterId",) . toJSON) _elastiCacheReplicationGroupSnapshottingClusterId
+    , fmap (("Tags",) . toJSON) _elastiCacheReplicationGroupTags
     ]
 
 instance FromJSON ElastiCacheReplicationGroup where
   parseJSON (Object obj) =
     ElastiCacheReplicationGroup <$>
-      obj .:? "AutoMinorVersionUpgrade" <*>
-      obj .:? "AutomaticFailoverEnabled" <*>
-      obj .:? "CacheNodeType" <*>
-      obj .:? "CacheParameterGroupName" <*>
-      obj .:? "CacheSecurityGroupNames" <*>
-      obj .:? "CacheSubnetGroupName" <*>
-      obj .:? "Engine" <*>
-      obj .:? "EngineVersion" <*>
-      obj .:? "NodeGroupConfiguration" <*>
-      obj .:? "NotificationTopicArn" <*>
-      obj .:? "NumCacheClusters" <*>
-      obj .:? "NumNodeGroups" <*>
-      obj .:? "Port" <*>
-      obj .:? "PreferredCacheClusterAZs" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "PrimaryClusterId" <*>
-      obj .:? "ReplicasPerNodeGroup" <*>
-      obj .: "ReplicationGroupDescription" <*>
-      obj .:? "ReplicationGroupId" <*>
-      obj .:? "SecurityGroupIds" <*>
-      obj .:? "SnapshotArns" <*>
-      obj .:? "SnapshotName" <*>
-      obj .:? "SnapshotRetentionLimit" <*>
-      obj .:? "SnapshotWindow" <*>
-      obj .:? "SnapshottingClusterId" <*>
-      obj .:? "Tags"
+      fmap (fmap (fmap unBool')) (obj .:? "AutoMinorVersionUpgrade") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AutomaticFailoverEnabled") <*>
+      (obj .:? "CacheNodeType") <*>
+      (obj .:? "CacheParameterGroupName") <*>
+      (obj .:? "CacheSecurityGroupNames") <*>
+      (obj .:? "CacheSubnetGroupName") <*>
+      (obj .:? "Engine") <*>
+      (obj .:? "EngineVersion") <*>
+      (obj .:? "NodeGroupConfiguration") <*>
+      (obj .:? "NotificationTopicArn") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumCacheClusters") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumNodeGroups") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "PreferredCacheClusterAZs") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      (obj .:? "PrimaryClusterId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ReplicasPerNodeGroup") <*>
+      (obj .: "ReplicationGroupDescription") <*>
+      (obj .:? "ReplicationGroupId") <*>
+      (obj .:? "SecurityGroupIds") <*>
+      (obj .:? "SnapshotArns") <*>
+      (obj .:? "SnapshotName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SnapshotRetentionLimit") <*>
+      (obj .:? "SnapshotWindow") <*>
+      (obj .:? "SnapshottingClusterId") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheReplicationGroup' containing required fields
@@ -146,11 +147,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-autominorversionupgrade
-ecrgAutoMinorVersionUpgrade :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool'))
+ecrgAutoMinorVersionUpgrade :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool))
 ecrgAutoMinorVersionUpgrade = lens _elastiCacheReplicationGroupAutoMinorVersionUpgrade (\s a -> s { _elastiCacheReplicationGroupAutoMinorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-automaticfailoverenabled
-ecrgAutomaticFailoverEnabled :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool'))
+ecrgAutomaticFailoverEnabled :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool))
 ecrgAutomaticFailoverEnabled = lens _elastiCacheReplicationGroupAutomaticFailoverEnabled (\s a -> s { _elastiCacheReplicationGroupAutomaticFailoverEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachenodetype
@@ -162,7 +163,7 @@
 ecrgCacheParameterGroupName = lens _elastiCacheReplicationGroupCacheParameterGroupName (\s a -> s { _elastiCacheReplicationGroupCacheParameterGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesecuritygroupnames
-ecrgCacheSecurityGroupNames :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
+ecrgCacheSecurityGroupNames :: Lens' ElastiCacheReplicationGroup (Maybe (ValList Text))
 ecrgCacheSecurityGroupNames = lens _elastiCacheReplicationGroupCacheSecurityGroupNames (\s a -> s { _elastiCacheReplicationGroupCacheSecurityGroupNames = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesubnetgroupname
@@ -186,19 +187,19 @@
 ecrgNotificationTopicArn = lens _elastiCacheReplicationGroupNotificationTopicArn (\s a -> s { _elastiCacheReplicationGroupNotificationTopicArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numcacheclusters
-ecrgNumCacheClusters :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
+ecrgNumCacheClusters :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer))
 ecrgNumCacheClusters = lens _elastiCacheReplicationGroupNumCacheClusters (\s a -> s { _elastiCacheReplicationGroupNumCacheClusters = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numnodegroups
-ecrgNumNodeGroups :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
+ecrgNumNodeGroups :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer))
 ecrgNumNodeGroups = lens _elastiCacheReplicationGroupNumNodeGroups (\s a -> s { _elastiCacheReplicationGroupNumNodeGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-port
-ecrgPort :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
+ecrgPort :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer))
 ecrgPort = lens _elastiCacheReplicationGroupPort (\s a -> s { _elastiCacheReplicationGroupPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredcacheclusterazs
-ecrgPreferredCacheClusterAZs :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
+ecrgPreferredCacheClusterAZs :: Lens' ElastiCacheReplicationGroup (Maybe (ValList Text))
 ecrgPreferredCacheClusterAZs = lens _elastiCacheReplicationGroupPreferredCacheClusterAZs (\s a -> s { _elastiCacheReplicationGroupPreferredCacheClusterAZs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredmaintenancewindow
@@ -210,7 +211,7 @@
 ecrgPrimaryClusterId = lens _elastiCacheReplicationGroupPrimaryClusterId (\s a -> s { _elastiCacheReplicationGroupPrimaryClusterId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicaspernodegroup
-ecrgReplicasPerNodeGroup :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
+ecrgReplicasPerNodeGroup :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer))
 ecrgReplicasPerNodeGroup = lens _elastiCacheReplicationGroupReplicasPerNodeGroup (\s a -> s { _elastiCacheReplicationGroupReplicasPerNodeGroup = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupdescription
@@ -222,11 +223,11 @@
 ecrgReplicationGroupId = lens _elastiCacheReplicationGroupReplicationGroupId (\s a -> s { _elastiCacheReplicationGroupReplicationGroupId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-securitygroupids
-ecrgSecurityGroupIds :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
+ecrgSecurityGroupIds :: Lens' ElastiCacheReplicationGroup (Maybe (ValList Text))
 ecrgSecurityGroupIds = lens _elastiCacheReplicationGroupSecurityGroupIds (\s a -> s { _elastiCacheReplicationGroupSecurityGroupIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotarns
-ecrgSnapshotArns :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
+ecrgSnapshotArns :: Lens' ElastiCacheReplicationGroup (Maybe (ValList Text))
 ecrgSnapshotArns = lens _elastiCacheReplicationGroupSnapshotArns (\s a -> s { _elastiCacheReplicationGroupSnapshotArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotname
@@ -234,7 +235,7 @@
 ecrgSnapshotName = lens _elastiCacheReplicationGroupSnapshotName (\s a -> s { _elastiCacheReplicationGroupSnapshotName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotretentionlimit
-ecrgSnapshotRetentionLimit :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
+ecrgSnapshotRetentionLimit :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer))
 ecrgSnapshotRetentionLimit = lens _elastiCacheReplicationGroupSnapshotRetentionLimit (\s a -> s { _elastiCacheReplicationGroupSnapshotRetentionLimit = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotwindow
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html
 
@@ -25,13 +26,13 @@
   toJSON ElastiCacheSecurityGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _elastiCacheSecurityGroupDescription)
+    [ (Just . ("Description",) . toJSON) _elastiCacheSecurityGroupDescription
     ]
 
 instance FromJSON ElastiCacheSecurityGroup where
   parseJSON (Object obj) =
     ElastiCacheSecurityGroup <$>
-      obj .: "Description"
+      (obj .: "Description")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheSecurityGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html
 
@@ -27,17 +28,17 @@
   toJSON ElastiCacheSecurityGroupIngress{..} =
     object $
     catMaybes
-    [ Just ("CacheSecurityGroupName" .= _elastiCacheSecurityGroupIngressCacheSecurityGroupName)
-    , Just ("EC2SecurityGroupName" .= _elastiCacheSecurityGroupIngressEC2SecurityGroupName)
-    , ("EC2SecurityGroupOwnerId" .=) <$> _elastiCacheSecurityGroupIngressEC2SecurityGroupOwnerId
+    [ (Just . ("CacheSecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressCacheSecurityGroupName
+    , (Just . ("EC2SecurityGroupName",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupName
+    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _elastiCacheSecurityGroupIngressEC2SecurityGroupOwnerId
     ]
 
 instance FromJSON ElastiCacheSecurityGroupIngress where
   parseJSON (Object obj) =
     ElastiCacheSecurityGroupIngress <$>
-      obj .: "CacheSecurityGroupName" <*>
-      obj .: "EC2SecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupOwnerId"
+      (obj .: "CacheSecurityGroupName") <*>
+      (obj .: "EC2SecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupOwnerId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheSecurityGroupIngress' containing required
diff --git a/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs b/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElastiCacheSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html
 
@@ -20,31 +21,31 @@
   ElastiCacheSubnetGroup
   { _elastiCacheSubnetGroupCacheSubnetGroupName :: Maybe (Val Text)
   , _elastiCacheSubnetGroupDescription :: Val Text
-  , _elastiCacheSubnetGroupSubnetIds :: [Val Text]
+  , _elastiCacheSubnetGroupSubnetIds :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON ElastiCacheSubnetGroup where
   toJSON ElastiCacheSubnetGroup{..} =
     object $
     catMaybes
-    [ ("CacheSubnetGroupName" .=) <$> _elastiCacheSubnetGroupCacheSubnetGroupName
-    , Just ("Description" .= _elastiCacheSubnetGroupDescription)
-    , Just ("SubnetIds" .= _elastiCacheSubnetGroupSubnetIds)
+    [ fmap (("CacheSubnetGroupName",) . toJSON) _elastiCacheSubnetGroupCacheSubnetGroupName
+    , (Just . ("Description",) . toJSON) _elastiCacheSubnetGroupDescription
+    , (Just . ("SubnetIds",) . toJSON) _elastiCacheSubnetGroupSubnetIds
     ]
 
 instance FromJSON ElastiCacheSubnetGroup where
   parseJSON (Object obj) =
     ElastiCacheSubnetGroup <$>
-      obj .:? "CacheSubnetGroupName" <*>
-      obj .: "Description" <*>
-      obj .: "SubnetIds"
+      (obj .:? "CacheSubnetGroupName") <*>
+      (obj .: "Description") <*>
+      (obj .: "SubnetIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElastiCacheSubnetGroup' containing required fields as
 -- arguments.
 elastiCacheSubnetGroup
   :: Val Text -- ^ 'ecsugDescription'
-  -> [Val Text] -- ^ 'ecsugSubnetIds'
+  -> ValList Text -- ^ 'ecsugSubnetIds'
   -> ElastiCacheSubnetGroup
 elastiCacheSubnetGroup descriptionarg subnetIdsarg =
   ElastiCacheSubnetGroup
@@ -62,5 +63,5 @@
 ecsugDescription = lens _elastiCacheSubnetGroupDescription (\s a -> s { _elastiCacheSubnetGroupDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html#cfn-elasticache-subnetgroup-subnetids
-ecsugSubnetIds :: Lens' ElastiCacheSubnetGroup [Val Text]
+ecsugSubnetIds :: Lens' ElastiCacheSubnetGroup (ValList Text)
 ecsugSubnetIds = lens _elastiCacheSubnetGroupSubnetIds (\s a -> s { _elastiCacheSubnetGroupSubnetIds = a })
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html
 
@@ -26,15 +27,15 @@
   toJSON ElasticBeanstalkApplication{..} =
     object $
     catMaybes
-    [ ("ApplicationName" .=) <$> _elasticBeanstalkApplicationApplicationName
-    , ("Description" .=) <$> _elasticBeanstalkApplicationDescription
+    [ fmap (("ApplicationName",) . toJSON) _elasticBeanstalkApplicationApplicationName
+    , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationDescription
     ]
 
 instance FromJSON ElasticBeanstalkApplication where
   parseJSON (Object obj) =
     ElasticBeanstalkApplication <$>
-      obj .:? "ApplicationName" <*>
-      obj .:? "Description"
+      (obj .:? "ApplicationName") <*>
+      (obj .:? "Description")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkApplication' containing required fields
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplicationVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html
 
@@ -27,17 +28,17 @@
   toJSON ElasticBeanstalkApplicationVersion{..} =
     object $
     catMaybes
-    [ Just ("ApplicationName" .= _elasticBeanstalkApplicationVersionApplicationName)
-    , ("Description" .=) <$> _elasticBeanstalkApplicationVersionDescription
-    , Just ("SourceBundle" .= _elasticBeanstalkApplicationVersionSourceBundle)
+    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkApplicationVersionApplicationName
+    , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationVersionDescription
+    , (Just . ("SourceBundle",) . toJSON) _elasticBeanstalkApplicationVersionSourceBundle
     ]
 
 instance FromJSON ElasticBeanstalkApplicationVersion where
   parseJSON (Object obj) =
     ElasticBeanstalkApplicationVersion <$>
-      obj .: "ApplicationName" <*>
-      obj .:? "Description" <*>
-      obj .: "SourceBundle"
+      (obj .: "ApplicationName") <*>
+      (obj .:? "Description") <*>
+      (obj .: "SourceBundle")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkApplicationVersion' containing required
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html
 
@@ -32,23 +33,23 @@
   toJSON ElasticBeanstalkConfigurationTemplate{..} =
     object $
     catMaybes
-    [ Just ("ApplicationName" .= _elasticBeanstalkConfigurationTemplateApplicationName)
-    , ("Description" .=) <$> _elasticBeanstalkConfigurationTemplateDescription
-    , ("EnvironmentId" .=) <$> _elasticBeanstalkConfigurationTemplateEnvironmentId
-    , ("OptionSettings" .=) <$> _elasticBeanstalkConfigurationTemplateOptionSettings
-    , ("SolutionStackName" .=) <$> _elasticBeanstalkConfigurationTemplateSolutionStackName
-    , ("SourceConfiguration" .=) <$> _elasticBeanstalkConfigurationTemplateSourceConfiguration
+    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkConfigurationTemplateApplicationName
+    , fmap (("Description",) . toJSON) _elasticBeanstalkConfigurationTemplateDescription
+    , fmap (("EnvironmentId",) . toJSON) _elasticBeanstalkConfigurationTemplateEnvironmentId
+    , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkConfigurationTemplateOptionSettings
+    , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkConfigurationTemplateSolutionStackName
+    , fmap (("SourceConfiguration",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfiguration
     ]
 
 instance FromJSON ElasticBeanstalkConfigurationTemplate where
   parseJSON (Object obj) =
     ElasticBeanstalkConfigurationTemplate <$>
-      obj .: "ApplicationName" <*>
-      obj .:? "Description" <*>
-      obj .:? "EnvironmentId" <*>
-      obj .:? "OptionSettings" <*>
-      obj .:? "SolutionStackName" <*>
-      obj .:? "SourceConfiguration"
+      (obj .: "ApplicationName") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "EnvironmentId") <*>
+      (obj .:? "OptionSettings") <*>
+      (obj .:? "SolutionStackName") <*>
+      (obj .:? "SourceConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkConfigurationTemplate' containing
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html
 
@@ -36,31 +37,31 @@
   toJSON ElasticBeanstalkEnvironment{..} =
     object $
     catMaybes
-    [ Just ("ApplicationName" .= _elasticBeanstalkEnvironmentApplicationName)
-    , ("CNAMEPrefix" .=) <$> _elasticBeanstalkEnvironmentCNAMEPrefix
-    , ("Description" .=) <$> _elasticBeanstalkEnvironmentDescription
-    , ("EnvironmentName" .=) <$> _elasticBeanstalkEnvironmentEnvironmentName
-    , ("OptionSettings" .=) <$> _elasticBeanstalkEnvironmentOptionSettings
-    , ("SolutionStackName" .=) <$> _elasticBeanstalkEnvironmentSolutionStackName
-    , ("Tags" .=) <$> _elasticBeanstalkEnvironmentTags
-    , ("TemplateName" .=) <$> _elasticBeanstalkEnvironmentTemplateName
-    , ("Tier" .=) <$> _elasticBeanstalkEnvironmentTier
-    , ("VersionLabel" .=) <$> _elasticBeanstalkEnvironmentVersionLabel
+    [ (Just . ("ApplicationName",) . toJSON) _elasticBeanstalkEnvironmentApplicationName
+    , fmap (("CNAMEPrefix",) . toJSON) _elasticBeanstalkEnvironmentCNAMEPrefix
+    , fmap (("Description",) . toJSON) _elasticBeanstalkEnvironmentDescription
+    , fmap (("EnvironmentName",) . toJSON) _elasticBeanstalkEnvironmentEnvironmentName
+    , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkEnvironmentOptionSettings
+    , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkEnvironmentSolutionStackName
+    , fmap (("Tags",) . toJSON) _elasticBeanstalkEnvironmentTags
+    , fmap (("TemplateName",) . toJSON) _elasticBeanstalkEnvironmentTemplateName
+    , fmap (("Tier",) . toJSON) _elasticBeanstalkEnvironmentTier
+    , fmap (("VersionLabel",) . toJSON) _elasticBeanstalkEnvironmentVersionLabel
     ]
 
 instance FromJSON ElasticBeanstalkEnvironment where
   parseJSON (Object obj) =
     ElasticBeanstalkEnvironment <$>
-      obj .: "ApplicationName" <*>
-      obj .:? "CNAMEPrefix" <*>
-      obj .:? "Description" <*>
-      obj .:? "EnvironmentName" <*>
-      obj .:? "OptionSettings" <*>
-      obj .:? "SolutionStackName" <*>
-      obj .:? "Tags" <*>
-      obj .:? "TemplateName" <*>
-      obj .:? "Tier" <*>
-      obj .:? "VersionLabel"
+      (obj .: "ApplicationName") <*>
+      (obj .:? "CNAMEPrefix") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "EnvironmentName") <*>
+      (obj .:? "OptionSettings") <*>
+      (obj .:? "SolutionStackName") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "TemplateName") <*>
+      (obj .:? "Tier") <*>
+      (obj .:? "VersionLabel")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkEnvironment' containing required fields
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingLoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html
 
@@ -28,19 +29,19 @@
   ElasticLoadBalancingLoadBalancer
   { _elasticLoadBalancingLoadBalancerAccessLoggingPolicy :: Maybe ElasticLoadBalancingLoadBalancerAccessLoggingPolicy
   , _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy :: Maybe [ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy]
-  , _elasticLoadBalancingLoadBalancerAvailabilityZones :: Maybe [Val Text]
+  , _elasticLoadBalancingLoadBalancerAvailabilityZones :: Maybe (ValList Text)
   , _elasticLoadBalancingLoadBalancerConnectionDrainingPolicy :: Maybe ElasticLoadBalancingLoadBalancerConnectionDrainingPolicy
   , _elasticLoadBalancingLoadBalancerConnectionSettings :: Maybe ElasticLoadBalancingLoadBalancerConnectionSettings
-  , _elasticLoadBalancingLoadBalancerCrossZone :: Maybe (Val Bool')
+  , _elasticLoadBalancingLoadBalancerCrossZone :: Maybe (Val Bool)
   , _elasticLoadBalancingLoadBalancerHealthCheck :: Maybe ElasticLoadBalancingLoadBalancerHealthCheck
-  , _elasticLoadBalancingLoadBalancerInstances :: Maybe [Val Text]
+  , _elasticLoadBalancingLoadBalancerInstances :: Maybe (ValList Text)
   , _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicy :: Maybe [ElasticLoadBalancingLoadBalancerLBCookieStickinessPolicy]
   , _elasticLoadBalancingLoadBalancerListeners :: [ElasticLoadBalancingLoadBalancerListeners]
   , _elasticLoadBalancingLoadBalancerLoadBalancerName :: Maybe (Val Text)
   , _elasticLoadBalancingLoadBalancerPolicies :: Maybe [ElasticLoadBalancingLoadBalancerPolicies]
   , _elasticLoadBalancingLoadBalancerScheme :: Maybe (Val Text)
-  , _elasticLoadBalancingLoadBalancerSecurityGroups :: Maybe [Val Text]
-  , _elasticLoadBalancingLoadBalancerSubnets :: Maybe [Val Text]
+  , _elasticLoadBalancingLoadBalancerSecurityGroups :: Maybe (ValList Text)
+  , _elasticLoadBalancingLoadBalancerSubnets :: Maybe (ValList Text)
   , _elasticLoadBalancingLoadBalancerTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -48,43 +49,43 @@
   toJSON ElasticLoadBalancingLoadBalancer{..} =
     object $
     catMaybes
-    [ ("AccessLoggingPolicy" .=) <$> _elasticLoadBalancingLoadBalancerAccessLoggingPolicy
-    , ("AppCookieStickinessPolicy" .=) <$> _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy
-    , ("AvailabilityZones" .=) <$> _elasticLoadBalancingLoadBalancerAvailabilityZones
-    , ("ConnectionDrainingPolicy" .=) <$> _elasticLoadBalancingLoadBalancerConnectionDrainingPolicy
-    , ("ConnectionSettings" .=) <$> _elasticLoadBalancingLoadBalancerConnectionSettings
-    , ("CrossZone" .=) <$> _elasticLoadBalancingLoadBalancerCrossZone
-    , ("HealthCheck" .=) <$> _elasticLoadBalancingLoadBalancerHealthCheck
-    , ("Instances" .=) <$> _elasticLoadBalancingLoadBalancerInstances
-    , ("LBCookieStickinessPolicy" .=) <$> _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicy
-    , Just ("Listeners" .= _elasticLoadBalancingLoadBalancerListeners)
-    , ("LoadBalancerName" .=) <$> _elasticLoadBalancingLoadBalancerLoadBalancerName
-    , ("Policies" .=) <$> _elasticLoadBalancingLoadBalancerPolicies
-    , ("Scheme" .=) <$> _elasticLoadBalancingLoadBalancerScheme
-    , ("SecurityGroups" .=) <$> _elasticLoadBalancingLoadBalancerSecurityGroups
-    , ("Subnets" .=) <$> _elasticLoadBalancingLoadBalancerSubnets
-    , ("Tags" .=) <$> _elasticLoadBalancingLoadBalancerTags
+    [ fmap (("AccessLoggingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAccessLoggingPolicy
+    , fmap (("AppCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy
+    , fmap (("AvailabilityZones",) . toJSON) _elasticLoadBalancingLoadBalancerAvailabilityZones
+    , fmap (("ConnectionDrainingPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionDrainingPolicy
+    , fmap (("ConnectionSettings",) . toJSON) _elasticLoadBalancingLoadBalancerConnectionSettings
+    , fmap (("CrossZone",) . toJSON . fmap Bool') _elasticLoadBalancingLoadBalancerCrossZone
+    , fmap (("HealthCheck",) . toJSON) _elasticLoadBalancingLoadBalancerHealthCheck
+    , fmap (("Instances",) . toJSON) _elasticLoadBalancingLoadBalancerInstances
+    , fmap (("LBCookieStickinessPolicy",) . toJSON) _elasticLoadBalancingLoadBalancerLBCookieStickinessPolicy
+    , (Just . ("Listeners",) . toJSON) _elasticLoadBalancingLoadBalancerListeners
+    , fmap (("LoadBalancerName",) . toJSON) _elasticLoadBalancingLoadBalancerLoadBalancerName
+    , fmap (("Policies",) . toJSON) _elasticLoadBalancingLoadBalancerPolicies
+    , fmap (("Scheme",) . toJSON) _elasticLoadBalancingLoadBalancerScheme
+    , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingLoadBalancerSecurityGroups
+    , fmap (("Subnets",) . toJSON) _elasticLoadBalancingLoadBalancerSubnets
+    , fmap (("Tags",) . toJSON) _elasticLoadBalancingLoadBalancerTags
     ]
 
 instance FromJSON ElasticLoadBalancingLoadBalancer where
   parseJSON (Object obj) =
     ElasticLoadBalancingLoadBalancer <$>
-      obj .:? "AccessLoggingPolicy" <*>
-      obj .:? "AppCookieStickinessPolicy" <*>
-      obj .:? "AvailabilityZones" <*>
-      obj .:? "ConnectionDrainingPolicy" <*>
-      obj .:? "ConnectionSettings" <*>
-      obj .:? "CrossZone" <*>
-      obj .:? "HealthCheck" <*>
-      obj .:? "Instances" <*>
-      obj .:? "LBCookieStickinessPolicy" <*>
-      obj .: "Listeners" <*>
-      obj .:? "LoadBalancerName" <*>
-      obj .:? "Policies" <*>
-      obj .:? "Scheme" <*>
-      obj .:? "SecurityGroups" <*>
-      obj .:? "Subnets" <*>
-      obj .:? "Tags"
+      (obj .:? "AccessLoggingPolicy") <*>
+      (obj .:? "AppCookieStickinessPolicy") <*>
+      (obj .:? "AvailabilityZones") <*>
+      (obj .:? "ConnectionDrainingPolicy") <*>
+      (obj .:? "ConnectionSettings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CrossZone") <*>
+      (obj .:? "HealthCheck") <*>
+      (obj .:? "Instances") <*>
+      (obj .:? "LBCookieStickinessPolicy") <*>
+      (obj .: "Listeners") <*>
+      (obj .:? "LoadBalancerName") <*>
+      (obj .:? "Policies") <*>
+      (obj .:? "Scheme") <*>
+      (obj .:? "SecurityGroups") <*>
+      (obj .:? "Subnets") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingLoadBalancer' containing required
@@ -121,7 +122,7 @@
 elblbAppCookieStickinessPolicy = lens _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy (\s a -> s { _elasticLoadBalancingLoadBalancerAppCookieStickinessPolicy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-availabilityzones
-elblbAvailabilityZones :: Lens' ElasticLoadBalancingLoadBalancer (Maybe [Val Text])
+elblbAvailabilityZones :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (ValList Text))
 elblbAvailabilityZones = lens _elasticLoadBalancingLoadBalancerAvailabilityZones (\s a -> s { _elasticLoadBalancingLoadBalancerAvailabilityZones = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-connectiondrainingpolicy
@@ -133,7 +134,7 @@
 elblbConnectionSettings = lens _elasticLoadBalancingLoadBalancerConnectionSettings (\s a -> s { _elasticLoadBalancingLoadBalancerConnectionSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-crosszone
-elblbCrossZone :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (Val Bool'))
+elblbCrossZone :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (Val Bool))
 elblbCrossZone = lens _elasticLoadBalancingLoadBalancerCrossZone (\s a -> s { _elasticLoadBalancingLoadBalancerCrossZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-healthcheck
@@ -141,7 +142,7 @@
 elblbHealthCheck = lens _elasticLoadBalancingLoadBalancerHealthCheck (\s a -> s { _elasticLoadBalancingLoadBalancerHealthCheck = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-instances
-elblbInstances :: Lens' ElasticLoadBalancingLoadBalancer (Maybe [Val Text])
+elblbInstances :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (ValList Text))
 elblbInstances = lens _elasticLoadBalancingLoadBalancerInstances (\s a -> s { _elasticLoadBalancingLoadBalancerInstances = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-lbcookiestickinesspolicy
@@ -165,11 +166,11 @@
 elblbScheme = lens _elasticLoadBalancingLoadBalancerScheme (\s a -> s { _elasticLoadBalancingLoadBalancerScheme = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-securitygroups
-elblbSecurityGroups :: Lens' ElasticLoadBalancingLoadBalancer (Maybe [Val Text])
+elblbSecurityGroups :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (ValList Text))
 elblbSecurityGroups = lens _elasticLoadBalancingLoadBalancerSecurityGroups (\s a -> s { _elasticLoadBalancingLoadBalancerSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-subnets
-elblbSubnets :: Lens' ElasticLoadBalancingLoadBalancer (Maybe [Val Text])
+elblbSubnets :: Lens' ElasticLoadBalancingLoadBalancer (Maybe (ValList Text))
 elblbSubnets = lens _elasticLoadBalancingLoadBalancerSubnets (\s a -> s { _elasticLoadBalancingLoadBalancerSubnets = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-elasticloadbalancing-loadbalancer-tags
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2Listener.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html
 
@@ -22,7 +23,7 @@
   { _elasticLoadBalancingV2ListenerCertificates :: Maybe [ElasticLoadBalancingV2ListenerCertificate]
   , _elasticLoadBalancingV2ListenerDefaultActions :: [ElasticLoadBalancingV2ListenerAction]
   , _elasticLoadBalancingV2ListenerLoadBalancerArn :: Val Text
-  , _elasticLoadBalancingV2ListenerPort :: Val Integer'
+  , _elasticLoadBalancingV2ListenerPort :: Val Integer
   , _elasticLoadBalancingV2ListenerProtocol :: Val Text
   , _elasticLoadBalancingV2ListenerSslPolicy :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -31,23 +32,23 @@
   toJSON ElasticLoadBalancingV2Listener{..} =
     object $
     catMaybes
-    [ ("Certificates" .=) <$> _elasticLoadBalancingV2ListenerCertificates
-    , Just ("DefaultActions" .= _elasticLoadBalancingV2ListenerDefaultActions)
-    , Just ("LoadBalancerArn" .= _elasticLoadBalancingV2ListenerLoadBalancerArn)
-    , Just ("Port" .= _elasticLoadBalancingV2ListenerPort)
-    , Just ("Protocol" .= _elasticLoadBalancingV2ListenerProtocol)
-    , ("SslPolicy" .=) <$> _elasticLoadBalancingV2ListenerSslPolicy
+    [ fmap (("Certificates",) . toJSON) _elasticLoadBalancingV2ListenerCertificates
+    , (Just . ("DefaultActions",) . toJSON) _elasticLoadBalancingV2ListenerDefaultActions
+    , (Just . ("LoadBalancerArn",) . toJSON) _elasticLoadBalancingV2ListenerLoadBalancerArn
+    , (Just . ("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerPort
+    , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerProtocol
+    , fmap (("SslPolicy",) . toJSON) _elasticLoadBalancingV2ListenerSslPolicy
     ]
 
 instance FromJSON ElasticLoadBalancingV2Listener where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2Listener <$>
-      obj .:? "Certificates" <*>
-      obj .: "DefaultActions" <*>
-      obj .: "LoadBalancerArn" <*>
-      obj .: "Port" <*>
-      obj .: "Protocol" <*>
-      obj .:? "SslPolicy"
+      (obj .:? "Certificates") <*>
+      (obj .: "DefaultActions") <*>
+      (obj .: "LoadBalancerArn") <*>
+      fmap (fmap unInteger') (obj .: "Port") <*>
+      (obj .: "Protocol") <*>
+      (obj .:? "SslPolicy")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2Listener' containing required
@@ -55,7 +56,7 @@
 elasticLoadBalancingV2Listener
   :: [ElasticLoadBalancingV2ListenerAction] -- ^ 'elbvlDefaultActions'
   -> Val Text -- ^ 'elbvlLoadBalancerArn'
-  -> Val Integer' -- ^ 'elbvlPort'
+  -> Val Integer -- ^ 'elbvlPort'
   -> Val Text -- ^ 'elbvlProtocol'
   -> ElasticLoadBalancingV2Listener
 elasticLoadBalancingV2Listener defaultActionsarg loadBalancerArnarg portarg protocolarg =
@@ -81,7 +82,7 @@
 elbvlLoadBalancerArn = lens _elasticLoadBalancingV2ListenerLoadBalancerArn (\s a -> s { _elasticLoadBalancingV2ListenerLoadBalancerArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-port
-elbvlPort :: Lens' ElasticLoadBalancingV2Listener (Val Integer')
+elbvlPort :: Lens' ElasticLoadBalancingV2Listener (Val Integer)
 elbvlPort = lens _elasticLoadBalancingV2ListenerPort (\s a -> s { _elasticLoadBalancingV2ListenerPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-protocol
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2ListenerRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html
 
@@ -22,26 +23,26 @@
   { _elasticLoadBalancingV2ListenerRuleActions :: [ElasticLoadBalancingV2ListenerRuleAction]
   , _elasticLoadBalancingV2ListenerRuleConditions :: [ElasticLoadBalancingV2ListenerRuleRuleCondition]
   , _elasticLoadBalancingV2ListenerRuleListenerArn :: Val Text
-  , _elasticLoadBalancingV2ListenerRulePriority :: Val Integer'
+  , _elasticLoadBalancingV2ListenerRulePriority :: Val Integer
   } deriving (Show, Eq)
 
 instance ToJSON ElasticLoadBalancingV2ListenerRule where
   toJSON ElasticLoadBalancingV2ListenerRule{..} =
     object $
     catMaybes
-    [ Just ("Actions" .= _elasticLoadBalancingV2ListenerRuleActions)
-    , Just ("Conditions" .= _elasticLoadBalancingV2ListenerRuleConditions)
-    , Just ("ListenerArn" .= _elasticLoadBalancingV2ListenerRuleListenerArn)
-    , Just ("Priority" .= _elasticLoadBalancingV2ListenerRulePriority)
+    [ (Just . ("Actions",) . toJSON) _elasticLoadBalancingV2ListenerRuleActions
+    , (Just . ("Conditions",) . toJSON) _elasticLoadBalancingV2ListenerRuleConditions
+    , (Just . ("ListenerArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleListenerArn
+    , (Just . ("Priority",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRulePriority
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerRule where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerRule <$>
-      obj .: "Actions" <*>
-      obj .: "Conditions" <*>
-      obj .: "ListenerArn" <*>
-      obj .: "Priority"
+      (obj .: "Actions") <*>
+      (obj .: "Conditions") <*>
+      (obj .: "ListenerArn") <*>
+      fmap (fmap unInteger') (obj .: "Priority")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerRule' containing required
@@ -50,7 +51,7 @@
   :: [ElasticLoadBalancingV2ListenerRuleAction] -- ^ 'elbvlrActions'
   -> [ElasticLoadBalancingV2ListenerRuleRuleCondition] -- ^ 'elbvlrConditions'
   -> Val Text -- ^ 'elbvlrListenerArn'
-  -> Val Integer' -- ^ 'elbvlrPriority'
+  -> Val Integer -- ^ 'elbvlrPriority'
   -> ElasticLoadBalancingV2ListenerRule
 elasticLoadBalancingV2ListenerRule actionsarg conditionsarg listenerArnarg priorityarg =
   ElasticLoadBalancingV2ListenerRule
@@ -73,5 +74,5 @@
 elbvlrListenerArn = lens _elasticLoadBalancingV2ListenerRuleListenerArn (\s a -> s { _elasticLoadBalancingV2ListenerRuleListenerArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html#cfn-elasticloadbalancingv2-listenerrule-priority
-elbvlrPriority :: Lens' ElasticLoadBalancingV2ListenerRule (Val Integer')
+elbvlrPriority :: Lens' ElasticLoadBalancingV2ListenerRule (Val Integer)
 elbvlrPriority = lens _elasticLoadBalancingV2ListenerRulePriority (\s a -> s { _elasticLoadBalancingV2ListenerRulePriority = a })
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2LoadBalancer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
 
@@ -23,8 +24,8 @@
   , _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributes :: Maybe [ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute]
   , _elasticLoadBalancingV2LoadBalancerName :: Maybe (Val Text)
   , _elasticLoadBalancingV2LoadBalancerScheme :: Maybe (Val Text)
-  , _elasticLoadBalancingV2LoadBalancerSecurityGroups :: Maybe [Val Text]
-  , _elasticLoadBalancingV2LoadBalancerSubnets :: Maybe [Val Text]
+  , _elasticLoadBalancingV2LoadBalancerSecurityGroups :: Maybe (ValList Text)
+  , _elasticLoadBalancingV2LoadBalancerSubnets :: Maybe (ValList Text)
   , _elasticLoadBalancingV2LoadBalancerTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -32,25 +33,25 @@
   toJSON ElasticLoadBalancingV2LoadBalancer{..} =
     object $
     catMaybes
-    [ ("IpAddressType" .=) <$> _elasticLoadBalancingV2LoadBalancerIpAddressType
-    , ("LoadBalancerAttributes" .=) <$> _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributes
-    , ("Name" .=) <$> _elasticLoadBalancingV2LoadBalancerName
-    , ("Scheme" .=) <$> _elasticLoadBalancingV2LoadBalancerScheme
-    , ("SecurityGroups" .=) <$> _elasticLoadBalancingV2LoadBalancerSecurityGroups
-    , ("Subnets" .=) <$> _elasticLoadBalancingV2LoadBalancerSubnets
-    , ("Tags" .=) <$> _elasticLoadBalancingV2LoadBalancerTags
+    [ fmap (("IpAddressType",) . toJSON) _elasticLoadBalancingV2LoadBalancerIpAddressType
+    , fmap (("LoadBalancerAttributes",) . toJSON) _elasticLoadBalancingV2LoadBalancerLoadBalancerAttributes
+    , fmap (("Name",) . toJSON) _elasticLoadBalancingV2LoadBalancerName
+    , fmap (("Scheme",) . toJSON) _elasticLoadBalancingV2LoadBalancerScheme
+    , fmap (("SecurityGroups",) . toJSON) _elasticLoadBalancingV2LoadBalancerSecurityGroups
+    , fmap (("Subnets",) . toJSON) _elasticLoadBalancingV2LoadBalancerSubnets
+    , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2LoadBalancerTags
     ]
 
 instance FromJSON ElasticLoadBalancingV2LoadBalancer where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2LoadBalancer <$>
-      obj .:? "IpAddressType" <*>
-      obj .:? "LoadBalancerAttributes" <*>
-      obj .:? "Name" <*>
-      obj .:? "Scheme" <*>
-      obj .:? "SecurityGroups" <*>
-      obj .:? "Subnets" <*>
-      obj .:? "Tags"
+      (obj .:? "IpAddressType") <*>
+      (obj .:? "LoadBalancerAttributes") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Scheme") <*>
+      (obj .:? "SecurityGroups") <*>
+      (obj .:? "Subnets") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2LoadBalancer' containing required
@@ -85,11 +86,11 @@
 elbvlbScheme = lens _elasticLoadBalancingV2LoadBalancerScheme (\s a -> s { _elasticLoadBalancingV2LoadBalancerScheme = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-securitygroups
-elbvlbSecurityGroups :: Lens' ElasticLoadBalancingV2LoadBalancer (Maybe [Val Text])
+elbvlbSecurityGroups :: Lens' ElasticLoadBalancingV2LoadBalancer (Maybe (ValList Text))
 elbvlbSecurityGroups = lens _elasticLoadBalancingV2LoadBalancerSecurityGroups (\s a -> s { _elasticLoadBalancingV2LoadBalancerSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-subnets
-elbvlbSubnets :: Lens' ElasticLoadBalancingV2LoadBalancer (Maybe [Val Text])
+elbvlbSubnets :: Lens' ElasticLoadBalancingV2LoadBalancer (Maybe (ValList Text))
 elbvlbSubnets = lens _elasticLoadBalancingV2LoadBalancerSubnets (\s a -> s { _elasticLoadBalancingV2LoadBalancerSubnets = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-tags
diff --git a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
--- a/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
+++ b/library-gen/Stratosphere/Resources/ElasticLoadBalancingV2TargetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html
 
@@ -21,20 +22,20 @@
 -- 'elasticLoadBalancingV2TargetGroup' for a more convenient constructor.
 data ElasticLoadBalancingV2TargetGroup =
   ElasticLoadBalancingV2TargetGroup
-  { _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds :: Maybe (Val Integer')
+  { _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds :: Maybe (Val Integer)
   , _elasticLoadBalancingV2TargetGroupHealthCheckPath :: Maybe (Val Text)
   , _elasticLoadBalancingV2TargetGroupHealthCheckPort :: Maybe (Val Text)
   , _elasticLoadBalancingV2TargetGroupHealthCheckProtocol :: Maybe (Val Text)
-  , _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds :: Maybe (Val Integer')
-  , _elasticLoadBalancingV2TargetGroupHealthyThresholdCount :: Maybe (Val Integer')
+  , _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2TargetGroupHealthyThresholdCount :: Maybe (Val Integer)
   , _elasticLoadBalancingV2TargetGroupMatcher :: Maybe ElasticLoadBalancingV2TargetGroupMatcher
   , _elasticLoadBalancingV2TargetGroupName :: Maybe (Val Text)
-  , _elasticLoadBalancingV2TargetGroupPort :: Val Integer'
+  , _elasticLoadBalancingV2TargetGroupPort :: Val Integer
   , _elasticLoadBalancingV2TargetGroupProtocol :: Val Text
   , _elasticLoadBalancingV2TargetGroupTags :: Maybe [Tag]
   , _elasticLoadBalancingV2TargetGroupTargetGroupAttributes :: Maybe [ElasticLoadBalancingV2TargetGroupTargetGroupAttribute]
   , _elasticLoadBalancingV2TargetGroupTargets :: Maybe [ElasticLoadBalancingV2TargetGroupTargetDescription]
-  , _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount :: Maybe (Val Integer')
+  , _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount :: Maybe (Val Integer)
   , _elasticLoadBalancingV2TargetGroupVpcId :: Val Text
   } deriving (Show, Eq)
 
@@ -42,47 +43,47 @@
   toJSON ElasticLoadBalancingV2TargetGroup{..} =
     object $
     catMaybes
-    [ ("HealthCheckIntervalSeconds" .=) <$> _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds
-    , ("HealthCheckPath" .=) <$> _elasticLoadBalancingV2TargetGroupHealthCheckPath
-    , ("HealthCheckPort" .=) <$> _elasticLoadBalancingV2TargetGroupHealthCheckPort
-    , ("HealthCheckProtocol" .=) <$> _elasticLoadBalancingV2TargetGroupHealthCheckProtocol
-    , ("HealthCheckTimeoutSeconds" .=) <$> _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds
-    , ("HealthyThresholdCount" .=) <$> _elasticLoadBalancingV2TargetGroupHealthyThresholdCount
-    , ("Matcher" .=) <$> _elasticLoadBalancingV2TargetGroupMatcher
-    , ("Name" .=) <$> _elasticLoadBalancingV2TargetGroupName
-    , Just ("Port" .= _elasticLoadBalancingV2TargetGroupPort)
-    , Just ("Protocol" .= _elasticLoadBalancingV2TargetGroupProtocol)
-    , ("Tags" .=) <$> _elasticLoadBalancingV2TargetGroupTags
-    , ("TargetGroupAttributes" .=) <$> _elasticLoadBalancingV2TargetGroupTargetGroupAttributes
-    , ("Targets" .=) <$> _elasticLoadBalancingV2TargetGroupTargets
-    , ("UnhealthyThresholdCount" .=) <$> _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount
-    , Just ("VpcId" .= _elasticLoadBalancingV2TargetGroupVpcId)
+    [ fmap (("HealthCheckIntervalSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds
+    , fmap (("HealthCheckPath",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPath
+    , fmap (("HealthCheckPort",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckPort
+    , fmap (("HealthCheckProtocol",) . toJSON) _elasticLoadBalancingV2TargetGroupHealthCheckProtocol
+    , fmap (("HealthCheckTimeoutSeconds",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds
+    , fmap (("HealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupHealthyThresholdCount
+    , fmap (("Matcher",) . toJSON) _elasticLoadBalancingV2TargetGroupMatcher
+    , fmap (("Name",) . toJSON) _elasticLoadBalancingV2TargetGroupName
+    , (Just . ("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupPort
+    , (Just . ("Protocol",) . toJSON) _elasticLoadBalancingV2TargetGroupProtocol
+    , fmap (("Tags",) . toJSON) _elasticLoadBalancingV2TargetGroupTags
+    , fmap (("TargetGroupAttributes",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetGroupAttributes
+    , fmap (("Targets",) . toJSON) _elasticLoadBalancingV2TargetGroupTargets
+    , fmap (("UnhealthyThresholdCount",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount
+    , (Just . ("VpcId",) . toJSON) _elasticLoadBalancingV2TargetGroupVpcId
     ]
 
 instance FromJSON ElasticLoadBalancingV2TargetGroup where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2TargetGroup <$>
-      obj .:? "HealthCheckIntervalSeconds" <*>
-      obj .:? "HealthCheckPath" <*>
-      obj .:? "HealthCheckPort" <*>
-      obj .:? "HealthCheckProtocol" <*>
-      obj .:? "HealthCheckTimeoutSeconds" <*>
-      obj .:? "HealthyThresholdCount" <*>
-      obj .:? "Matcher" <*>
-      obj .:? "Name" <*>
-      obj .: "Port" <*>
-      obj .: "Protocol" <*>
-      obj .:? "Tags" <*>
-      obj .:? "TargetGroupAttributes" <*>
-      obj .:? "Targets" <*>
-      obj .:? "UnhealthyThresholdCount" <*>
-      obj .: "VpcId"
+      fmap (fmap (fmap unInteger')) (obj .:? "HealthCheckIntervalSeconds") <*>
+      (obj .:? "HealthCheckPath") <*>
+      (obj .:? "HealthCheckPort") <*>
+      (obj .:? "HealthCheckProtocol") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HealthCheckTimeoutSeconds") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HealthyThresholdCount") <*>
+      (obj .:? "Matcher") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap unInteger') (obj .: "Port") <*>
+      (obj .: "Protocol") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "TargetGroupAttributes") <*>
+      (obj .:? "Targets") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "UnhealthyThresholdCount") <*>
+      (obj .: "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2TargetGroup' containing required
 -- fields as arguments.
 elasticLoadBalancingV2TargetGroup
-  :: Val Integer' -- ^ 'elbvtgPort'
+  :: Val Integer -- ^ 'elbvtgPort'
   -> Val Text -- ^ 'elbvtgProtocol'
   -> Val Text -- ^ 'elbvtgVpcId'
   -> ElasticLoadBalancingV2TargetGroup
@@ -106,7 +107,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckintervalseconds
-elbvtgHealthCheckIntervalSeconds :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer'))
+elbvtgHealthCheckIntervalSeconds :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer))
 elbvtgHealthCheckIntervalSeconds = lens _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds (\s a -> s { _elasticLoadBalancingV2TargetGroupHealthCheckIntervalSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckpath
@@ -122,11 +123,11 @@
 elbvtgHealthCheckProtocol = lens _elasticLoadBalancingV2TargetGroupHealthCheckProtocol (\s a -> s { _elasticLoadBalancingV2TargetGroupHealthCheckProtocol = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthchecktimeoutseconds
-elbvtgHealthCheckTimeoutSeconds :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer'))
+elbvtgHealthCheckTimeoutSeconds :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer))
 elbvtgHealthCheckTimeoutSeconds = lens _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds (\s a -> s { _elasticLoadBalancingV2TargetGroupHealthCheckTimeoutSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthythresholdcount
-elbvtgHealthyThresholdCount :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer'))
+elbvtgHealthyThresholdCount :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer))
 elbvtgHealthyThresholdCount = lens _elasticLoadBalancingV2TargetGroupHealthyThresholdCount (\s a -> s { _elasticLoadBalancingV2TargetGroupHealthyThresholdCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-matcher
@@ -138,7 +139,7 @@
 elbvtgName = lens _elasticLoadBalancingV2TargetGroupName (\s a -> s { _elasticLoadBalancingV2TargetGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-port
-elbvtgPort :: Lens' ElasticLoadBalancingV2TargetGroup (Val Integer')
+elbvtgPort :: Lens' ElasticLoadBalancingV2TargetGroup (Val Integer)
 elbvtgPort = lens _elasticLoadBalancingV2TargetGroupPort (\s a -> s { _elasticLoadBalancingV2TargetGroupPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-protocol
@@ -158,7 +159,7 @@
 elbvtgTargets = lens _elasticLoadBalancingV2TargetGroupTargets (\s a -> s { _elasticLoadBalancingV2TargetGroupTargets = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-unhealthythresholdcount
-elbvtgUnhealthyThresholdCount :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer'))
+elbvtgUnhealthyThresholdCount :: Lens' ElasticLoadBalancingV2TargetGroup (Maybe (Val Integer))
 elbvtgUnhealthyThresholdCount = lens _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount (\s a -> s { _elasticLoadBalancingV2TargetGroupUnhealthyThresholdCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-vpcid
diff --git a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
--- a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
+++ b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html
 
@@ -35,27 +36,27 @@
   toJSON ElasticsearchDomain{..} =
     object $
     catMaybes
-    [ ("AccessPolicies" .=) <$> _elasticsearchDomainAccessPolicies
-    , ("AdvancedOptions" .=) <$> _elasticsearchDomainAdvancedOptions
-    , ("DomainName" .=) <$> _elasticsearchDomainDomainName
-    , ("EBSOptions" .=) <$> _elasticsearchDomainEBSOptions
-    , ("ElasticsearchClusterConfig" .=) <$> _elasticsearchDomainElasticsearchClusterConfig
-    , ("ElasticsearchVersion" .=) <$> _elasticsearchDomainElasticsearchVersion
-    , ("SnapshotOptions" .=) <$> _elasticsearchDomainSnapshotOptions
-    , ("Tags" .=) <$> _elasticsearchDomainTags
+    [ fmap (("AccessPolicies",) . toJSON) _elasticsearchDomainAccessPolicies
+    , fmap (("AdvancedOptions",) . toJSON) _elasticsearchDomainAdvancedOptions
+    , fmap (("DomainName",) . toJSON) _elasticsearchDomainDomainName
+    , fmap (("EBSOptions",) . toJSON) _elasticsearchDomainEBSOptions
+    , fmap (("ElasticsearchClusterConfig",) . toJSON) _elasticsearchDomainElasticsearchClusterConfig
+    , fmap (("ElasticsearchVersion",) . toJSON) _elasticsearchDomainElasticsearchVersion
+    , fmap (("SnapshotOptions",) . toJSON) _elasticsearchDomainSnapshotOptions
+    , fmap (("Tags",) . toJSON) _elasticsearchDomainTags
     ]
 
 instance FromJSON ElasticsearchDomain where
   parseJSON (Object obj) =
     ElasticsearchDomain <$>
-      obj .:? "AccessPolicies" <*>
-      obj .:? "AdvancedOptions" <*>
-      obj .:? "DomainName" <*>
-      obj .:? "EBSOptions" <*>
-      obj .:? "ElasticsearchClusterConfig" <*>
-      obj .:? "ElasticsearchVersion" <*>
-      obj .:? "SnapshotOptions" <*>
-      obj .:? "Tags"
+      (obj .:? "AccessPolicies") <*>
+      (obj .:? "AdvancedOptions") <*>
+      (obj .:? "DomainName") <*>
+      (obj .:? "EBSOptions") <*>
+      (obj .:? "ElasticsearchClusterConfig") <*>
+      (obj .:? "ElasticsearchVersion") <*>
+      (obj .:? "SnapshotOptions") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticsearchDomain' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/EventsRule.hs b/library-gen/Stratosphere/Resources/EventsRule.hs
--- a/library-gen/Stratosphere/Resources/EventsRule.hs
+++ b/library-gen/Stratosphere/Resources/EventsRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
 
@@ -32,25 +33,25 @@
   toJSON EventsRule{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _eventsRuleDescription
-    , ("EventPattern" .=) <$> _eventsRuleEventPattern
-    , ("Name" .=) <$> _eventsRuleName
-    , ("RoleArn" .=) <$> _eventsRuleRoleArn
-    , ("ScheduleExpression" .=) <$> _eventsRuleScheduleExpression
-    , ("State" .=) <$> _eventsRuleState
-    , ("Targets" .=) <$> _eventsRuleTargets
+    [ fmap (("Description",) . toJSON) _eventsRuleDescription
+    , fmap (("EventPattern",) . toJSON) _eventsRuleEventPattern
+    , fmap (("Name",) . toJSON) _eventsRuleName
+    , fmap (("RoleArn",) . toJSON) _eventsRuleRoleArn
+    , fmap (("ScheduleExpression",) . toJSON) _eventsRuleScheduleExpression
+    , fmap (("State",) . toJSON) _eventsRuleState
+    , fmap (("Targets",) . toJSON) _eventsRuleTargets
     ]
 
 instance FromJSON EventsRule where
   parseJSON (Object obj) =
     EventsRule <$>
-      obj .:? "Description" <*>
-      obj .:? "EventPattern" <*>
-      obj .:? "Name" <*>
-      obj .:? "RoleArn" <*>
-      obj .:? "ScheduleExpression" <*>
-      obj .:? "State" <*>
-      obj .:? "Targets"
+      (obj .:? "Description") <*>
+      (obj .:? "EventPattern") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "RoleArn") <*>
+      (obj .:? "ScheduleExpression") <*>
+      (obj .:? "State") <*>
+      (obj .:? "Targets")
   parseJSON _ = mempty
 
 -- | Constructor for 'EventsRule' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/GameLiftAlias.hs b/library-gen/Stratosphere/Resources/GameLiftAlias.hs
--- a/library-gen/Stratosphere/Resources/GameLiftAlias.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html
 
@@ -27,17 +28,17 @@
   toJSON GameLiftAlias{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _gameLiftAliasDescription
-    , Just ("Name" .= _gameLiftAliasName)
-    , Just ("RoutingStrategy" .= _gameLiftAliasRoutingStrategy)
+    [ fmap (("Description",) . toJSON) _gameLiftAliasDescription
+    , (Just . ("Name",) . toJSON) _gameLiftAliasName
+    , (Just . ("RoutingStrategy",) . toJSON) _gameLiftAliasRoutingStrategy
     ]
 
 instance FromJSON GameLiftAlias where
   parseJSON (Object obj) =
     GameLiftAlias <$>
-      obj .:? "Description" <*>
-      obj .: "Name" <*>
-      obj .: "RoutingStrategy"
+      (obj .:? "Description") <*>
+      (obj .: "Name") <*>
+      (obj .: "RoutingStrategy")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftAlias' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/GameLiftBuild.hs b/library-gen/Stratosphere/Resources/GameLiftBuild.hs
--- a/library-gen/Stratosphere/Resources/GameLiftBuild.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftBuild.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html
 
@@ -27,17 +28,17 @@
   toJSON GameLiftBuild{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _gameLiftBuildName
-    , ("StorageLocation" .=) <$> _gameLiftBuildStorageLocation
-    , ("Version" .=) <$> _gameLiftBuildVersion
+    [ fmap (("Name",) . toJSON) _gameLiftBuildName
+    , fmap (("StorageLocation",) . toJSON) _gameLiftBuildStorageLocation
+    , fmap (("Version",) . toJSON) _gameLiftBuildVersion
     ]
 
 instance FromJSON GameLiftBuild where
   parseJSON (Object obj) =
     GameLiftBuild <$>
-      obj .:? "Name" <*>
-      obj .:? "StorageLocation" <*>
-      obj .:? "Version"
+      (obj .:? "Name") <*>
+      (obj .:? "StorageLocation") <*>
+      (obj .:? "Version")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftBuild' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/GameLiftFleet.hs b/library-gen/Stratosphere/Resources/GameLiftFleet.hs
--- a/library-gen/Stratosphere/Resources/GameLiftFleet.hs
+++ b/library-gen/Stratosphere/Resources/GameLiftFleet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html
 
@@ -20,12 +21,12 @@
   GameLiftFleet
   { _gameLiftFleetBuildId :: Val Text
   , _gameLiftFleetDescription :: Maybe (Val Text)
-  , _gameLiftFleetDesiredEC2Instances :: Val Integer'
+  , _gameLiftFleetDesiredEC2Instances :: Val Integer
   , _gameLiftFleetEC2InboundPermissions :: Maybe [GameLiftFleetIpPermission]
   , _gameLiftFleetEC2InstanceType :: Val Text
-  , _gameLiftFleetLogPaths :: Maybe [Val Text]
-  , _gameLiftFleetMaxSize :: Maybe (Val Integer')
-  , _gameLiftFleetMinSize :: Maybe (Val Integer')
+  , _gameLiftFleetLogPaths :: Maybe (ValList Text)
+  , _gameLiftFleetMaxSize :: Maybe (Val Integer)
+  , _gameLiftFleetMinSize :: Maybe (Val Integer)
   , _gameLiftFleetName :: Val Text
   , _gameLiftFleetServerLaunchParameters :: Maybe (Val Text)
   , _gameLiftFleetServerLaunchPath :: Val Text
@@ -35,39 +36,39 @@
   toJSON GameLiftFleet{..} =
     object $
     catMaybes
-    [ Just ("BuildId" .= _gameLiftFleetBuildId)
-    , ("Description" .=) <$> _gameLiftFleetDescription
-    , Just ("DesiredEC2Instances" .= _gameLiftFleetDesiredEC2Instances)
-    , ("EC2InboundPermissions" .=) <$> _gameLiftFleetEC2InboundPermissions
-    , Just ("EC2InstanceType" .= _gameLiftFleetEC2InstanceType)
-    , ("LogPaths" .=) <$> _gameLiftFleetLogPaths
-    , ("MaxSize" .=) <$> _gameLiftFleetMaxSize
-    , ("MinSize" .=) <$> _gameLiftFleetMinSize
-    , Just ("Name" .= _gameLiftFleetName)
-    , ("ServerLaunchParameters" .=) <$> _gameLiftFleetServerLaunchParameters
-    , Just ("ServerLaunchPath" .= _gameLiftFleetServerLaunchPath)
+    [ (Just . ("BuildId",) . toJSON) _gameLiftFleetBuildId
+    , fmap (("Description",) . toJSON) _gameLiftFleetDescription
+    , (Just . ("DesiredEC2Instances",) . toJSON . fmap Integer') _gameLiftFleetDesiredEC2Instances
+    , fmap (("EC2InboundPermissions",) . toJSON) _gameLiftFleetEC2InboundPermissions
+    , (Just . ("EC2InstanceType",) . toJSON) _gameLiftFleetEC2InstanceType
+    , fmap (("LogPaths",) . toJSON) _gameLiftFleetLogPaths
+    , fmap (("MaxSize",) . toJSON . fmap Integer') _gameLiftFleetMaxSize
+    , fmap (("MinSize",) . toJSON . fmap Integer') _gameLiftFleetMinSize
+    , (Just . ("Name",) . toJSON) _gameLiftFleetName
+    , fmap (("ServerLaunchParameters",) . toJSON) _gameLiftFleetServerLaunchParameters
+    , (Just . ("ServerLaunchPath",) . toJSON) _gameLiftFleetServerLaunchPath
     ]
 
 instance FromJSON GameLiftFleet where
   parseJSON (Object obj) =
     GameLiftFleet <$>
-      obj .: "BuildId" <*>
-      obj .:? "Description" <*>
-      obj .: "DesiredEC2Instances" <*>
-      obj .:? "EC2InboundPermissions" <*>
-      obj .: "EC2InstanceType" <*>
-      obj .:? "LogPaths" <*>
-      obj .:? "MaxSize" <*>
-      obj .:? "MinSize" <*>
-      obj .: "Name" <*>
-      obj .:? "ServerLaunchParameters" <*>
-      obj .: "ServerLaunchPath"
+      (obj .: "BuildId") <*>
+      (obj .:? "Description") <*>
+      fmap (fmap unInteger') (obj .: "DesiredEC2Instances") <*>
+      (obj .:? "EC2InboundPermissions") <*>
+      (obj .: "EC2InstanceType") <*>
+      (obj .:? "LogPaths") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxSize") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinSize") <*>
+      (obj .: "Name") <*>
+      (obj .:? "ServerLaunchParameters") <*>
+      (obj .: "ServerLaunchPath")
   parseJSON _ = mempty
 
 -- | Constructor for 'GameLiftFleet' containing required fields as arguments.
 gameLiftFleet
   :: Val Text -- ^ 'glfBuildId'
-  -> Val Integer' -- ^ 'glfDesiredEC2Instances'
+  -> Val Integer -- ^ 'glfDesiredEC2Instances'
   -> Val Text -- ^ 'glfEC2InstanceType'
   -> Val Text -- ^ 'glfName'
   -> Val Text -- ^ 'glfServerLaunchPath'
@@ -96,7 +97,7 @@
 glfDescription = lens _gameLiftFleetDescription (\s a -> s { _gameLiftFleetDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-desiredec2instances
-glfDesiredEC2Instances :: Lens' GameLiftFleet (Val Integer')
+glfDesiredEC2Instances :: Lens' GameLiftFleet (Val Integer)
 glfDesiredEC2Instances = lens _gameLiftFleetDesiredEC2Instances (\s a -> s { _gameLiftFleetDesiredEC2Instances = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-ec2inboundpermissions
@@ -108,15 +109,15 @@
 glfEC2InstanceType = lens _gameLiftFleetEC2InstanceType (\s a -> s { _gameLiftFleetEC2InstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-logpaths
-glfLogPaths :: Lens' GameLiftFleet (Maybe [Val Text])
+glfLogPaths :: Lens' GameLiftFleet (Maybe (ValList Text))
 glfLogPaths = lens _gameLiftFleetLogPaths (\s a -> s { _gameLiftFleetLogPaths = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-maxsize
-glfMaxSize :: Lens' GameLiftFleet (Maybe (Val Integer'))
+glfMaxSize :: Lens' GameLiftFleet (Maybe (Val Integer))
 glfMaxSize = lens _gameLiftFleetMaxSize (\s a -> s { _gameLiftFleetMaxSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-minsize
-glfMinSize :: Lens' GameLiftFleet (Maybe (Val Integer'))
+glfMinSize :: Lens' GameLiftFleet (Maybe (Val Integer))
 glfMinSize = lens _gameLiftFleetMinSize (\s a -> s { _gameLiftFleetMinSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-name
diff --git a/library-gen/Stratosphere/Resources/IAMAccessKey.hs b/library-gen/Stratosphere/Resources/IAMAccessKey.hs
--- a/library-gen/Stratosphere/Resources/IAMAccessKey.hs
+++ b/library-gen/Stratosphere/Resources/IAMAccessKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
 
@@ -18,7 +19,7 @@
 -- convenient constructor.
 data IAMAccessKey =
   IAMAccessKey
-  { _iAMAccessKeySerial :: Maybe (Val Integer')
+  { _iAMAccessKeySerial :: Maybe (Val Integer)
   , _iAMAccessKeyStatus :: Maybe (Val Text)
   , _iAMAccessKeyUserName :: Val Text
   } deriving (Show, Eq)
@@ -27,17 +28,17 @@
   toJSON IAMAccessKey{..} =
     object $
     catMaybes
-    [ ("Serial" .=) <$> _iAMAccessKeySerial
-    , ("Status" .=) <$> _iAMAccessKeyStatus
-    , Just ("UserName" .= _iAMAccessKeyUserName)
+    [ fmap (("Serial",) . toJSON . fmap Integer') _iAMAccessKeySerial
+    , fmap (("Status",) . toJSON) _iAMAccessKeyStatus
+    , (Just . ("UserName",) . toJSON) _iAMAccessKeyUserName
     ]
 
 instance FromJSON IAMAccessKey where
   parseJSON (Object obj) =
     IAMAccessKey <$>
-      obj .:? "Serial" <*>
-      obj .:? "Status" <*>
-      obj .: "UserName"
+      fmap (fmap (fmap unInteger')) (obj .:? "Serial") <*>
+      (obj .:? "Status") <*>
+      (obj .: "UserName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMAccessKey' containing required fields as arguments.
@@ -52,7 +53,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-serial
-iamakSerial :: Lens' IAMAccessKey (Maybe (Val Integer'))
+iamakSerial :: Lens' IAMAccessKey (Maybe (Val Integer))
 iamakSerial = lens _iAMAccessKeySerial (\s a -> s { _iAMAccessKeySerial = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-status
diff --git a/library-gen/Stratosphere/Resources/IAMGroup.hs b/library-gen/Stratosphere/Resources/IAMGroup.hs
--- a/library-gen/Stratosphere/Resources/IAMGroup.hs
+++ b/library-gen/Stratosphere/Resources/IAMGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
 
@@ -19,7 +20,7 @@
 data IAMGroup =
   IAMGroup
   { _iAMGroupGroupName :: Maybe (Val Text)
-  , _iAMGroupManagedPolicyArns :: Maybe [Val Text]
+  , _iAMGroupManagedPolicyArns :: Maybe (ValList Text)
   , _iAMGroupPath :: Maybe (Val Text)
   , _iAMGroupPolicies :: Maybe [IAMGroupPolicy]
   } deriving (Show, Eq)
@@ -28,19 +29,19 @@
   toJSON IAMGroup{..} =
     object $
     catMaybes
-    [ ("GroupName" .=) <$> _iAMGroupGroupName
-    , ("ManagedPolicyArns" .=) <$> _iAMGroupManagedPolicyArns
-    , ("Path" .=) <$> _iAMGroupPath
-    , ("Policies" .=) <$> _iAMGroupPolicies
+    [ fmap (("GroupName",) . toJSON) _iAMGroupGroupName
+    , fmap (("ManagedPolicyArns",) . toJSON) _iAMGroupManagedPolicyArns
+    , fmap (("Path",) . toJSON) _iAMGroupPath
+    , fmap (("Policies",) . toJSON) _iAMGroupPolicies
     ]
 
 instance FromJSON IAMGroup where
   parseJSON (Object obj) =
     IAMGroup <$>
-      obj .:? "GroupName" <*>
-      obj .:? "ManagedPolicyArns" <*>
-      obj .:? "Path" <*>
-      obj .:? "Policies"
+      (obj .:? "GroupName") <*>
+      (obj .:? "ManagedPolicyArns") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "Policies")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMGroup' containing required fields as arguments.
@@ -59,7 +60,7 @@
 iamgGroupName = lens _iAMGroupGroupName (\s a -> s { _iAMGroupGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-managepolicyarns
-iamgManagedPolicyArns :: Lens' IAMGroup (Maybe [Val Text])
+iamgManagedPolicyArns :: Lens' IAMGroup (Maybe (ValList Text))
 iamgManagedPolicyArns = lens _iAMGroupManagedPolicyArns (\s a -> s { _iAMGroupManagedPolicyArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-path
diff --git a/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs b/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
--- a/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
+++ b/library-gen/Stratosphere/Resources/IAMInstanceProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
 
@@ -20,30 +21,30 @@
   IAMInstanceProfile
   { _iAMInstanceProfileInstanceProfileName :: Maybe (Val Text)
   , _iAMInstanceProfilePath :: Maybe (Val Text)
-  , _iAMInstanceProfileRoles :: [Val Text]
+  , _iAMInstanceProfileRoles :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON IAMInstanceProfile where
   toJSON IAMInstanceProfile{..} =
     object $
     catMaybes
-    [ ("InstanceProfileName" .=) <$> _iAMInstanceProfileInstanceProfileName
-    , ("Path" .=) <$> _iAMInstanceProfilePath
-    , Just ("Roles" .= _iAMInstanceProfileRoles)
+    [ fmap (("InstanceProfileName",) . toJSON) _iAMInstanceProfileInstanceProfileName
+    , fmap (("Path",) . toJSON) _iAMInstanceProfilePath
+    , (Just . ("Roles",) . toJSON) _iAMInstanceProfileRoles
     ]
 
 instance FromJSON IAMInstanceProfile where
   parseJSON (Object obj) =
     IAMInstanceProfile <$>
-      obj .:? "InstanceProfileName" <*>
-      obj .:? "Path" <*>
-      obj .: "Roles"
+      (obj .:? "InstanceProfileName") <*>
+      (obj .:? "Path") <*>
+      (obj .: "Roles")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMInstanceProfile' containing required fields as
 -- arguments.
 iamInstanceProfile
-  :: [Val Text] -- ^ 'iamipRoles'
+  :: ValList Text -- ^ 'iamipRoles'
   -> IAMInstanceProfile
 iamInstanceProfile rolesarg =
   IAMInstanceProfile
@@ -61,5 +62,5 @@
 iamipPath = lens _iAMInstanceProfilePath (\s a -> s { _iAMInstanceProfilePath = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-roles
-iamipRoles :: Lens' IAMInstanceProfile [Val Text]
+iamipRoles :: Lens' IAMInstanceProfile (ValList Text)
 iamipRoles = lens _iAMInstanceProfileRoles (\s a -> s { _iAMInstanceProfileRoles = a })
diff --git a/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs b/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
--- a/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IAMManagedPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
 
@@ -19,37 +20,37 @@
 data IAMManagedPolicy =
   IAMManagedPolicy
   { _iAMManagedPolicyDescription :: Maybe (Val Text)
-  , _iAMManagedPolicyGroups :: Maybe [Val Text]
+  , _iAMManagedPolicyGroups :: Maybe (ValList Text)
   , _iAMManagedPolicyManagedPolicyName :: Maybe (Val Text)
   , _iAMManagedPolicyPath :: Maybe (Val Text)
   , _iAMManagedPolicyPolicyDocument :: Object
-  , _iAMManagedPolicyRoles :: Maybe [Val Text]
-  , _iAMManagedPolicyUsers :: Maybe [Val Text]
+  , _iAMManagedPolicyRoles :: Maybe (ValList Text)
+  , _iAMManagedPolicyUsers :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON IAMManagedPolicy where
   toJSON IAMManagedPolicy{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _iAMManagedPolicyDescription
-    , ("Groups" .=) <$> _iAMManagedPolicyGroups
-    , ("ManagedPolicyName" .=) <$> _iAMManagedPolicyManagedPolicyName
-    , ("Path" .=) <$> _iAMManagedPolicyPath
-    , Just ("PolicyDocument" .= _iAMManagedPolicyPolicyDocument)
-    , ("Roles" .=) <$> _iAMManagedPolicyRoles
-    , ("Users" .=) <$> _iAMManagedPolicyUsers
+    [ fmap (("Description",) . toJSON) _iAMManagedPolicyDescription
+    , fmap (("Groups",) . toJSON) _iAMManagedPolicyGroups
+    , fmap (("ManagedPolicyName",) . toJSON) _iAMManagedPolicyManagedPolicyName
+    , fmap (("Path",) . toJSON) _iAMManagedPolicyPath
+    , (Just . ("PolicyDocument",) . toJSON) _iAMManagedPolicyPolicyDocument
+    , fmap (("Roles",) . toJSON) _iAMManagedPolicyRoles
+    , fmap (("Users",) . toJSON) _iAMManagedPolicyUsers
     ]
 
 instance FromJSON IAMManagedPolicy where
   parseJSON (Object obj) =
     IAMManagedPolicy <$>
-      obj .:? "Description" <*>
-      obj .:? "Groups" <*>
-      obj .:? "ManagedPolicyName" <*>
-      obj .:? "Path" <*>
-      obj .: "PolicyDocument" <*>
-      obj .:? "Roles" <*>
-      obj .:? "Users"
+      (obj .:? "Description") <*>
+      (obj .:? "Groups") <*>
+      (obj .:? "ManagedPolicyName") <*>
+      (obj .:? "Path") <*>
+      (obj .: "PolicyDocument") <*>
+      (obj .:? "Roles") <*>
+      (obj .:? "Users")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMManagedPolicy' containing required fields as
@@ -73,7 +74,7 @@
 iammpDescription = lens _iAMManagedPolicyDescription (\s a -> s { _iAMManagedPolicyDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-groups
-iammpGroups :: Lens' IAMManagedPolicy (Maybe [Val Text])
+iammpGroups :: Lens' IAMManagedPolicy (Maybe (ValList Text))
 iammpGroups = lens _iAMManagedPolicyGroups (\s a -> s { _iAMManagedPolicyGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-managedpolicyname
@@ -89,9 +90,9 @@
 iammpPolicyDocument = lens _iAMManagedPolicyPolicyDocument (\s a -> s { _iAMManagedPolicyPolicyDocument = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-roles
-iammpRoles :: Lens' IAMManagedPolicy (Maybe [Val Text])
+iammpRoles :: Lens' IAMManagedPolicy (Maybe (ValList Text))
 iammpRoles = lens _iAMManagedPolicyRoles (\s a -> s { _iAMManagedPolicyRoles = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-users
-iammpUsers :: Lens' IAMManagedPolicy (Maybe [Val Text])
+iammpUsers :: Lens' IAMManagedPolicy (Maybe (ValList Text))
 iammpUsers = lens _iAMManagedPolicyUsers (\s a -> s { _iAMManagedPolicyUsers = a })
diff --git a/library-gen/Stratosphere/Resources/IAMPolicy.hs b/library-gen/Stratosphere/Resources/IAMPolicy.hs
--- a/library-gen/Stratosphere/Resources/IAMPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IAMPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
 
@@ -18,32 +19,32 @@
 -- convenient constructor.
 data IAMPolicy =
   IAMPolicy
-  { _iAMPolicyGroups :: Maybe [Val Text]
+  { _iAMPolicyGroups :: Maybe (ValList Text)
   , _iAMPolicyPolicyDocument :: Object
   , _iAMPolicyPolicyName :: Val Text
-  , _iAMPolicyRoles :: Maybe [Val Text]
-  , _iAMPolicyUsers :: Maybe [Val Text]
+  , _iAMPolicyRoles :: Maybe (ValList Text)
+  , _iAMPolicyUsers :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON IAMPolicy where
   toJSON IAMPolicy{..} =
     object $
     catMaybes
-    [ ("Groups" .=) <$> _iAMPolicyGroups
-    , Just ("PolicyDocument" .= _iAMPolicyPolicyDocument)
-    , Just ("PolicyName" .= _iAMPolicyPolicyName)
-    , ("Roles" .=) <$> _iAMPolicyRoles
-    , ("Users" .=) <$> _iAMPolicyUsers
+    [ fmap (("Groups",) . toJSON) _iAMPolicyGroups
+    , (Just . ("PolicyDocument",) . toJSON) _iAMPolicyPolicyDocument
+    , (Just . ("PolicyName",) . toJSON) _iAMPolicyPolicyName
+    , fmap (("Roles",) . toJSON) _iAMPolicyRoles
+    , fmap (("Users",) . toJSON) _iAMPolicyUsers
     ]
 
 instance FromJSON IAMPolicy where
   parseJSON (Object obj) =
     IAMPolicy <$>
-      obj .:? "Groups" <*>
-      obj .: "PolicyDocument" <*>
-      obj .: "PolicyName" <*>
-      obj .:? "Roles" <*>
-      obj .:? "Users"
+      (obj .:? "Groups") <*>
+      (obj .: "PolicyDocument") <*>
+      (obj .: "PolicyName") <*>
+      (obj .:? "Roles") <*>
+      (obj .:? "Users")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMPolicy' containing required fields as arguments.
@@ -61,7 +62,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-groups
-iampGroups :: Lens' IAMPolicy (Maybe [Val Text])
+iampGroups :: Lens' IAMPolicy (Maybe (ValList Text))
 iampGroups = lens _iAMPolicyGroups (\s a -> s { _iAMPolicyGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policydocument
@@ -73,9 +74,9 @@
 iampPolicyName = lens _iAMPolicyPolicyName (\s a -> s { _iAMPolicyPolicyName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-roles
-iampRoles :: Lens' IAMPolicy (Maybe [Val Text])
+iampRoles :: Lens' IAMPolicy (Maybe (ValList Text))
 iampRoles = lens _iAMPolicyRoles (\s a -> s { _iAMPolicyRoles = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-users
-iampUsers :: Lens' IAMPolicy (Maybe [Val Text])
+iampUsers :: Lens' IAMPolicy (Maybe (ValList Text))
 iampUsers = lens _iAMPolicyUsers (\s a -> s { _iAMPolicyUsers = a })
diff --git a/library-gen/Stratosphere/Resources/IAMRole.hs b/library-gen/Stratosphere/Resources/IAMRole.hs
--- a/library-gen/Stratosphere/Resources/IAMRole.hs
+++ b/library-gen/Stratosphere/Resources/IAMRole.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
 
@@ -19,7 +20,7 @@
 data IAMRole =
   IAMRole
   { _iAMRoleAssumeRolePolicyDocument :: Object
-  , _iAMRoleManagedPolicyArns :: Maybe [Val Text]
+  , _iAMRoleManagedPolicyArns :: Maybe (ValList Text)
   , _iAMRolePath :: Maybe (Val Text)
   , _iAMRolePolicies :: Maybe [IAMRolePolicy]
   , _iAMRoleRoleName :: Maybe (Val Text)
@@ -29,21 +30,21 @@
   toJSON IAMRole{..} =
     object $
     catMaybes
-    [ Just ("AssumeRolePolicyDocument" .= _iAMRoleAssumeRolePolicyDocument)
-    , ("ManagedPolicyArns" .=) <$> _iAMRoleManagedPolicyArns
-    , ("Path" .=) <$> _iAMRolePath
-    , ("Policies" .=) <$> _iAMRolePolicies
-    , ("RoleName" .=) <$> _iAMRoleRoleName
+    [ (Just . ("AssumeRolePolicyDocument",) . toJSON) _iAMRoleAssumeRolePolicyDocument
+    , fmap (("ManagedPolicyArns",) . toJSON) _iAMRoleManagedPolicyArns
+    , fmap (("Path",) . toJSON) _iAMRolePath
+    , fmap (("Policies",) . toJSON) _iAMRolePolicies
+    , fmap (("RoleName",) . toJSON) _iAMRoleRoleName
     ]
 
 instance FromJSON IAMRole where
   parseJSON (Object obj) =
     IAMRole <$>
-      obj .: "AssumeRolePolicyDocument" <*>
-      obj .:? "ManagedPolicyArns" <*>
-      obj .:? "Path" <*>
-      obj .:? "Policies" <*>
-      obj .:? "RoleName"
+      (obj .: "AssumeRolePolicyDocument") <*>
+      (obj .:? "ManagedPolicyArns") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "Policies") <*>
+      (obj .:? "RoleName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMRole' containing required fields as arguments.
@@ -64,7 +65,7 @@
 iamrAssumeRolePolicyDocument = lens _iAMRoleAssumeRolePolicyDocument (\s a -> s { _iAMRoleAssumeRolePolicyDocument = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns
-iamrManagedPolicyArns :: Lens' IAMRole (Maybe [Val Text])
+iamrManagedPolicyArns :: Lens' IAMRole (Maybe (ValList Text))
 iamrManagedPolicyArns = lens _iAMRoleManagedPolicyArns (\s a -> s { _iAMRoleManagedPolicyArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path
diff --git a/library-gen/Stratosphere/Resources/IAMUser.hs b/library-gen/Stratosphere/Resources/IAMUser.hs
--- a/library-gen/Stratosphere/Resources/IAMUser.hs
+++ b/library-gen/Stratosphere/Resources/IAMUser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
 
@@ -19,9 +20,9 @@
 -- convenient constructor.
 data IAMUser =
   IAMUser
-  { _iAMUserGroups :: Maybe [Val Text]
+  { _iAMUserGroups :: Maybe (ValList Text)
   , _iAMUserLoginProfile :: Maybe IAMUserLoginProfile
-  , _iAMUserManagedPolicyArns :: Maybe [Val Text]
+  , _iAMUserManagedPolicyArns :: Maybe (ValList Text)
   , _iAMUserPath :: Maybe (Val Text)
   , _iAMUserPolicies :: Maybe [IAMUserPolicy]
   , _iAMUserUserName :: Maybe (Val Text)
@@ -31,23 +32,23 @@
   toJSON IAMUser{..} =
     object $
     catMaybes
-    [ ("Groups" .=) <$> _iAMUserGroups
-    , ("LoginProfile" .=) <$> _iAMUserLoginProfile
-    , ("ManagedPolicyArns" .=) <$> _iAMUserManagedPolicyArns
-    , ("Path" .=) <$> _iAMUserPath
-    , ("Policies" .=) <$> _iAMUserPolicies
-    , ("UserName" .=) <$> _iAMUserUserName
+    [ fmap (("Groups",) . toJSON) _iAMUserGroups
+    , fmap (("LoginProfile",) . toJSON) _iAMUserLoginProfile
+    , fmap (("ManagedPolicyArns",) . toJSON) _iAMUserManagedPolicyArns
+    , fmap (("Path",) . toJSON) _iAMUserPath
+    , fmap (("Policies",) . toJSON) _iAMUserPolicies
+    , fmap (("UserName",) . toJSON) _iAMUserUserName
     ]
 
 instance FromJSON IAMUser where
   parseJSON (Object obj) =
     IAMUser <$>
-      obj .:? "Groups" <*>
-      obj .:? "LoginProfile" <*>
-      obj .:? "ManagedPolicyArns" <*>
-      obj .:? "Path" <*>
-      obj .:? "Policies" <*>
-      obj .:? "UserName"
+      (obj .:? "Groups") <*>
+      (obj .:? "LoginProfile") <*>
+      (obj .:? "ManagedPolicyArns") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "Policies") <*>
+      (obj .:? "UserName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMUser' containing required fields as arguments.
@@ -64,7 +65,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-groups
-iamuGroups :: Lens' IAMUser (Maybe [Val Text])
+iamuGroups :: Lens' IAMUser (Maybe (ValList Text))
 iamuGroups = lens _iAMUserGroups (\s a -> s { _iAMUserGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-loginprofile
@@ -72,7 +73,7 @@
 iamuLoginProfile = lens _iAMUserLoginProfile (\s a -> s { _iAMUserLoginProfile = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-managepolicyarns
-iamuManagedPolicyArns :: Lens' IAMUser (Maybe [Val Text])
+iamuManagedPolicyArns :: Lens' IAMUser (Maybe (ValList Text))
 iamuManagedPolicyArns = lens _iAMUserManagedPolicyArns (\s a -> s { _iAMUserManagedPolicyArns = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-path
diff --git a/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs b/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
--- a/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
+++ b/library-gen/Stratosphere/Resources/IAMUserToGroupAddition.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
 
@@ -19,29 +20,29 @@
 data IAMUserToGroupAddition =
   IAMUserToGroupAddition
   { _iAMUserToGroupAdditionGroupName :: Val Text
-  , _iAMUserToGroupAdditionUsers :: [Val Text]
+  , _iAMUserToGroupAdditionUsers :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON IAMUserToGroupAddition where
   toJSON IAMUserToGroupAddition{..} =
     object $
     catMaybes
-    [ Just ("GroupName" .= _iAMUserToGroupAdditionGroupName)
-    , Just ("Users" .= _iAMUserToGroupAdditionUsers)
+    [ (Just . ("GroupName",) . toJSON) _iAMUserToGroupAdditionGroupName
+    , (Just . ("Users",) . toJSON) _iAMUserToGroupAdditionUsers
     ]
 
 instance FromJSON IAMUserToGroupAddition where
   parseJSON (Object obj) =
     IAMUserToGroupAddition <$>
-      obj .: "GroupName" <*>
-      obj .: "Users"
+      (obj .: "GroupName") <*>
+      (obj .: "Users")
   parseJSON _ = mempty
 
 -- | Constructor for 'IAMUserToGroupAddition' containing required fields as
 -- arguments.
 iamUserToGroupAddition
   :: Val Text -- ^ 'iamutgaGroupName'
-  -> [Val Text] -- ^ 'iamutgaUsers'
+  -> ValList Text -- ^ 'iamutgaUsers'
   -> IAMUserToGroupAddition
 iamUserToGroupAddition groupNamearg usersarg =
   IAMUserToGroupAddition
@@ -54,5 +55,5 @@
 iamutgaGroupName = lens _iAMUserToGroupAdditionGroupName (\s a -> s { _iAMUserToGroupAdditionGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html#cfn-iam-addusertogroup-users
-iamutgaUsers :: Lens' IAMUserToGroupAddition [Val Text]
+iamutgaUsers :: Lens' IAMUserToGroupAddition (ValList Text)
 iamutgaUsers = lens _iAMUserToGroupAdditionUsers (\s a -> s { _iAMUserToGroupAdditionUsers = a })
diff --git a/library-gen/Stratosphere/Resources/IoTCertificate.hs b/library-gen/Stratosphere/Resources/IoTCertificate.hs
--- a/library-gen/Stratosphere/Resources/IoTCertificate.hs
+++ b/library-gen/Stratosphere/Resources/IoTCertificate.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html
 
@@ -26,15 +27,15 @@
   toJSON IoTCertificate{..} =
     object $
     catMaybes
-    [ Just ("CertificateSigningRequest" .= _ioTCertificateCertificateSigningRequest)
-    , Just ("Status" .= _ioTCertificateStatus)
+    [ (Just . ("CertificateSigningRequest",) . toJSON) _ioTCertificateCertificateSigningRequest
+    , (Just . ("Status",) . toJSON) _ioTCertificateStatus
     ]
 
 instance FromJSON IoTCertificate where
   parseJSON (Object obj) =
     IoTCertificate <$>
-      obj .: "CertificateSigningRequest" <*>
-      obj .: "Status"
+      (obj .: "CertificateSigningRequest") <*>
+      (obj .: "Status")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTCertificate' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTPolicy.hs b/library-gen/Stratosphere/Resources/IoTPolicy.hs
--- a/library-gen/Stratosphere/Resources/IoTPolicy.hs
+++ b/library-gen/Stratosphere/Resources/IoTPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html
 
@@ -26,15 +27,15 @@
   toJSON IoTPolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _ioTPolicyPolicyDocument)
-    , ("PolicyName" .=) <$> _ioTPolicyPolicyName
+    [ (Just . ("PolicyDocument",) . toJSON) _ioTPolicyPolicyDocument
+    , fmap (("PolicyName",) . toJSON) _ioTPolicyPolicyName
     ]
 
 instance FromJSON IoTPolicy where
   parseJSON (Object obj) =
     IoTPolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .:? "PolicyName"
+      (obj .: "PolicyDocument") <*>
+      (obj .:? "PolicyName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTPolicy' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs b/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
--- a/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
+++ b/library-gen/Stratosphere/Resources/IoTPolicyPrincipalAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html
 
@@ -26,15 +27,15 @@
   toJSON IoTPolicyPrincipalAttachment{..} =
     object $
     catMaybes
-    [ Just ("PolicyName" .= _ioTPolicyPrincipalAttachmentPolicyName)
-    , Just ("Principal" .= _ioTPolicyPrincipalAttachmentPrincipal)
+    [ (Just . ("PolicyName",) . toJSON) _ioTPolicyPrincipalAttachmentPolicyName
+    , (Just . ("Principal",) . toJSON) _ioTPolicyPrincipalAttachmentPrincipal
     ]
 
 instance FromJSON IoTPolicyPrincipalAttachment where
   parseJSON (Object obj) =
     IoTPolicyPrincipalAttachment <$>
-      obj .: "PolicyName" <*>
-      obj .: "Principal"
+      (obj .: "PolicyName") <*>
+      (obj .: "Principal")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTPolicyPrincipalAttachment' containing required fields
diff --git a/library-gen/Stratosphere/Resources/IoTThing.hs b/library-gen/Stratosphere/Resources/IoTThing.hs
--- a/library-gen/Stratosphere/Resources/IoTThing.hs
+++ b/library-gen/Stratosphere/Resources/IoTThing.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html
 
@@ -26,15 +27,15 @@
   toJSON IoTThing{..} =
     object $
     catMaybes
-    [ ("AttributePayload" .=) <$> _ioTThingAttributePayload
-    , ("ThingName" .=) <$> _ioTThingThingName
+    [ fmap (("AttributePayload",) . toJSON) _ioTThingAttributePayload
+    , fmap (("ThingName",) . toJSON) _ioTThingThingName
     ]
 
 instance FromJSON IoTThing where
   parseJSON (Object obj) =
     IoTThing <$>
-      obj .:? "AttributePayload" <*>
-      obj .:? "ThingName"
+      (obj .:? "AttributePayload") <*>
+      (obj .:? "ThingName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTThing' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs b/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
--- a/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
+++ b/library-gen/Stratosphere/Resources/IoTThingPrincipalAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html
 
@@ -26,15 +27,15 @@
   toJSON IoTThingPrincipalAttachment{..} =
     object $
     catMaybes
-    [ Just ("Principal" .= _ioTThingPrincipalAttachmentPrincipal)
-    , Just ("ThingName" .= _ioTThingPrincipalAttachmentThingName)
+    [ (Just . ("Principal",) . toJSON) _ioTThingPrincipalAttachmentPrincipal
+    , (Just . ("ThingName",) . toJSON) _ioTThingPrincipalAttachmentThingName
     ]
 
 instance FromJSON IoTThingPrincipalAttachment where
   parseJSON (Object obj) =
     IoTThingPrincipalAttachment <$>
-      obj .: "Principal" <*>
-      obj .: "ThingName"
+      (obj .: "Principal") <*>
+      (obj .: "ThingName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTThingPrincipalAttachment' containing required fields
diff --git a/library-gen/Stratosphere/Resources/IoTTopicRule.hs b/library-gen/Stratosphere/Resources/IoTTopicRule.hs
--- a/library-gen/Stratosphere/Resources/IoTTopicRule.hs
+++ b/library-gen/Stratosphere/Resources/IoTTopicRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html
 
@@ -26,15 +27,15 @@
   toJSON IoTTopicRule{..} =
     object $
     catMaybes
-    [ ("RuleName" .=) <$> _ioTTopicRuleRuleName
-    , Just ("TopicRulePayload" .= _ioTTopicRuleTopicRulePayload)
+    [ fmap (("RuleName",) . toJSON) _ioTTopicRuleRuleName
+    , (Just . ("TopicRulePayload",) . toJSON) _ioTTopicRuleTopicRulePayload
     ]
 
 instance FromJSON IoTTopicRule where
   parseJSON (Object obj) =
     IoTTopicRule <$>
-      obj .:? "RuleName" <*>
-      obj .: "TopicRulePayload"
+      (obj .:? "RuleName") <*>
+      (obj .: "TopicRulePayload")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoTTopicRule' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KMSAlias.hs b/library-gen/Stratosphere/Resources/KMSAlias.hs
--- a/library-gen/Stratosphere/Resources/KMSAlias.hs
+++ b/library-gen/Stratosphere/Resources/KMSAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
 
@@ -26,15 +27,15 @@
   toJSON KMSAlias{..} =
     object $
     catMaybes
-    [ Just ("AliasName" .= _kMSAliasAliasName)
-    , Just ("TargetKeyId" .= _kMSAliasTargetKeyId)
+    [ (Just . ("AliasName",) . toJSON) _kMSAliasAliasName
+    , (Just . ("TargetKeyId",) . toJSON) _kMSAliasTargetKeyId
     ]
 
 instance FromJSON KMSAlias where
   parseJSON (Object obj) =
     KMSAlias <$>
-      obj .: "AliasName" <*>
-      obj .: "TargetKeyId"
+      (obj .: "AliasName") <*>
+      (obj .: "TargetKeyId")
   parseJSON _ = mempty
 
 -- | Constructor for 'KMSAlias' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/KMSKey.hs b/library-gen/Stratosphere/Resources/KMSKey.hs
--- a/library-gen/Stratosphere/Resources/KMSKey.hs
+++ b/library-gen/Stratosphere/Resources/KMSKey.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
 
@@ -19,8 +20,8 @@
 data KMSKey =
   KMSKey
   { _kMSKeyDescription :: Maybe (Val Text)
-  , _kMSKeyEnableKeyRotation :: Maybe (Val Bool')
-  , _kMSKeyEnabled :: Maybe (Val Bool')
+  , _kMSKeyEnableKeyRotation :: Maybe (Val Bool)
+  , _kMSKeyEnabled :: Maybe (Val Bool)
   , _kMSKeyKeyPolicy :: Object
   , _kMSKeyKeyUsage :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -29,21 +30,21 @@
   toJSON KMSKey{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _kMSKeyDescription
-    , ("EnableKeyRotation" .=) <$> _kMSKeyEnableKeyRotation
-    , ("Enabled" .=) <$> _kMSKeyEnabled
-    , Just ("KeyPolicy" .= _kMSKeyKeyPolicy)
-    , ("KeyUsage" .=) <$> _kMSKeyKeyUsage
+    [ fmap (("Description",) . toJSON) _kMSKeyDescription
+    , fmap (("EnableKeyRotation",) . toJSON . fmap Bool') _kMSKeyEnableKeyRotation
+    , fmap (("Enabled",) . toJSON . fmap Bool') _kMSKeyEnabled
+    , (Just . ("KeyPolicy",) . toJSON) _kMSKeyKeyPolicy
+    , fmap (("KeyUsage",) . toJSON) _kMSKeyKeyUsage
     ]
 
 instance FromJSON KMSKey where
   parseJSON (Object obj) =
     KMSKey <$>
-      obj .:? "Description" <*>
-      obj .:? "EnableKeyRotation" <*>
-      obj .:? "Enabled" <*>
-      obj .: "KeyPolicy" <*>
-      obj .:? "KeyUsage"
+      (obj .:? "Description") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableKeyRotation") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .: "KeyPolicy") <*>
+      (obj .:? "KeyUsage")
   parseJSON _ = mempty
 
 -- | Constructor for 'KMSKey' containing required fields as arguments.
@@ -64,11 +65,11 @@
 kmskDescription = lens _kMSKeyDescription (\s a -> s { _kMSKeyDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enablekeyrotation
-kmskEnableKeyRotation :: Lens' KMSKey (Maybe (Val Bool'))
+kmskEnableKeyRotation :: Lens' KMSKey (Maybe (Val Bool))
 kmskEnableKeyRotation = lens _kMSKeyEnableKeyRotation (\s a -> s { _kMSKeyEnableKeyRotation = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enabled
-kmskEnabled :: Lens' KMSKey (Maybe (Val Bool'))
+kmskEnabled :: Lens' KMSKey (Maybe (Val Bool))
 kmskEnabled = lens _kMSKeyEnabled (\s a -> s { _kMSKeyEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy
diff --git a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
--- a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
+++ b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html
 
@@ -30,19 +31,19 @@
   toJSON KinesisFirehoseDeliveryStream{..} =
     object $
     catMaybes
-    [ ("DeliveryStreamName" .=) <$> _kinesisFirehoseDeliveryStreamDeliveryStreamName
-    , ("ElasticsearchDestinationConfiguration" .=) <$> _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
-    , ("RedshiftDestinationConfiguration" .=) <$> _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
-    , ("S3DestinationConfiguration" .=) <$> _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
+    [ fmap (("DeliveryStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamName
+    , fmap (("ElasticsearchDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
+    , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
+    , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStream where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStream <$>
-      obj .:? "DeliveryStreamName" <*>
-      obj .:? "ElasticsearchDestinationConfiguration" <*>
-      obj .:? "RedshiftDestinationConfiguration" <*>
-      obj .:? "S3DestinationConfiguration"
+      (obj .:? "DeliveryStreamName") <*>
+      (obj .:? "ElasticsearchDestinationConfiguration") <*>
+      (obj .:? "RedshiftDestinationConfiguration") <*>
+      (obj .:? "S3DestinationConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStream' containing required
diff --git a/library-gen/Stratosphere/Resources/KinesisStream.hs b/library-gen/Stratosphere/Resources/KinesisStream.hs
--- a/library-gen/Stratosphere/Resources/KinesisStream.hs
+++ b/library-gen/Stratosphere/Resources/KinesisStream.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html
 
@@ -19,8 +20,8 @@
 data KinesisStream =
   KinesisStream
   { _kinesisStreamName :: Maybe (Val Text)
-  , _kinesisStreamRetentionPeriodHours :: Maybe (Val Integer')
-  , _kinesisStreamShardCount :: Val Integer'
+  , _kinesisStreamRetentionPeriodHours :: Maybe (Val Integer)
+  , _kinesisStreamShardCount :: Val Integer
   , _kinesisStreamTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -28,24 +29,24 @@
   toJSON KinesisStream{..} =
     object $
     catMaybes
-    [ ("Name" .=) <$> _kinesisStreamName
-    , ("RetentionPeriodHours" .=) <$> _kinesisStreamRetentionPeriodHours
-    , Just ("ShardCount" .= _kinesisStreamShardCount)
-    , ("Tags" .=) <$> _kinesisStreamTags
+    [ fmap (("Name",) . toJSON) _kinesisStreamName
+    , fmap (("RetentionPeriodHours",) . toJSON . fmap Integer') _kinesisStreamRetentionPeriodHours
+    , (Just . ("ShardCount",) . toJSON . fmap Integer') _kinesisStreamShardCount
+    , fmap (("Tags",) . toJSON) _kinesisStreamTags
     ]
 
 instance FromJSON KinesisStream where
   parseJSON (Object obj) =
     KinesisStream <$>
-      obj .:? "Name" <*>
-      obj .:? "RetentionPeriodHours" <*>
-      obj .: "ShardCount" <*>
-      obj .:? "Tags"
+      (obj .:? "Name") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "RetentionPeriodHours") <*>
+      fmap (fmap unInteger') (obj .: "ShardCount") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisStream' containing required fields as arguments.
 kinesisStream
-  :: Val Integer' -- ^ 'ksShardCount'
+  :: Val Integer -- ^ 'ksShardCount'
   -> KinesisStream
 kinesisStream shardCountarg =
   KinesisStream
@@ -60,11 +61,11 @@
 ksName = lens _kinesisStreamName (\s a -> s { _kinesisStreamName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-retentionperiodhours
-ksRetentionPeriodHours :: Lens' KinesisStream (Maybe (Val Integer'))
+ksRetentionPeriodHours :: Lens' KinesisStream (Maybe (Val Integer))
 ksRetentionPeriodHours = lens _kinesisStreamRetentionPeriodHours (\s a -> s { _kinesisStreamRetentionPeriodHours = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-shardcount
-ksShardCount :: Lens' KinesisStream (Val Integer')
+ksShardCount :: Lens' KinesisStream (Val Integer)
 ksShardCount = lens _kinesisStreamShardCount (\s a -> s { _kinesisStreamShardCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-tags
diff --git a/library-gen/Stratosphere/Resources/LambdaAlias.hs b/library-gen/Stratosphere/Resources/LambdaAlias.hs
--- a/library-gen/Stratosphere/Resources/LambdaAlias.hs
+++ b/library-gen/Stratosphere/Resources/LambdaAlias.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
 
@@ -28,19 +29,19 @@
   toJSON LambdaAlias{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _lambdaAliasDescription
-    , Just ("FunctionName" .= _lambdaAliasFunctionName)
-    , Just ("FunctionVersion" .= _lambdaAliasFunctionVersion)
-    , Just ("Name" .= _lambdaAliasName)
+    [ fmap (("Description",) . toJSON) _lambdaAliasDescription
+    , (Just . ("FunctionName",) . toJSON) _lambdaAliasFunctionName
+    , (Just . ("FunctionVersion",) . toJSON) _lambdaAliasFunctionVersion
+    , (Just . ("Name",) . toJSON) _lambdaAliasName
     ]
 
 instance FromJSON LambdaAlias where
   parseJSON (Object obj) =
     LambdaAlias <$>
-      obj .:? "Description" <*>
-      obj .: "FunctionName" <*>
-      obj .: "FunctionVersion" <*>
-      obj .: "Name"
+      (obj .:? "Description") <*>
+      (obj .: "FunctionName") <*>
+      (obj .: "FunctionVersion") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaAlias' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
--- a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
+++ b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
 
@@ -18,8 +19,8 @@
 -- 'lambdaEventSourceMapping' for a more convenient constructor.
 data LambdaEventSourceMapping =
   LambdaEventSourceMapping
-  { _lambdaEventSourceMappingBatchSize :: Maybe (Val Integer')
-  , _lambdaEventSourceMappingEnabled :: Maybe (Val Bool')
+  { _lambdaEventSourceMappingBatchSize :: Maybe (Val Integer)
+  , _lambdaEventSourceMappingEnabled :: Maybe (Val Bool)
   , _lambdaEventSourceMappingEventSourceArn :: Val Text
   , _lambdaEventSourceMappingFunctionName :: Val Text
   , _lambdaEventSourceMappingStartingPosition :: Val Text
@@ -29,21 +30,21 @@
   toJSON LambdaEventSourceMapping{..} =
     object $
     catMaybes
-    [ ("BatchSize" .=) <$> _lambdaEventSourceMappingBatchSize
-    , ("Enabled" .=) <$> _lambdaEventSourceMappingEnabled
-    , Just ("EventSourceArn" .= _lambdaEventSourceMappingEventSourceArn)
-    , Just ("FunctionName" .= _lambdaEventSourceMappingFunctionName)
-    , Just ("StartingPosition" .= _lambdaEventSourceMappingStartingPosition)
+    [ fmap (("BatchSize",) . toJSON . fmap Integer') _lambdaEventSourceMappingBatchSize
+    , fmap (("Enabled",) . toJSON . fmap Bool') _lambdaEventSourceMappingEnabled
+    , (Just . ("EventSourceArn",) . toJSON) _lambdaEventSourceMappingEventSourceArn
+    , (Just . ("FunctionName",) . toJSON) _lambdaEventSourceMappingFunctionName
+    , (Just . ("StartingPosition",) . toJSON) _lambdaEventSourceMappingStartingPosition
     ]
 
 instance FromJSON LambdaEventSourceMapping where
   parseJSON (Object obj) =
     LambdaEventSourceMapping <$>
-      obj .:? "BatchSize" <*>
-      obj .:? "Enabled" <*>
-      obj .: "EventSourceArn" <*>
-      obj .: "FunctionName" <*>
-      obj .: "StartingPosition"
+      fmap (fmap (fmap unInteger')) (obj .:? "BatchSize") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .: "EventSourceArn") <*>
+      (obj .: "FunctionName") <*>
+      (obj .: "StartingPosition")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaEventSourceMapping' containing required fields as
@@ -63,11 +64,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-batchsize
-lesmBatchSize :: Lens' LambdaEventSourceMapping (Maybe (Val Integer'))
+lesmBatchSize :: Lens' LambdaEventSourceMapping (Maybe (Val Integer))
 lesmBatchSize = lens _lambdaEventSourceMappingBatchSize (\s a -> s { _lambdaEventSourceMappingBatchSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-enabled
-lesmEnabled :: Lens' LambdaEventSourceMapping (Maybe (Val Bool'))
+lesmEnabled :: Lens' LambdaEventSourceMapping (Maybe (Val Bool))
 lesmEnabled = lens _lambdaEventSourceMappingEnabled (\s a -> s { _lambdaEventSourceMappingEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-eventsourcearn
diff --git a/library-gen/Stratosphere/Resources/LambdaFunction.hs b/library-gen/Stratosphere/Resources/LambdaFunction.hs
--- a/library-gen/Stratosphere/Resources/LambdaFunction.hs
+++ b/library-gen/Stratosphere/Resources/LambdaFunction.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
 
@@ -31,11 +32,11 @@
   , _lambdaFunctionFunctionName :: Maybe (Val Text)
   , _lambdaFunctionHandler :: Val Text
   , _lambdaFunctionKmsKeyArn :: Maybe (Val Text)
-  , _lambdaFunctionMemorySize :: Maybe (Val Integer')
+  , _lambdaFunctionMemorySize :: Maybe (Val Integer)
   , _lambdaFunctionRole :: Val Text
   , _lambdaFunctionRuntime :: Val Runtime
   , _lambdaFunctionTags :: Maybe [Tag]
-  , _lambdaFunctionTimeout :: Maybe (Val Integer')
+  , _lambdaFunctionTimeout :: Maybe (Val Integer)
   , _lambdaFunctionTracingConfig :: Maybe LambdaFunctionTracingConfig
   , _lambdaFunctionVpcConfig :: Maybe LambdaFunctionVpcConfig
   } deriving (Show, Eq)
@@ -44,39 +45,39 @@
   toJSON LambdaFunction{..} =
     object $
     catMaybes
-    [ Just ("Code" .= _lambdaFunctionCode)
-    , ("DeadLetterConfig" .=) <$> _lambdaFunctionDeadLetterConfig
-    , ("Description" .=) <$> _lambdaFunctionDescription
-    , ("Environment" .=) <$> _lambdaFunctionEnvironment
-    , ("FunctionName" .=) <$> _lambdaFunctionFunctionName
-    , Just ("Handler" .= _lambdaFunctionHandler)
-    , ("KmsKeyArn" .=) <$> _lambdaFunctionKmsKeyArn
-    , ("MemorySize" .=) <$> _lambdaFunctionMemorySize
-    , Just ("Role" .= _lambdaFunctionRole)
-    , Just ("Runtime" .= _lambdaFunctionRuntime)
-    , ("Tags" .=) <$> _lambdaFunctionTags
-    , ("Timeout" .=) <$> _lambdaFunctionTimeout
-    , ("TracingConfig" .=) <$> _lambdaFunctionTracingConfig
-    , ("VpcConfig" .=) <$> _lambdaFunctionVpcConfig
+    [ (Just . ("Code",) . toJSON) _lambdaFunctionCode
+    , fmap (("DeadLetterConfig",) . toJSON) _lambdaFunctionDeadLetterConfig
+    , fmap (("Description",) . toJSON) _lambdaFunctionDescription
+    , fmap (("Environment",) . toJSON) _lambdaFunctionEnvironment
+    , fmap (("FunctionName",) . toJSON) _lambdaFunctionFunctionName
+    , (Just . ("Handler",) . toJSON) _lambdaFunctionHandler
+    , fmap (("KmsKeyArn",) . toJSON) _lambdaFunctionKmsKeyArn
+    , fmap (("MemorySize",) . toJSON . fmap Integer') _lambdaFunctionMemorySize
+    , (Just . ("Role",) . toJSON) _lambdaFunctionRole
+    , (Just . ("Runtime",) . toJSON) _lambdaFunctionRuntime
+    , fmap (("Tags",) . toJSON) _lambdaFunctionTags
+    , fmap (("Timeout",) . toJSON . fmap Integer') _lambdaFunctionTimeout
+    , fmap (("TracingConfig",) . toJSON) _lambdaFunctionTracingConfig
+    , fmap (("VpcConfig",) . toJSON) _lambdaFunctionVpcConfig
     ]
 
 instance FromJSON LambdaFunction where
   parseJSON (Object obj) =
     LambdaFunction <$>
-      obj .: "Code" <*>
-      obj .:? "DeadLetterConfig" <*>
-      obj .:? "Description" <*>
-      obj .:? "Environment" <*>
-      obj .:? "FunctionName" <*>
-      obj .: "Handler" <*>
-      obj .:? "KmsKeyArn" <*>
-      obj .:? "MemorySize" <*>
-      obj .: "Role" <*>
-      obj .: "Runtime" <*>
-      obj .:? "Tags" <*>
-      obj .:? "Timeout" <*>
-      obj .:? "TracingConfig" <*>
-      obj .:? "VpcConfig"
+      (obj .: "Code") <*>
+      (obj .:? "DeadLetterConfig") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Environment") <*>
+      (obj .:? "FunctionName") <*>
+      (obj .: "Handler") <*>
+      (obj .:? "KmsKeyArn") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MemorySize") <*>
+      (obj .: "Role") <*>
+      (obj .: "Runtime") <*>
+      (obj .:? "Tags") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Timeout") <*>
+      (obj .:? "TracingConfig") <*>
+      (obj .:? "VpcConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaFunction' containing required fields as arguments.
@@ -133,7 +134,7 @@
 lfKmsKeyArn = lens _lambdaFunctionKmsKeyArn (\s a -> s { _lambdaFunctionKmsKeyArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-memorysize
-lfMemorySize :: Lens' LambdaFunction (Maybe (Val Integer'))
+lfMemorySize :: Lens' LambdaFunction (Maybe (Val Integer))
 lfMemorySize = lens _lambdaFunctionMemorySize (\s a -> s { _lambdaFunctionMemorySize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-role
@@ -149,7 +150,7 @@
 lfTags = lens _lambdaFunctionTags (\s a -> s { _lambdaFunctionTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-timeout
-lfTimeout :: Lens' LambdaFunction (Maybe (Val Integer'))
+lfTimeout :: Lens' LambdaFunction (Maybe (Val Integer))
 lfTimeout = lens _lambdaFunctionTimeout (\s a -> s { _lambdaFunctionTimeout = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tracingconfig
diff --git a/library-gen/Stratosphere/Resources/LambdaPermission.hs b/library-gen/Stratosphere/Resources/LambdaPermission.hs
--- a/library-gen/Stratosphere/Resources/LambdaPermission.hs
+++ b/library-gen/Stratosphere/Resources/LambdaPermission.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
 
@@ -29,21 +30,21 @@
   toJSON LambdaPermission{..} =
     object $
     catMaybes
-    [ Just ("Action" .= _lambdaPermissionAction)
-    , Just ("FunctionName" .= _lambdaPermissionFunctionName)
-    , Just ("Principal" .= _lambdaPermissionPrincipal)
-    , ("SourceAccount" .=) <$> _lambdaPermissionSourceAccount
-    , ("SourceArn" .=) <$> _lambdaPermissionSourceArn
+    [ (Just . ("Action",) . toJSON) _lambdaPermissionAction
+    , (Just . ("FunctionName",) . toJSON) _lambdaPermissionFunctionName
+    , (Just . ("Principal",) . toJSON) _lambdaPermissionPrincipal
+    , fmap (("SourceAccount",) . toJSON) _lambdaPermissionSourceAccount
+    , fmap (("SourceArn",) . toJSON) _lambdaPermissionSourceArn
     ]
 
 instance FromJSON LambdaPermission where
   parseJSON (Object obj) =
     LambdaPermission <$>
-      obj .: "Action" <*>
-      obj .: "FunctionName" <*>
-      obj .: "Principal" <*>
-      obj .:? "SourceAccount" <*>
-      obj .:? "SourceArn"
+      (obj .: "Action") <*>
+      (obj .: "FunctionName") <*>
+      (obj .: "Principal") <*>
+      (obj .:? "SourceAccount") <*>
+      (obj .:? "SourceArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaPermission' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/LambdaVersion.hs b/library-gen/Stratosphere/Resources/LambdaVersion.hs
--- a/library-gen/Stratosphere/Resources/LambdaVersion.hs
+++ b/library-gen/Stratosphere/Resources/LambdaVersion.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
 
@@ -27,17 +28,17 @@
   toJSON LambdaVersion{..} =
     object $
     catMaybes
-    [ ("CodeSha256" .=) <$> _lambdaVersionCodeSha256
-    , ("Description" .=) <$> _lambdaVersionDescription
-    , Just ("FunctionName" .= _lambdaVersionFunctionName)
+    [ fmap (("CodeSha256",) . toJSON) _lambdaVersionCodeSha256
+    , fmap (("Description",) . toJSON) _lambdaVersionDescription
+    , (Just . ("FunctionName",) . toJSON) _lambdaVersionFunctionName
     ]
 
 instance FromJSON LambdaVersion where
   parseJSON (Object obj) =
     LambdaVersion <$>
-      obj .:? "CodeSha256" <*>
-      obj .:? "Description" <*>
-      obj .: "FunctionName"
+      (obj .:? "CodeSha256") <*>
+      (obj .:? "Description") <*>
+      (obj .: "FunctionName")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaVersion' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/LogsDestination.hs b/library-gen/Stratosphere/Resources/LogsDestination.hs
--- a/library-gen/Stratosphere/Resources/LogsDestination.hs
+++ b/library-gen/Stratosphere/Resources/LogsDestination.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html
 
@@ -28,19 +29,19 @@
   toJSON LogsDestination{..} =
     object $
     catMaybes
-    [ Just ("DestinationName" .= _logsDestinationDestinationName)
-    , Just ("DestinationPolicy" .= _logsDestinationDestinationPolicy)
-    , Just ("RoleArn" .= _logsDestinationRoleArn)
-    , Just ("TargetArn" .= _logsDestinationTargetArn)
+    [ (Just . ("DestinationName",) . toJSON) _logsDestinationDestinationName
+    , (Just . ("DestinationPolicy",) . toJSON) _logsDestinationDestinationPolicy
+    , (Just . ("RoleArn",) . toJSON) _logsDestinationRoleArn
+    , (Just . ("TargetArn",) . toJSON) _logsDestinationTargetArn
     ]
 
 instance FromJSON LogsDestination where
   parseJSON (Object obj) =
     LogsDestination <$>
-      obj .: "DestinationName" <*>
-      obj .: "DestinationPolicy" <*>
-      obj .: "RoleArn" <*>
-      obj .: "TargetArn"
+      (obj .: "DestinationName") <*>
+      (obj .: "DestinationPolicy") <*>
+      (obj .: "RoleArn") <*>
+      (obj .: "TargetArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsDestination' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/LogsLogGroup.hs b/library-gen/Stratosphere/Resources/LogsLogGroup.hs
--- a/library-gen/Stratosphere/Resources/LogsLogGroup.hs
+++ b/library-gen/Stratosphere/Resources/LogsLogGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html
 
@@ -19,22 +20,22 @@
 data LogsLogGroup =
   LogsLogGroup
   { _logsLogGroupLogGroupName :: Maybe (Val Text)
-  , _logsLogGroupRetentionInDays :: Maybe (Val Integer')
+  , _logsLogGroupRetentionInDays :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON LogsLogGroup where
   toJSON LogsLogGroup{..} =
     object $
     catMaybes
-    [ ("LogGroupName" .=) <$> _logsLogGroupLogGroupName
-    , ("RetentionInDays" .=) <$> _logsLogGroupRetentionInDays
+    [ fmap (("LogGroupName",) . toJSON) _logsLogGroupLogGroupName
+    , fmap (("RetentionInDays",) . toJSON . fmap Integer') _logsLogGroupRetentionInDays
     ]
 
 instance FromJSON LogsLogGroup where
   parseJSON (Object obj) =
     LogsLogGroup <$>
-      obj .:? "LogGroupName" <*>
-      obj .:? "RetentionInDays"
+      (obj .:? "LogGroupName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "RetentionInDays")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsLogGroup' containing required fields as arguments.
@@ -51,5 +52,5 @@
 llgLogGroupName = lens _logsLogGroupLogGroupName (\s a -> s { _logsLogGroupLogGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html#cfn-cwl-loggroup-retentionindays
-llgRetentionInDays :: Lens' LogsLogGroup (Maybe (Val Integer'))
+llgRetentionInDays :: Lens' LogsLogGroup (Maybe (Val Integer))
 llgRetentionInDays = lens _logsLogGroupRetentionInDays (\s a -> s { _logsLogGroupRetentionInDays = a })
diff --git a/library-gen/Stratosphere/Resources/LogsLogStream.hs b/library-gen/Stratosphere/Resources/LogsLogStream.hs
--- a/library-gen/Stratosphere/Resources/LogsLogStream.hs
+++ b/library-gen/Stratosphere/Resources/LogsLogStream.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html
 
@@ -26,15 +27,15 @@
   toJSON LogsLogStream{..} =
     object $
     catMaybes
-    [ Just ("LogGroupName" .= _logsLogStreamLogGroupName)
-    , ("LogStreamName" .=) <$> _logsLogStreamLogStreamName
+    [ (Just . ("LogGroupName",) . toJSON) _logsLogStreamLogGroupName
+    , fmap (("LogStreamName",) . toJSON) _logsLogStreamLogStreamName
     ]
 
 instance FromJSON LogsLogStream where
   parseJSON (Object obj) =
     LogsLogStream <$>
-      obj .: "LogGroupName" <*>
-      obj .:? "LogStreamName"
+      (obj .: "LogGroupName") <*>
+      (obj .:? "LogStreamName")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsLogStream' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/LogsMetricFilter.hs b/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
--- a/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
+++ b/library-gen/Stratosphere/Resources/LogsMetricFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html
 
@@ -27,17 +28,17 @@
   toJSON LogsMetricFilter{..} =
     object $
     catMaybes
-    [ Just ("FilterPattern" .= _logsMetricFilterFilterPattern)
-    , Just ("LogGroupName" .= _logsMetricFilterLogGroupName)
-    , Just ("MetricTransformations" .= _logsMetricFilterMetricTransformations)
+    [ (Just . ("FilterPattern",) . toJSON) _logsMetricFilterFilterPattern
+    , (Just . ("LogGroupName",) . toJSON) _logsMetricFilterLogGroupName
+    , (Just . ("MetricTransformations",) . toJSON) _logsMetricFilterMetricTransformations
     ]
 
 instance FromJSON LogsMetricFilter where
   parseJSON (Object obj) =
     LogsMetricFilter <$>
-      obj .: "FilterPattern" <*>
-      obj .: "LogGroupName" <*>
-      obj .: "MetricTransformations"
+      (obj .: "FilterPattern") <*>
+      (obj .: "LogGroupName") <*>
+      (obj .: "MetricTransformations")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsMetricFilter' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs b/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
--- a/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
+++ b/library-gen/Stratosphere/Resources/LogsSubscriptionFilter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
 
@@ -28,19 +29,19 @@
   toJSON LogsSubscriptionFilter{..} =
     object $
     catMaybes
-    [ Just ("DestinationArn" .= _logsSubscriptionFilterDestinationArn)
-    , Just ("FilterPattern" .= _logsSubscriptionFilterFilterPattern)
-    , Just ("LogGroupName" .= _logsSubscriptionFilterLogGroupName)
-    , ("RoleArn" .=) <$> _logsSubscriptionFilterRoleArn
+    [ (Just . ("DestinationArn",) . toJSON) _logsSubscriptionFilterDestinationArn
+    , (Just . ("FilterPattern",) . toJSON) _logsSubscriptionFilterFilterPattern
+    , (Just . ("LogGroupName",) . toJSON) _logsSubscriptionFilterLogGroupName
+    , fmap (("RoleArn",) . toJSON) _logsSubscriptionFilterRoleArn
     ]
 
 instance FromJSON LogsSubscriptionFilter where
   parseJSON (Object obj) =
     LogsSubscriptionFilter <$>
-      obj .: "DestinationArn" <*>
-      obj .: "FilterPattern" <*>
-      obj .: "LogGroupName" <*>
-      obj .:? "RoleArn"
+      (obj .: "DestinationArn") <*>
+      (obj .: "FilterPattern") <*>
+      (obj .: "LogGroupName") <*>
+      (obj .:? "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'LogsSubscriptionFilter' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/OpsWorksApp.hs b/library-gen/Stratosphere/Resources/OpsWorksApp.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksApp.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksApp.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html
 
@@ -25,8 +26,8 @@
   , _opsWorksAppAttributes :: Maybe Object
   , _opsWorksAppDataSources :: Maybe [OpsWorksAppDataSource]
   , _opsWorksAppDescription :: Maybe (Val Text)
-  , _opsWorksAppDomains :: Maybe [Val Text]
-  , _opsWorksAppEnableSsl :: Maybe (Val Bool')
+  , _opsWorksAppDomains :: Maybe (ValList Text)
+  , _opsWorksAppEnableSsl :: Maybe (Val Bool)
   , _opsWorksAppEnvironment :: Maybe [OpsWorksAppEnvironmentVariable]
   , _opsWorksAppName :: Val Text
   , _opsWorksAppShortname :: Maybe (Val Text)
@@ -39,35 +40,35 @@
   toJSON OpsWorksApp{..} =
     object $
     catMaybes
-    [ ("AppSource" .=) <$> _opsWorksAppAppSource
-    , ("Attributes" .=) <$> _opsWorksAppAttributes
-    , ("DataSources" .=) <$> _opsWorksAppDataSources
-    , ("Description" .=) <$> _opsWorksAppDescription
-    , ("Domains" .=) <$> _opsWorksAppDomains
-    , ("EnableSsl" .=) <$> _opsWorksAppEnableSsl
-    , ("Environment" .=) <$> _opsWorksAppEnvironment
-    , Just ("Name" .= _opsWorksAppName)
-    , ("Shortname" .=) <$> _opsWorksAppShortname
-    , ("SslConfiguration" .=) <$> _opsWorksAppSslConfiguration
-    , Just ("StackId" .= _opsWorksAppStackId)
-    , Just ("Type" .= _opsWorksAppType)
+    [ fmap (("AppSource",) . toJSON) _opsWorksAppAppSource
+    , fmap (("Attributes",) . toJSON) _opsWorksAppAttributes
+    , fmap (("DataSources",) . toJSON) _opsWorksAppDataSources
+    , fmap (("Description",) . toJSON) _opsWorksAppDescription
+    , fmap (("Domains",) . toJSON) _opsWorksAppDomains
+    , fmap (("EnableSsl",) . toJSON . fmap Bool') _opsWorksAppEnableSsl
+    , fmap (("Environment",) . toJSON) _opsWorksAppEnvironment
+    , (Just . ("Name",) . toJSON) _opsWorksAppName
+    , fmap (("Shortname",) . toJSON) _opsWorksAppShortname
+    , fmap (("SslConfiguration",) . toJSON) _opsWorksAppSslConfiguration
+    , (Just . ("StackId",) . toJSON) _opsWorksAppStackId
+    , (Just . ("Type",) . toJSON) _opsWorksAppType
     ]
 
 instance FromJSON OpsWorksApp where
   parseJSON (Object obj) =
     OpsWorksApp <$>
-      obj .:? "AppSource" <*>
-      obj .:? "Attributes" <*>
-      obj .:? "DataSources" <*>
-      obj .:? "Description" <*>
-      obj .:? "Domains" <*>
-      obj .:? "EnableSsl" <*>
-      obj .:? "Environment" <*>
-      obj .: "Name" <*>
-      obj .:? "Shortname" <*>
-      obj .:? "SslConfiguration" <*>
-      obj .: "StackId" <*>
-      obj .: "Type"
+      (obj .:? "AppSource") <*>
+      (obj .:? "Attributes") <*>
+      (obj .:? "DataSources") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Domains") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EnableSsl") <*>
+      (obj .:? "Environment") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Shortname") <*>
+      (obj .:? "SslConfiguration") <*>
+      (obj .: "StackId") <*>
+      (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksApp' containing required fields as arguments.
@@ -109,11 +110,11 @@
 owaDescription = lens _opsWorksAppDescription (\s a -> s { _opsWorksAppDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-domains
-owaDomains :: Lens' OpsWorksApp (Maybe [Val Text])
+owaDomains :: Lens' OpsWorksApp (Maybe (ValList Text))
 owaDomains = lens _opsWorksAppDomains (\s a -> s { _opsWorksAppDomains = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-enablessl
-owaEnableSsl :: Lens' OpsWorksApp (Maybe (Val Bool'))
+owaEnableSsl :: Lens' OpsWorksApp (Maybe (Val Bool))
 owaEnableSsl = lens _opsWorksAppEnableSsl (\s a -> s { _opsWorksAppEnableSsl = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-environment
diff --git a/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs b/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksElasticLoadBalancerAttachment.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html
 
@@ -27,15 +28,15 @@
   toJSON OpsWorksElasticLoadBalancerAttachment{..} =
     object $
     catMaybes
-    [ Just ("ElasticLoadBalancerName" .= _opsWorksElasticLoadBalancerAttachmentElasticLoadBalancerName)
-    , Just ("LayerId" .= _opsWorksElasticLoadBalancerAttachmentLayerId)
+    [ (Just . ("ElasticLoadBalancerName",) . toJSON) _opsWorksElasticLoadBalancerAttachmentElasticLoadBalancerName
+    , (Just . ("LayerId",) . toJSON) _opsWorksElasticLoadBalancerAttachmentLayerId
     ]
 
 instance FromJSON OpsWorksElasticLoadBalancerAttachment where
   parseJSON (Object obj) =
     OpsWorksElasticLoadBalancerAttachment <$>
-      obj .: "ElasticLoadBalancerName" <*>
-      obj .: "LayerId"
+      (obj .: "ElasticLoadBalancerName") <*>
+      (obj .: "LayerId")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksElasticLoadBalancerAttachment' containing
diff --git a/library-gen/Stratosphere/Resources/OpsWorksInstance.hs b/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html
 
@@ -25,12 +26,12 @@
   , _opsWorksInstanceAutoScalingType :: Maybe (Val Text)
   , _opsWorksInstanceAvailabilityZone :: Maybe (Val Text)
   , _opsWorksInstanceBlockDeviceMappings :: Maybe [OpsWorksInstanceBlockDeviceMapping]
-  , _opsWorksInstanceEbsOptimized :: Maybe (Val Bool')
-  , _opsWorksInstanceElasticIps :: Maybe [Val Text]
+  , _opsWorksInstanceEbsOptimized :: Maybe (Val Bool)
+  , _opsWorksInstanceElasticIps :: Maybe (ValList Text)
   , _opsWorksInstanceHostname :: Maybe (Val Text)
-  , _opsWorksInstanceInstallUpdatesOnBoot :: Maybe (Val Bool')
+  , _opsWorksInstanceInstallUpdatesOnBoot :: Maybe (Val Bool)
   , _opsWorksInstanceInstanceType :: Val Text
-  , _opsWorksInstanceLayerIds :: [Val Text]
+  , _opsWorksInstanceLayerIds :: ValList Text
   , _opsWorksInstanceOs :: Maybe (Val Text)
   , _opsWorksInstanceRootDeviceType :: Maybe (Val Text)
   , _opsWorksInstanceSshKeyName :: Maybe (Val Text)
@@ -39,67 +40,67 @@
   , _opsWorksInstanceTenancy :: Maybe (Val Text)
   , _opsWorksInstanceTimeBasedAutoScaling :: Maybe OpsWorksInstanceTimeBasedAutoScaling
   , _opsWorksInstanceVirtualizationType :: Maybe (Val Text)
-  , _opsWorksInstanceVolumes :: Maybe [Val Text]
+  , _opsWorksInstanceVolumes :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON OpsWorksInstance where
   toJSON OpsWorksInstance{..} =
     object $
     catMaybes
-    [ ("AgentVersion" .=) <$> _opsWorksInstanceAgentVersion
-    , ("AmiId" .=) <$> _opsWorksInstanceAmiId
-    , ("Architecture" .=) <$> _opsWorksInstanceArchitecture
-    , ("AutoScalingType" .=) <$> _opsWorksInstanceAutoScalingType
-    , ("AvailabilityZone" .=) <$> _opsWorksInstanceAvailabilityZone
-    , ("BlockDeviceMappings" .=) <$> _opsWorksInstanceBlockDeviceMappings
-    , ("EbsOptimized" .=) <$> _opsWorksInstanceEbsOptimized
-    , ("ElasticIps" .=) <$> _opsWorksInstanceElasticIps
-    , ("Hostname" .=) <$> _opsWorksInstanceHostname
-    , ("InstallUpdatesOnBoot" .=) <$> _opsWorksInstanceInstallUpdatesOnBoot
-    , Just ("InstanceType" .= _opsWorksInstanceInstanceType)
-    , Just ("LayerIds" .= _opsWorksInstanceLayerIds)
-    , ("Os" .=) <$> _opsWorksInstanceOs
-    , ("RootDeviceType" .=) <$> _opsWorksInstanceRootDeviceType
-    , ("SshKeyName" .=) <$> _opsWorksInstanceSshKeyName
-    , Just ("StackId" .= _opsWorksInstanceStackId)
-    , ("SubnetId" .=) <$> _opsWorksInstanceSubnetId
-    , ("Tenancy" .=) <$> _opsWorksInstanceTenancy
-    , ("TimeBasedAutoScaling" .=) <$> _opsWorksInstanceTimeBasedAutoScaling
-    , ("VirtualizationType" .=) <$> _opsWorksInstanceVirtualizationType
-    , ("Volumes" .=) <$> _opsWorksInstanceVolumes
+    [ fmap (("AgentVersion",) . toJSON) _opsWorksInstanceAgentVersion
+    , fmap (("AmiId",) . toJSON) _opsWorksInstanceAmiId
+    , fmap (("Architecture",) . toJSON) _opsWorksInstanceArchitecture
+    , fmap (("AutoScalingType",) . toJSON) _opsWorksInstanceAutoScalingType
+    , fmap (("AvailabilityZone",) . toJSON) _opsWorksInstanceAvailabilityZone
+    , fmap (("BlockDeviceMappings",) . toJSON) _opsWorksInstanceBlockDeviceMappings
+    , fmap (("EbsOptimized",) . toJSON . fmap Bool') _opsWorksInstanceEbsOptimized
+    , fmap (("ElasticIps",) . toJSON) _opsWorksInstanceElasticIps
+    , fmap (("Hostname",) . toJSON) _opsWorksInstanceHostname
+    , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksInstanceInstallUpdatesOnBoot
+    , (Just . ("InstanceType",) . toJSON) _opsWorksInstanceInstanceType
+    , (Just . ("LayerIds",) . toJSON) _opsWorksInstanceLayerIds
+    , fmap (("Os",) . toJSON) _opsWorksInstanceOs
+    , fmap (("RootDeviceType",) . toJSON) _opsWorksInstanceRootDeviceType
+    , fmap (("SshKeyName",) . toJSON) _opsWorksInstanceSshKeyName
+    , (Just . ("StackId",) . toJSON) _opsWorksInstanceStackId
+    , fmap (("SubnetId",) . toJSON) _opsWorksInstanceSubnetId
+    , fmap (("Tenancy",) . toJSON) _opsWorksInstanceTenancy
+    , fmap (("TimeBasedAutoScaling",) . toJSON) _opsWorksInstanceTimeBasedAutoScaling
+    , fmap (("VirtualizationType",) . toJSON) _opsWorksInstanceVirtualizationType
+    , fmap (("Volumes",) . toJSON) _opsWorksInstanceVolumes
     ]
 
 instance FromJSON OpsWorksInstance where
   parseJSON (Object obj) =
     OpsWorksInstance <$>
-      obj .:? "AgentVersion" <*>
-      obj .:? "AmiId" <*>
-      obj .:? "Architecture" <*>
-      obj .:? "AutoScalingType" <*>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "BlockDeviceMappings" <*>
-      obj .:? "EbsOptimized" <*>
-      obj .:? "ElasticIps" <*>
-      obj .:? "Hostname" <*>
-      obj .:? "InstallUpdatesOnBoot" <*>
-      obj .: "InstanceType" <*>
-      obj .: "LayerIds" <*>
-      obj .:? "Os" <*>
-      obj .:? "RootDeviceType" <*>
-      obj .:? "SshKeyName" <*>
-      obj .: "StackId" <*>
-      obj .:? "SubnetId" <*>
-      obj .:? "Tenancy" <*>
-      obj .:? "TimeBasedAutoScaling" <*>
-      obj .:? "VirtualizationType" <*>
-      obj .:? "Volumes"
+      (obj .:? "AgentVersion") <*>
+      (obj .:? "AmiId") <*>
+      (obj .:? "Architecture") <*>
+      (obj .:? "AutoScalingType") <*>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "BlockDeviceMappings") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized") <*>
+      (obj .:? "ElasticIps") <*>
+      (obj .:? "Hostname") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "InstallUpdatesOnBoot") <*>
+      (obj .: "InstanceType") <*>
+      (obj .: "LayerIds") <*>
+      (obj .:? "Os") <*>
+      (obj .:? "RootDeviceType") <*>
+      (obj .:? "SshKeyName") <*>
+      (obj .: "StackId") <*>
+      (obj .:? "SubnetId") <*>
+      (obj .:? "Tenancy") <*>
+      (obj .:? "TimeBasedAutoScaling") <*>
+      (obj .:? "VirtualizationType") <*>
+      (obj .:? "Volumes")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksInstance' containing required fields as
 -- arguments.
 opsWorksInstance
   :: Val Text -- ^ 'owiInstanceType'
-  -> [Val Text] -- ^ 'owiLayerIds'
+  -> ValList Text -- ^ 'owiLayerIds'
   -> Val Text -- ^ 'owiStackId'
   -> OpsWorksInstance
 opsWorksInstance instanceTypearg layerIdsarg stackIdarg =
@@ -152,11 +153,11 @@
 owiBlockDeviceMappings = lens _opsWorksInstanceBlockDeviceMappings (\s a -> s { _opsWorksInstanceBlockDeviceMappings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-ebsoptimized
-owiEbsOptimized :: Lens' OpsWorksInstance (Maybe (Val Bool'))
+owiEbsOptimized :: Lens' OpsWorksInstance (Maybe (Val Bool))
 owiEbsOptimized = lens _opsWorksInstanceEbsOptimized (\s a -> s { _opsWorksInstanceEbsOptimized = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-elasticips
-owiElasticIps :: Lens' OpsWorksInstance (Maybe [Val Text])
+owiElasticIps :: Lens' OpsWorksInstance (Maybe (ValList Text))
 owiElasticIps = lens _opsWorksInstanceElasticIps (\s a -> s { _opsWorksInstanceElasticIps = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-hostname
@@ -164,7 +165,7 @@
 owiHostname = lens _opsWorksInstanceHostname (\s a -> s { _opsWorksInstanceHostname = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-installupdatesonboot
-owiInstallUpdatesOnBoot :: Lens' OpsWorksInstance (Maybe (Val Bool'))
+owiInstallUpdatesOnBoot :: Lens' OpsWorksInstance (Maybe (Val Bool))
 owiInstallUpdatesOnBoot = lens _opsWorksInstanceInstallUpdatesOnBoot (\s a -> s { _opsWorksInstanceInstallUpdatesOnBoot = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-instancetype
@@ -172,7 +173,7 @@
 owiInstanceType = lens _opsWorksInstanceInstanceType (\s a -> s { _opsWorksInstanceInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-layerids
-owiLayerIds :: Lens' OpsWorksInstance [Val Text]
+owiLayerIds :: Lens' OpsWorksInstance (ValList Text)
 owiLayerIds = lens _opsWorksInstanceLayerIds (\s a -> s { _opsWorksInstanceLayerIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-os
@@ -208,5 +209,5 @@
 owiVirtualizationType = lens _opsWorksInstanceVirtualizationType (\s a -> s { _opsWorksInstanceVirtualizationType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-volumes
-owiVolumes :: Lens' OpsWorksInstance (Maybe [Val Text])
+owiVolumes :: Lens' OpsWorksInstance (Maybe (ValList Text))
 owiVolumes = lens _opsWorksInstanceVolumes (\s a -> s { _opsWorksInstanceVolumes = a })
diff --git a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html
 
@@ -22,22 +23,22 @@
 data OpsWorksLayer =
   OpsWorksLayer
   { _opsWorksLayerAttributes :: Maybe Object
-  , _opsWorksLayerAutoAssignElasticIps :: Val Bool'
-  , _opsWorksLayerAutoAssignPublicIps :: Val Bool'
+  , _opsWorksLayerAutoAssignElasticIps :: Val Bool
+  , _opsWorksLayerAutoAssignPublicIps :: Val Bool
   , _opsWorksLayerCustomInstanceProfileArn :: Maybe (Val Text)
   , _opsWorksLayerCustomJson :: Maybe Object
   , _opsWorksLayerCustomRecipes :: Maybe OpsWorksLayerRecipes
-  , _opsWorksLayerCustomSecurityGroupIds :: Maybe [Val Text]
-  , _opsWorksLayerEnableAutoHealing :: Val Bool'
-  , _opsWorksLayerInstallUpdatesOnBoot :: Maybe (Val Bool')
+  , _opsWorksLayerCustomSecurityGroupIds :: Maybe (ValList Text)
+  , _opsWorksLayerEnableAutoHealing :: Val Bool
+  , _opsWorksLayerInstallUpdatesOnBoot :: Maybe (Val Bool)
   , _opsWorksLayerLifecycleEventConfiguration :: Maybe OpsWorksLayerLifecycleEventConfiguration
   , _opsWorksLayerLoadBasedAutoScaling :: Maybe OpsWorksLayerLoadBasedAutoScaling
   , _opsWorksLayerName :: Val Text
-  , _opsWorksLayerPackages :: Maybe [Val Text]
+  , _opsWorksLayerPackages :: Maybe (ValList Text)
   , _opsWorksLayerShortname :: Val Text
   , _opsWorksLayerStackId :: Val Text
   , _opsWorksLayerType :: Val Text
-  , _opsWorksLayerUseEbsOptimizedInstances :: Maybe (Val Bool')
+  , _opsWorksLayerUseEbsOptimizedInstances :: Maybe (Val Bool)
   , _opsWorksLayerVolumeConfigurations :: Maybe [OpsWorksLayerVolumeConfiguration]
   } deriving (Show, Eq)
 
@@ -45,54 +46,54 @@
   toJSON OpsWorksLayer{..} =
     object $
     catMaybes
-    [ ("Attributes" .=) <$> _opsWorksLayerAttributes
-    , Just ("AutoAssignElasticIps" .= _opsWorksLayerAutoAssignElasticIps)
-    , Just ("AutoAssignPublicIps" .= _opsWorksLayerAutoAssignPublicIps)
-    , ("CustomInstanceProfileArn" .=) <$> _opsWorksLayerCustomInstanceProfileArn
-    , ("CustomJson" .=) <$> _opsWorksLayerCustomJson
-    , ("CustomRecipes" .=) <$> _opsWorksLayerCustomRecipes
-    , ("CustomSecurityGroupIds" .=) <$> _opsWorksLayerCustomSecurityGroupIds
-    , Just ("EnableAutoHealing" .= _opsWorksLayerEnableAutoHealing)
-    , ("InstallUpdatesOnBoot" .=) <$> _opsWorksLayerInstallUpdatesOnBoot
-    , ("LifecycleEventConfiguration" .=) <$> _opsWorksLayerLifecycleEventConfiguration
-    , ("LoadBasedAutoScaling" .=) <$> _opsWorksLayerLoadBasedAutoScaling
-    , Just ("Name" .= _opsWorksLayerName)
-    , ("Packages" .=) <$> _opsWorksLayerPackages
-    , Just ("Shortname" .= _opsWorksLayerShortname)
-    , Just ("StackId" .= _opsWorksLayerStackId)
-    , Just ("Type" .= _opsWorksLayerType)
-    , ("UseEbsOptimizedInstances" .=) <$> _opsWorksLayerUseEbsOptimizedInstances
-    , ("VolumeConfigurations" .=) <$> _opsWorksLayerVolumeConfigurations
+    [ fmap (("Attributes",) . toJSON) _opsWorksLayerAttributes
+    , (Just . ("AutoAssignElasticIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignElasticIps
+    , (Just . ("AutoAssignPublicIps",) . toJSON . fmap Bool') _opsWorksLayerAutoAssignPublicIps
+    , fmap (("CustomInstanceProfileArn",) . toJSON) _opsWorksLayerCustomInstanceProfileArn
+    , fmap (("CustomJson",) . toJSON) _opsWorksLayerCustomJson
+    , fmap (("CustomRecipes",) . toJSON) _opsWorksLayerCustomRecipes
+    , fmap (("CustomSecurityGroupIds",) . toJSON) _opsWorksLayerCustomSecurityGroupIds
+    , (Just . ("EnableAutoHealing",) . toJSON . fmap Bool') _opsWorksLayerEnableAutoHealing
+    , fmap (("InstallUpdatesOnBoot",) . toJSON . fmap Bool') _opsWorksLayerInstallUpdatesOnBoot
+    , fmap (("LifecycleEventConfiguration",) . toJSON) _opsWorksLayerLifecycleEventConfiguration
+    , fmap (("LoadBasedAutoScaling",) . toJSON) _opsWorksLayerLoadBasedAutoScaling
+    , (Just . ("Name",) . toJSON) _opsWorksLayerName
+    , fmap (("Packages",) . toJSON) _opsWorksLayerPackages
+    , (Just . ("Shortname",) . toJSON) _opsWorksLayerShortname
+    , (Just . ("StackId",) . toJSON) _opsWorksLayerStackId
+    , (Just . ("Type",) . toJSON) _opsWorksLayerType
+    , fmap (("UseEbsOptimizedInstances",) . toJSON . fmap Bool') _opsWorksLayerUseEbsOptimizedInstances
+    , fmap (("VolumeConfigurations",) . toJSON) _opsWorksLayerVolumeConfigurations
     ]
 
 instance FromJSON OpsWorksLayer where
   parseJSON (Object obj) =
     OpsWorksLayer <$>
-      obj .:? "Attributes" <*>
-      obj .: "AutoAssignElasticIps" <*>
-      obj .: "AutoAssignPublicIps" <*>
-      obj .:? "CustomInstanceProfileArn" <*>
-      obj .:? "CustomJson" <*>
-      obj .:? "CustomRecipes" <*>
-      obj .:? "CustomSecurityGroupIds" <*>
-      obj .: "EnableAutoHealing" <*>
-      obj .:? "InstallUpdatesOnBoot" <*>
-      obj .:? "LifecycleEventConfiguration" <*>
-      obj .:? "LoadBasedAutoScaling" <*>
-      obj .: "Name" <*>
-      obj .:? "Packages" <*>
-      obj .: "Shortname" <*>
-      obj .: "StackId" <*>
-      obj .: "Type" <*>
-      obj .:? "UseEbsOptimizedInstances" <*>
-      obj .:? "VolumeConfigurations"
+      (obj .:? "Attributes") <*>
+      fmap (fmap unBool') (obj .: "AutoAssignElasticIps") <*>
+      fmap (fmap unBool') (obj .: "AutoAssignPublicIps") <*>
+      (obj .:? "CustomInstanceProfileArn") <*>
+      (obj .:? "CustomJson") <*>
+      (obj .:? "CustomRecipes") <*>
+      (obj .:? "CustomSecurityGroupIds") <*>
+      fmap (fmap unBool') (obj .: "EnableAutoHealing") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "InstallUpdatesOnBoot") <*>
+      (obj .:? "LifecycleEventConfiguration") <*>
+      (obj .:? "LoadBasedAutoScaling") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Packages") <*>
+      (obj .: "Shortname") <*>
+      (obj .: "StackId") <*>
+      (obj .: "Type") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseEbsOptimizedInstances") <*>
+      (obj .:? "VolumeConfigurations")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksLayer' containing required fields as arguments.
 opsWorksLayer
-  :: Val Bool' -- ^ 'owlAutoAssignElasticIps'
-  -> Val Bool' -- ^ 'owlAutoAssignPublicIps'
-  -> Val Bool' -- ^ 'owlEnableAutoHealing'
+  :: Val Bool -- ^ 'owlAutoAssignElasticIps'
+  -> Val Bool -- ^ 'owlAutoAssignPublicIps'
+  -> Val Bool -- ^ 'owlEnableAutoHealing'
   -> Val Text -- ^ 'owlName'
   -> Val Text -- ^ 'owlShortname'
   -> Val Text -- ^ 'owlStackId'
@@ -125,11 +126,11 @@
 owlAttributes = lens _opsWorksLayerAttributes (\s a -> s { _opsWorksLayerAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-autoassignelasticips
-owlAutoAssignElasticIps :: Lens' OpsWorksLayer (Val Bool')
+owlAutoAssignElasticIps :: Lens' OpsWorksLayer (Val Bool)
 owlAutoAssignElasticIps = lens _opsWorksLayerAutoAssignElasticIps (\s a -> s { _opsWorksLayerAutoAssignElasticIps = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-autoassignpublicips
-owlAutoAssignPublicIps :: Lens' OpsWorksLayer (Val Bool')
+owlAutoAssignPublicIps :: Lens' OpsWorksLayer (Val Bool)
 owlAutoAssignPublicIps = lens _opsWorksLayerAutoAssignPublicIps (\s a -> s { _opsWorksLayerAutoAssignPublicIps = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-custominstanceprofilearn
@@ -145,15 +146,15 @@
 owlCustomRecipes = lens _opsWorksLayerCustomRecipes (\s a -> s { _opsWorksLayerCustomRecipes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-customsecuritygroupids
-owlCustomSecurityGroupIds :: Lens' OpsWorksLayer (Maybe [Val Text])
+owlCustomSecurityGroupIds :: Lens' OpsWorksLayer (Maybe (ValList Text))
 owlCustomSecurityGroupIds = lens _opsWorksLayerCustomSecurityGroupIds (\s a -> s { _opsWorksLayerCustomSecurityGroupIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-enableautohealing
-owlEnableAutoHealing :: Lens' OpsWorksLayer (Val Bool')
+owlEnableAutoHealing :: Lens' OpsWorksLayer (Val Bool)
 owlEnableAutoHealing = lens _opsWorksLayerEnableAutoHealing (\s a -> s { _opsWorksLayerEnableAutoHealing = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-installupdatesonboot
-owlInstallUpdatesOnBoot :: Lens' OpsWorksLayer (Maybe (Val Bool'))
+owlInstallUpdatesOnBoot :: Lens' OpsWorksLayer (Maybe (Val Bool))
 owlInstallUpdatesOnBoot = lens _opsWorksLayerInstallUpdatesOnBoot (\s a -> s { _opsWorksLayerInstallUpdatesOnBoot = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-lifecycleeventconfiguration
@@ -169,7 +170,7 @@
 owlName = lens _opsWorksLayerName (\s a -> s { _opsWorksLayerName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-packages
-owlPackages :: Lens' OpsWorksLayer (Maybe [Val Text])
+owlPackages :: Lens' OpsWorksLayer (Maybe (ValList Text))
 owlPackages = lens _opsWorksLayerPackages (\s a -> s { _opsWorksLayerPackages = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-shortname
@@ -185,7 +186,7 @@
 owlType = lens _opsWorksLayerType (\s a -> s { _opsWorksLayerType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-useebsoptimizedinstances
-owlUseEbsOptimizedInstances :: Lens' OpsWorksLayer (Maybe (Val Bool'))
+owlUseEbsOptimizedInstances :: Lens' OpsWorksLayer (Maybe (Val Bool))
 owlUseEbsOptimizedInstances = lens _opsWorksLayerUseEbsOptimizedInstances (\s a -> s { _opsWorksLayerUseEbsOptimizedInstances = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-volumeconfigurations
diff --git a/library-gen/Stratosphere/Resources/OpsWorksStack.hs b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksStack.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html
 
@@ -25,8 +26,8 @@
   { _opsWorksStackAgentVersion :: Maybe (Val Text)
   , _opsWorksStackAttributes :: Maybe Object
   , _opsWorksStackChefConfiguration :: Maybe OpsWorksStackChefConfiguration
-  , _opsWorksStackCloneAppIds :: Maybe [Val Text]
-  , _opsWorksStackClonePermissions :: Maybe (Val Bool')
+  , _opsWorksStackCloneAppIds :: Maybe (ValList Text)
+  , _opsWorksStackClonePermissions :: Maybe (Val Bool)
   , _opsWorksStackConfigurationManager :: Maybe OpsWorksStackStackConfigurationManager
   , _opsWorksStackCustomCookbooksSource :: Maybe OpsWorksStackSource
   , _opsWorksStackCustomJson :: Maybe Object
@@ -43,8 +44,8 @@
   , _opsWorksStackRdsDbInstances :: Maybe [OpsWorksStackRdsDbInstance]
   , _opsWorksStackServiceRoleArn :: Val Text
   , _opsWorksStackSourceStackId :: Maybe (Val Text)
-  , _opsWorksStackUseCustomCookbooks :: Maybe (Val Bool')
-  , _opsWorksStackUseOpsworksSecurityGroups :: Maybe (Val Bool')
+  , _opsWorksStackUseCustomCookbooks :: Maybe (Val Bool)
+  , _opsWorksStackUseOpsworksSecurityGroups :: Maybe (Val Bool)
   , _opsWorksStackVpcId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -52,59 +53,59 @@
   toJSON OpsWorksStack{..} =
     object $
     catMaybes
-    [ ("AgentVersion" .=) <$> _opsWorksStackAgentVersion
-    , ("Attributes" .=) <$> _opsWorksStackAttributes
-    , ("ChefConfiguration" .=) <$> _opsWorksStackChefConfiguration
-    , ("CloneAppIds" .=) <$> _opsWorksStackCloneAppIds
-    , ("ClonePermissions" .=) <$> _opsWorksStackClonePermissions
-    , ("ConfigurationManager" .=) <$> _opsWorksStackConfigurationManager
-    , ("CustomCookbooksSource" .=) <$> _opsWorksStackCustomCookbooksSource
-    , ("CustomJson" .=) <$> _opsWorksStackCustomJson
-    , ("DefaultAvailabilityZone" .=) <$> _opsWorksStackDefaultAvailabilityZone
-    , Just ("DefaultInstanceProfileArn" .= _opsWorksStackDefaultInstanceProfileArn)
-    , ("DefaultOs" .=) <$> _opsWorksStackDefaultOs
-    , ("DefaultRootDeviceType" .=) <$> _opsWorksStackDefaultRootDeviceType
-    , ("DefaultSshKeyName" .=) <$> _opsWorksStackDefaultSshKeyName
-    , ("DefaultSubnetId" .=) <$> _opsWorksStackDefaultSubnetId
-    , ("EcsClusterArn" .=) <$> _opsWorksStackEcsClusterArn
-    , ("ElasticIps" .=) <$> _opsWorksStackElasticIps
-    , ("HostnameTheme" .=) <$> _opsWorksStackHostnameTheme
-    , Just ("Name" .= _opsWorksStackName)
-    , ("RdsDbInstances" .=) <$> _opsWorksStackRdsDbInstances
-    , Just ("ServiceRoleArn" .= _opsWorksStackServiceRoleArn)
-    , ("SourceStackId" .=) <$> _opsWorksStackSourceStackId
-    , ("UseCustomCookbooks" .=) <$> _opsWorksStackUseCustomCookbooks
-    , ("UseOpsworksSecurityGroups" .=) <$> _opsWorksStackUseOpsworksSecurityGroups
-    , ("VpcId" .=) <$> _opsWorksStackVpcId
+    [ fmap (("AgentVersion",) . toJSON) _opsWorksStackAgentVersion
+    , fmap (("Attributes",) . toJSON) _opsWorksStackAttributes
+    , fmap (("ChefConfiguration",) . toJSON) _opsWorksStackChefConfiguration
+    , fmap (("CloneAppIds",) . toJSON) _opsWorksStackCloneAppIds
+    , fmap (("ClonePermissions",) . toJSON . fmap Bool') _opsWorksStackClonePermissions
+    , fmap (("ConfigurationManager",) . toJSON) _opsWorksStackConfigurationManager
+    , fmap (("CustomCookbooksSource",) . toJSON) _opsWorksStackCustomCookbooksSource
+    , fmap (("CustomJson",) . toJSON) _opsWorksStackCustomJson
+    , fmap (("DefaultAvailabilityZone",) . toJSON) _opsWorksStackDefaultAvailabilityZone
+    , (Just . ("DefaultInstanceProfileArn",) . toJSON) _opsWorksStackDefaultInstanceProfileArn
+    , fmap (("DefaultOs",) . toJSON) _opsWorksStackDefaultOs
+    , fmap (("DefaultRootDeviceType",) . toJSON) _opsWorksStackDefaultRootDeviceType
+    , fmap (("DefaultSshKeyName",) . toJSON) _opsWorksStackDefaultSshKeyName
+    , fmap (("DefaultSubnetId",) . toJSON) _opsWorksStackDefaultSubnetId
+    , fmap (("EcsClusterArn",) . toJSON) _opsWorksStackEcsClusterArn
+    , fmap (("ElasticIps",) . toJSON) _opsWorksStackElasticIps
+    , fmap (("HostnameTheme",) . toJSON) _opsWorksStackHostnameTheme
+    , (Just . ("Name",) . toJSON) _opsWorksStackName
+    , fmap (("RdsDbInstances",) . toJSON) _opsWorksStackRdsDbInstances
+    , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksStackServiceRoleArn
+    , fmap (("SourceStackId",) . toJSON) _opsWorksStackSourceStackId
+    , fmap (("UseCustomCookbooks",) . toJSON . fmap Bool') _opsWorksStackUseCustomCookbooks
+    , fmap (("UseOpsworksSecurityGroups",) . toJSON . fmap Bool') _opsWorksStackUseOpsworksSecurityGroups
+    , fmap (("VpcId",) . toJSON) _opsWorksStackVpcId
     ]
 
 instance FromJSON OpsWorksStack where
   parseJSON (Object obj) =
     OpsWorksStack <$>
-      obj .:? "AgentVersion" <*>
-      obj .:? "Attributes" <*>
-      obj .:? "ChefConfiguration" <*>
-      obj .:? "CloneAppIds" <*>
-      obj .:? "ClonePermissions" <*>
-      obj .:? "ConfigurationManager" <*>
-      obj .:? "CustomCookbooksSource" <*>
-      obj .:? "CustomJson" <*>
-      obj .:? "DefaultAvailabilityZone" <*>
-      obj .: "DefaultInstanceProfileArn" <*>
-      obj .:? "DefaultOs" <*>
-      obj .:? "DefaultRootDeviceType" <*>
-      obj .:? "DefaultSshKeyName" <*>
-      obj .:? "DefaultSubnetId" <*>
-      obj .:? "EcsClusterArn" <*>
-      obj .:? "ElasticIps" <*>
-      obj .:? "HostnameTheme" <*>
-      obj .: "Name" <*>
-      obj .:? "RdsDbInstances" <*>
-      obj .: "ServiceRoleArn" <*>
-      obj .:? "SourceStackId" <*>
-      obj .:? "UseCustomCookbooks" <*>
-      obj .:? "UseOpsworksSecurityGroups" <*>
-      obj .:? "VpcId"
+      (obj .:? "AgentVersion") <*>
+      (obj .:? "Attributes") <*>
+      (obj .:? "ChefConfiguration") <*>
+      (obj .:? "CloneAppIds") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ClonePermissions") <*>
+      (obj .:? "ConfigurationManager") <*>
+      (obj .:? "CustomCookbooksSource") <*>
+      (obj .:? "CustomJson") <*>
+      (obj .:? "DefaultAvailabilityZone") <*>
+      (obj .: "DefaultInstanceProfileArn") <*>
+      (obj .:? "DefaultOs") <*>
+      (obj .:? "DefaultRootDeviceType") <*>
+      (obj .:? "DefaultSshKeyName") <*>
+      (obj .:? "DefaultSubnetId") <*>
+      (obj .:? "EcsClusterArn") <*>
+      (obj .:? "ElasticIps") <*>
+      (obj .:? "HostnameTheme") <*>
+      (obj .: "Name") <*>
+      (obj .:? "RdsDbInstances") <*>
+      (obj .: "ServiceRoleArn") <*>
+      (obj .:? "SourceStackId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseCustomCookbooks") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseOpsworksSecurityGroups") <*>
+      (obj .:? "VpcId")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksStack' containing required fields as arguments.
@@ -154,11 +155,11 @@
 owsChefConfiguration = lens _opsWorksStackChefConfiguration (\s a -> s { _opsWorksStackChefConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-cloneappids
-owsCloneAppIds :: Lens' OpsWorksStack (Maybe [Val Text])
+owsCloneAppIds :: Lens' OpsWorksStack (Maybe (ValList Text))
 owsCloneAppIds = lens _opsWorksStackCloneAppIds (\s a -> s { _opsWorksStackCloneAppIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-clonepermissions
-owsClonePermissions :: Lens' OpsWorksStack (Maybe (Val Bool'))
+owsClonePermissions :: Lens' OpsWorksStack (Maybe (Val Bool))
 owsClonePermissions = lens _opsWorksStackClonePermissions (\s a -> s { _opsWorksStackClonePermissions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-configmanager
@@ -226,11 +227,11 @@
 owsSourceStackId = lens _opsWorksStackSourceStackId (\s a -> s { _opsWorksStackSourceStackId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#usecustcookbooks
-owsUseCustomCookbooks :: Lens' OpsWorksStack (Maybe (Val Bool'))
+owsUseCustomCookbooks :: Lens' OpsWorksStack (Maybe (Val Bool))
 owsUseCustomCookbooks = lens _opsWorksStackUseCustomCookbooks (\s a -> s { _opsWorksStackUseCustomCookbooks = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-useopsworkssecuritygroups
-owsUseOpsworksSecurityGroups :: Lens' OpsWorksStack (Maybe (Val Bool'))
+owsUseOpsworksSecurityGroups :: Lens' OpsWorksStack (Maybe (Val Bool))
 owsUseOpsworksSecurityGroups = lens _opsWorksStackUseOpsworksSecurityGroups (\s a -> s { _opsWorksStackUseOpsworksSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-vpcid
diff --git a/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs b/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksUserProfile.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html
 
@@ -18,7 +19,7 @@
 -- 'opsWorksUserProfile' for a more convenient constructor.
 data OpsWorksUserProfile =
   OpsWorksUserProfile
-  { _opsWorksUserProfileAllowSelfManagement :: Maybe (Val Bool')
+  { _opsWorksUserProfileAllowSelfManagement :: Maybe (Val Bool)
   , _opsWorksUserProfileIamUserArn :: Val Text
   , _opsWorksUserProfileSshPublicKey :: Maybe (Val Text)
   , _opsWorksUserProfileSshUsername :: Maybe (Val Text)
@@ -28,19 +29,19 @@
   toJSON OpsWorksUserProfile{..} =
     object $
     catMaybes
-    [ ("AllowSelfManagement" .=) <$> _opsWorksUserProfileAllowSelfManagement
-    , Just ("IamUserArn" .= _opsWorksUserProfileIamUserArn)
-    , ("SshPublicKey" .=) <$> _opsWorksUserProfileSshPublicKey
-    , ("SshUsername" .=) <$> _opsWorksUserProfileSshUsername
+    [ fmap (("AllowSelfManagement",) . toJSON . fmap Bool') _opsWorksUserProfileAllowSelfManagement
+    , (Just . ("IamUserArn",) . toJSON) _opsWorksUserProfileIamUserArn
+    , fmap (("SshPublicKey",) . toJSON) _opsWorksUserProfileSshPublicKey
+    , fmap (("SshUsername",) . toJSON) _opsWorksUserProfileSshUsername
     ]
 
 instance FromJSON OpsWorksUserProfile where
   parseJSON (Object obj) =
     OpsWorksUserProfile <$>
-      obj .:? "AllowSelfManagement" <*>
-      obj .: "IamUserArn" <*>
-      obj .:? "SshPublicKey" <*>
-      obj .:? "SshUsername"
+      fmap (fmap (fmap unBool')) (obj .:? "AllowSelfManagement") <*>
+      (obj .: "IamUserArn") <*>
+      (obj .:? "SshPublicKey") <*>
+      (obj .:? "SshUsername")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksUserProfile' containing required fields as
@@ -57,7 +58,7 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-allowselfmanagement
-owupAllowSelfManagement :: Lens' OpsWorksUserProfile (Maybe (Val Bool'))
+owupAllowSelfManagement :: Lens' OpsWorksUserProfile (Maybe (Val Bool))
 owupAllowSelfManagement = lens _opsWorksUserProfileAllowSelfManagement (\s a -> s { _opsWorksUserProfileAllowSelfManagement = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-iamuserarn
diff --git a/library-gen/Stratosphere/Resources/OpsWorksVolume.hs b/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksVolume.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html
 
@@ -28,19 +29,19 @@
   toJSON OpsWorksVolume{..} =
     object $
     catMaybes
-    [ Just ("Ec2VolumeId" .= _opsWorksVolumeEc2VolumeId)
-    , ("MountPoint" .=) <$> _opsWorksVolumeMountPoint
-    , ("Name" .=) <$> _opsWorksVolumeName
-    , Just ("StackId" .= _opsWorksVolumeStackId)
+    [ (Just . ("Ec2VolumeId",) . toJSON) _opsWorksVolumeEc2VolumeId
+    , fmap (("MountPoint",) . toJSON) _opsWorksVolumeMountPoint
+    , fmap (("Name",) . toJSON) _opsWorksVolumeName
+    , (Just . ("StackId",) . toJSON) _opsWorksVolumeStackId
     ]
 
 instance FromJSON OpsWorksVolume where
   parseJSON (Object obj) =
     OpsWorksVolume <$>
-      obj .: "Ec2VolumeId" <*>
-      obj .:? "MountPoint" <*>
-      obj .:? "Name" <*>
-      obj .: "StackId"
+      (obj .: "Ec2VolumeId") <*>
+      (obj .:? "MountPoint") <*>
+      (obj .:? "Name") <*>
+      (obj .: "StackId")
   parseJSON _ = mempty
 
 -- | Constructor for 'OpsWorksVolume' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RDSDBCluster.hs b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
--- a/library-gen/Stratosphere/Resources/RDSDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html
 
@@ -19,7 +20,7 @@
 data RDSDBCluster =
   RDSDBCluster
   { _rDSDBClusterAvailabilityZones :: Maybe (Val Text)
-  , _rDSDBClusterBackupRetentionPeriod :: Maybe (Val Integer')
+  , _rDSDBClusterBackupRetentionPeriod :: Maybe (Val Integer)
   , _rDSDBClusterDBClusterParameterGroupName :: Maybe (Val Text)
   , _rDSDBClusterDBSubnetGroupName :: Maybe (Val Text)
   , _rDSDBClusterDatabaseName :: Maybe (Val Text)
@@ -28,61 +29,61 @@
   , _rDSDBClusterKmsKeyId :: Maybe (Val Text)
   , _rDSDBClusterMasterUserPassword :: Maybe (Val Text)
   , _rDSDBClusterMasterUsername :: Maybe (Val Text)
-  , _rDSDBClusterPort :: Maybe (Val Integer')
+  , _rDSDBClusterPort :: Maybe (Val Integer)
   , _rDSDBClusterPreferredBackupWindow :: Maybe (Val Text)
   , _rDSDBClusterPreferredMaintenanceWindow :: Maybe (Val Text)
   , _rDSDBClusterReplicationSourceIdentifier :: Maybe (Val Text)
   , _rDSDBClusterSnapshotIdentifier :: Maybe (Val Text)
-  , _rDSDBClusterStorageEncrypted :: Maybe (Val Bool')
+  , _rDSDBClusterStorageEncrypted :: Maybe (Val Bool)
   , _rDSDBClusterTags :: Maybe [Tag]
-  , _rDSDBClusterVpcSecurityGroupIds :: Maybe [Val Text]
+  , _rDSDBClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON RDSDBCluster where
   toJSON RDSDBCluster{..} =
     object $
     catMaybes
-    [ ("AvailabilityZones" .=) <$> _rDSDBClusterAvailabilityZones
-    , ("BackupRetentionPeriod" .=) <$> _rDSDBClusterBackupRetentionPeriod
-    , ("DBClusterParameterGroupName" .=) <$> _rDSDBClusterDBClusterParameterGroupName
-    , ("DBSubnetGroupName" .=) <$> _rDSDBClusterDBSubnetGroupName
-    , ("DatabaseName" .=) <$> _rDSDBClusterDatabaseName
-    , Just ("Engine" .= _rDSDBClusterEngine)
-    , ("EngineVersion" .=) <$> _rDSDBClusterEngineVersion
-    , ("KmsKeyId" .=) <$> _rDSDBClusterKmsKeyId
-    , ("MasterUserPassword" .=) <$> _rDSDBClusterMasterUserPassword
-    , ("MasterUsername" .=) <$> _rDSDBClusterMasterUsername
-    , ("Port" .=) <$> _rDSDBClusterPort
-    , ("PreferredBackupWindow" .=) <$> _rDSDBClusterPreferredBackupWindow
-    , ("PreferredMaintenanceWindow" .=) <$> _rDSDBClusterPreferredMaintenanceWindow
-    , ("ReplicationSourceIdentifier" .=) <$> _rDSDBClusterReplicationSourceIdentifier
-    , ("SnapshotIdentifier" .=) <$> _rDSDBClusterSnapshotIdentifier
-    , ("StorageEncrypted" .=) <$> _rDSDBClusterStorageEncrypted
-    , ("Tags" .=) <$> _rDSDBClusterTags
-    , ("VpcSecurityGroupIds" .=) <$> _rDSDBClusterVpcSecurityGroupIds
+    [ fmap (("AvailabilityZones",) . toJSON) _rDSDBClusterAvailabilityZones
+    , fmap (("BackupRetentionPeriod",) . toJSON . fmap Integer') _rDSDBClusterBackupRetentionPeriod
+    , fmap (("DBClusterParameterGroupName",) . toJSON) _rDSDBClusterDBClusterParameterGroupName
+    , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBClusterDBSubnetGroupName
+    , fmap (("DatabaseName",) . toJSON) _rDSDBClusterDatabaseName
+    , (Just . ("Engine",) . toJSON) _rDSDBClusterEngine
+    , fmap (("EngineVersion",) . toJSON) _rDSDBClusterEngineVersion
+    , fmap (("KmsKeyId",) . toJSON) _rDSDBClusterKmsKeyId
+    , fmap (("MasterUserPassword",) . toJSON) _rDSDBClusterMasterUserPassword
+    , fmap (("MasterUsername",) . toJSON) _rDSDBClusterMasterUsername
+    , fmap (("Port",) . toJSON . fmap Integer') _rDSDBClusterPort
+    , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBClusterPreferredBackupWindow
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBClusterPreferredMaintenanceWindow
+    , fmap (("ReplicationSourceIdentifier",) . toJSON) _rDSDBClusterReplicationSourceIdentifier
+    , fmap (("SnapshotIdentifier",) . toJSON) _rDSDBClusterSnapshotIdentifier
+    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBClusterStorageEncrypted
+    , fmap (("Tags",) . toJSON) _rDSDBClusterTags
+    , fmap (("VpcSecurityGroupIds",) . toJSON) _rDSDBClusterVpcSecurityGroupIds
     ]
 
 instance FromJSON RDSDBCluster where
   parseJSON (Object obj) =
     RDSDBCluster <$>
-      obj .:? "AvailabilityZones" <*>
-      obj .:? "BackupRetentionPeriod" <*>
-      obj .:? "DBClusterParameterGroupName" <*>
-      obj .:? "DBSubnetGroupName" <*>
-      obj .:? "DatabaseName" <*>
-      obj .: "Engine" <*>
-      obj .:? "EngineVersion" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "MasterUserPassword" <*>
-      obj .:? "MasterUsername" <*>
-      obj .:? "Port" <*>
-      obj .:? "PreferredBackupWindow" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "ReplicationSourceIdentifier" <*>
-      obj .:? "SnapshotIdentifier" <*>
-      obj .:? "StorageEncrypted" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VpcSecurityGroupIds"
+      (obj .:? "AvailabilityZones") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "BackupRetentionPeriod") <*>
+      (obj .:? "DBClusterParameterGroupName") <*>
+      (obj .:? "DBSubnetGroupName") <*>
+      (obj .:? "DatabaseName") <*>
+      (obj .: "Engine") <*>
+      (obj .:? "EngineVersion") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .:? "MasterUserPassword") <*>
+      (obj .:? "MasterUsername") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "PreferredBackupWindow") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      (obj .:? "ReplicationSourceIdentifier") <*>
+      (obj .:? "SnapshotIdentifier") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "StorageEncrypted") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcSecurityGroupIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBCluster' containing required fields as arguments.
@@ -116,7 +117,7 @@
 rdsdbcAvailabilityZones = lens _rDSDBClusterAvailabilityZones (\s a -> s { _rDSDBClusterAvailabilityZones = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-backuprententionperiod
-rdsdbcBackupRetentionPeriod :: Lens' RDSDBCluster (Maybe (Val Integer'))
+rdsdbcBackupRetentionPeriod :: Lens' RDSDBCluster (Maybe (Val Integer))
 rdsdbcBackupRetentionPeriod = lens _rDSDBClusterBackupRetentionPeriod (\s a -> s { _rDSDBClusterBackupRetentionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbclusterparametergroupname
@@ -152,7 +153,7 @@
 rdsdbcMasterUsername = lens _rDSDBClusterMasterUsername (\s a -> s { _rDSDBClusterMasterUsername = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-port
-rdsdbcPort :: Lens' RDSDBCluster (Maybe (Val Integer'))
+rdsdbcPort :: Lens' RDSDBCluster (Maybe (Val Integer))
 rdsdbcPort = lens _rDSDBClusterPort (\s a -> s { _rDSDBClusterPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-preferredbackupwindow
@@ -172,7 +173,7 @@
 rdsdbcSnapshotIdentifier = lens _rDSDBClusterSnapshotIdentifier (\s a -> s { _rDSDBClusterSnapshotIdentifier = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-storageencrypted
-rdsdbcStorageEncrypted :: Lens' RDSDBCluster (Maybe (Val Bool'))
+rdsdbcStorageEncrypted :: Lens' RDSDBCluster (Maybe (Val Bool))
 rdsdbcStorageEncrypted = lens _rDSDBClusterStorageEncrypted (\s a -> s { _rDSDBClusterStorageEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-tags
@@ -180,5 +181,5 @@
 rdsdbcTags = lens _rDSDBClusterTags (\s a -> s { _rDSDBClusterTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-vpcsecuritygroupids
-rdsdbcVpcSecurityGroupIds :: Lens' RDSDBCluster (Maybe [Val Text])
+rdsdbcVpcSecurityGroupIds :: Lens' RDSDBCluster (Maybe (ValList Text))
 rdsdbcVpcSecurityGroupIds = lens _rDSDBClusterVpcSecurityGroupIds (\s a -> s { _rDSDBClusterVpcSecurityGroupIds = a })
diff --git a/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html
 
@@ -28,19 +29,19 @@
   toJSON RDSDBClusterParameterGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _rDSDBClusterParameterGroupDescription)
-    , Just ("Family" .= _rDSDBClusterParameterGroupFamily)
-    , Just ("Parameters" .= _rDSDBClusterParameterGroupParameters)
-    , ("Tags" .=) <$> _rDSDBClusterParameterGroupTags
+    [ (Just . ("Description",) . toJSON) _rDSDBClusterParameterGroupDescription
+    , (Just . ("Family",) . toJSON) _rDSDBClusterParameterGroupFamily
+    , (Just . ("Parameters",) . toJSON) _rDSDBClusterParameterGroupParameters
+    , fmap (("Tags",) . toJSON) _rDSDBClusterParameterGroupTags
     ]
 
 instance FromJSON RDSDBClusterParameterGroup where
   parseJSON (Object obj) =
     RDSDBClusterParameterGroup <$>
-      obj .: "Description" <*>
-      obj .: "Family" <*>
-      obj .: "Parameters" <*>
-      obj .:? "Tags"
+      (obj .: "Description") <*>
+      (obj .: "Family") <*>
+      (obj .: "Parameters") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBClusterParameterGroup' containing required fields
diff --git a/library-gen/Stratosphere/Resources/RDSDBInstance.hs b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
--- a/library-gen/Stratosphere/Resources/RDSDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html
 
@@ -19,130 +20,130 @@
 data RDSDBInstance =
   RDSDBInstance
   { _rDSDBInstanceAllocatedStorage :: Maybe (Val Text)
-  , _rDSDBInstanceAllowMajorVersionUpgrade :: Maybe (Val Bool')
-  , _rDSDBInstanceAutoMinorVersionUpgrade :: Maybe (Val Bool')
+  , _rDSDBInstanceAllowMajorVersionUpgrade :: Maybe (Val Bool)
+  , _rDSDBInstanceAutoMinorVersionUpgrade :: Maybe (Val Bool)
   , _rDSDBInstanceAvailabilityZone :: Maybe (Val Text)
   , _rDSDBInstanceBackupRetentionPeriod :: Maybe (Val Text)
   , _rDSDBInstanceCharacterSetName :: Maybe (Val Text)
-  , _rDSDBInstanceCopyTagsToSnapshot :: Maybe (Val Bool')
+  , _rDSDBInstanceCopyTagsToSnapshot :: Maybe (Val Bool)
   , _rDSDBInstanceDBClusterIdentifier :: Maybe (Val Text)
   , _rDSDBInstanceDBInstanceClass :: Val Text
   , _rDSDBInstanceDBInstanceIdentifier :: Maybe (Val Text)
   , _rDSDBInstanceDBName :: Maybe (Val Text)
   , _rDSDBInstanceDBParameterGroupName :: Maybe (Val Text)
-  , _rDSDBInstanceDBSecurityGroups :: Maybe [Val Text]
+  , _rDSDBInstanceDBSecurityGroups :: Maybe (ValList Text)
   , _rDSDBInstanceDBSnapshotIdentifier :: Maybe (Val Text)
   , _rDSDBInstanceDBSubnetGroupName :: Maybe (Val Text)
   , _rDSDBInstanceDomain :: Maybe (Val Text)
   , _rDSDBInstanceDomainIAMRoleName :: Maybe (Val Text)
   , _rDSDBInstanceEngine :: Maybe (Val Text)
   , _rDSDBInstanceEngineVersion :: Maybe (Val Text)
-  , _rDSDBInstanceIops :: Maybe (Val Integer')
+  , _rDSDBInstanceIops :: Maybe (Val Integer)
   , _rDSDBInstanceKmsKeyId :: Maybe (Val Text)
   , _rDSDBInstanceLicenseModel :: Maybe (Val Text)
   , _rDSDBInstanceMasterUserPassword :: Maybe (Val Text)
   , _rDSDBInstanceMasterUsername :: Maybe (Val Text)
-  , _rDSDBInstanceMonitoringInterval :: Maybe (Val Integer')
+  , _rDSDBInstanceMonitoringInterval :: Maybe (Val Integer)
   , _rDSDBInstanceMonitoringRoleArn :: Maybe (Val Text)
-  , _rDSDBInstanceMultiAZ :: Maybe (Val Bool')
+  , _rDSDBInstanceMultiAZ :: Maybe (Val Bool)
   , _rDSDBInstanceOptionGroupName :: Maybe (Val Text)
   , _rDSDBInstancePort :: Maybe (Val Text)
   , _rDSDBInstancePreferredBackupWindow :: Maybe (Val Text)
   , _rDSDBInstancePreferredMaintenanceWindow :: Maybe (Val Text)
-  , _rDSDBInstancePubliclyAccessible :: Maybe (Val Bool')
+  , _rDSDBInstancePubliclyAccessible :: Maybe (Val Bool)
   , _rDSDBInstanceSourceDBInstanceIdentifier :: Maybe (Val Text)
-  , _rDSDBInstanceStorageEncrypted :: Maybe (Val Bool')
+  , _rDSDBInstanceStorageEncrypted :: Maybe (Val Bool)
   , _rDSDBInstanceStorageType :: Maybe (Val Text)
   , _rDSDBInstanceTags :: Maybe [Tag]
   , _rDSDBInstanceTimezone :: Maybe (Val Text)
-  , _rDSDBInstanceVPCSecurityGroups :: Maybe [Val Text]
+  , _rDSDBInstanceVPCSecurityGroups :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON RDSDBInstance where
   toJSON RDSDBInstance{..} =
     object $
     catMaybes
-    [ ("AllocatedStorage" .=) <$> _rDSDBInstanceAllocatedStorage
-    , ("AllowMajorVersionUpgrade" .=) <$> _rDSDBInstanceAllowMajorVersionUpgrade
-    , ("AutoMinorVersionUpgrade" .=) <$> _rDSDBInstanceAutoMinorVersionUpgrade
-    , ("AvailabilityZone" .=) <$> _rDSDBInstanceAvailabilityZone
-    , ("BackupRetentionPeriod" .=) <$> _rDSDBInstanceBackupRetentionPeriod
-    , ("CharacterSetName" .=) <$> _rDSDBInstanceCharacterSetName
-    , ("CopyTagsToSnapshot" .=) <$> _rDSDBInstanceCopyTagsToSnapshot
-    , ("DBClusterIdentifier" .=) <$> _rDSDBInstanceDBClusterIdentifier
-    , Just ("DBInstanceClass" .= _rDSDBInstanceDBInstanceClass)
-    , ("DBInstanceIdentifier" .=) <$> _rDSDBInstanceDBInstanceIdentifier
-    , ("DBName" .=) <$> _rDSDBInstanceDBName
-    , ("DBParameterGroupName" .=) <$> _rDSDBInstanceDBParameterGroupName
-    , ("DBSecurityGroups" .=) <$> _rDSDBInstanceDBSecurityGroups
-    , ("DBSnapshotIdentifier" .=) <$> _rDSDBInstanceDBSnapshotIdentifier
-    , ("DBSubnetGroupName" .=) <$> _rDSDBInstanceDBSubnetGroupName
-    , ("Domain" .=) <$> _rDSDBInstanceDomain
-    , ("DomainIAMRoleName" .=) <$> _rDSDBInstanceDomainIAMRoleName
-    , ("Engine" .=) <$> _rDSDBInstanceEngine
-    , ("EngineVersion" .=) <$> _rDSDBInstanceEngineVersion
-    , ("Iops" .=) <$> _rDSDBInstanceIops
-    , ("KmsKeyId" .=) <$> _rDSDBInstanceKmsKeyId
-    , ("LicenseModel" .=) <$> _rDSDBInstanceLicenseModel
-    , ("MasterUserPassword" .=) <$> _rDSDBInstanceMasterUserPassword
-    , ("MasterUsername" .=) <$> _rDSDBInstanceMasterUsername
-    , ("MonitoringInterval" .=) <$> _rDSDBInstanceMonitoringInterval
-    , ("MonitoringRoleArn" .=) <$> _rDSDBInstanceMonitoringRoleArn
-    , ("MultiAZ" .=) <$> _rDSDBInstanceMultiAZ
-    , ("OptionGroupName" .=) <$> _rDSDBInstanceOptionGroupName
-    , ("Port" .=) <$> _rDSDBInstancePort
-    , ("PreferredBackupWindow" .=) <$> _rDSDBInstancePreferredBackupWindow
-    , ("PreferredMaintenanceWindow" .=) <$> _rDSDBInstancePreferredMaintenanceWindow
-    , ("PubliclyAccessible" .=) <$> _rDSDBInstancePubliclyAccessible
-    , ("SourceDBInstanceIdentifier" .=) <$> _rDSDBInstanceSourceDBInstanceIdentifier
-    , ("StorageEncrypted" .=) <$> _rDSDBInstanceStorageEncrypted
-    , ("StorageType" .=) <$> _rDSDBInstanceStorageType
-    , ("Tags" .=) <$> _rDSDBInstanceTags
-    , ("Timezone" .=) <$> _rDSDBInstanceTimezone
-    , ("VPCSecurityGroups" .=) <$> _rDSDBInstanceVPCSecurityGroups
+    [ fmap (("AllocatedStorage",) . toJSON) _rDSDBInstanceAllocatedStorage
+    , fmap (("AllowMajorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAllowMajorVersionUpgrade
+    , fmap (("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _rDSDBInstanceAutoMinorVersionUpgrade
+    , fmap (("AvailabilityZone",) . toJSON) _rDSDBInstanceAvailabilityZone
+    , fmap (("BackupRetentionPeriod",) . toJSON) _rDSDBInstanceBackupRetentionPeriod
+    , fmap (("CharacterSetName",) . toJSON) _rDSDBInstanceCharacterSetName
+    , fmap (("CopyTagsToSnapshot",) . toJSON . fmap Bool') _rDSDBInstanceCopyTagsToSnapshot
+    , fmap (("DBClusterIdentifier",) . toJSON) _rDSDBInstanceDBClusterIdentifier
+    , (Just . ("DBInstanceClass",) . toJSON) _rDSDBInstanceDBInstanceClass
+    , fmap (("DBInstanceIdentifier",) . toJSON) _rDSDBInstanceDBInstanceIdentifier
+    , fmap (("DBName",) . toJSON) _rDSDBInstanceDBName
+    , fmap (("DBParameterGroupName",) . toJSON) _rDSDBInstanceDBParameterGroupName
+    , fmap (("DBSecurityGroups",) . toJSON) _rDSDBInstanceDBSecurityGroups
+    , fmap (("DBSnapshotIdentifier",) . toJSON) _rDSDBInstanceDBSnapshotIdentifier
+    , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBInstanceDBSubnetGroupName
+    , fmap (("Domain",) . toJSON) _rDSDBInstanceDomain
+    , fmap (("DomainIAMRoleName",) . toJSON) _rDSDBInstanceDomainIAMRoleName
+    , fmap (("Engine",) . toJSON) _rDSDBInstanceEngine
+    , fmap (("EngineVersion",) . toJSON) _rDSDBInstanceEngineVersion
+    , fmap (("Iops",) . toJSON . fmap Integer') _rDSDBInstanceIops
+    , fmap (("KmsKeyId",) . toJSON) _rDSDBInstanceKmsKeyId
+    , fmap (("LicenseModel",) . toJSON) _rDSDBInstanceLicenseModel
+    , fmap (("MasterUserPassword",) . toJSON) _rDSDBInstanceMasterUserPassword
+    , fmap (("MasterUsername",) . toJSON) _rDSDBInstanceMasterUsername
+    , fmap (("MonitoringInterval",) . toJSON . fmap Integer') _rDSDBInstanceMonitoringInterval
+    , fmap (("MonitoringRoleArn",) . toJSON) _rDSDBInstanceMonitoringRoleArn
+    , fmap (("MultiAZ",) . toJSON . fmap Bool') _rDSDBInstanceMultiAZ
+    , fmap (("OptionGroupName",) . toJSON) _rDSDBInstanceOptionGroupName
+    , fmap (("Port",) . toJSON) _rDSDBInstancePort
+    , fmap (("PreferredBackupWindow",) . toJSON) _rDSDBInstancePreferredBackupWindow
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _rDSDBInstancePreferredMaintenanceWindow
+    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _rDSDBInstancePubliclyAccessible
+    , fmap (("SourceDBInstanceIdentifier",) . toJSON) _rDSDBInstanceSourceDBInstanceIdentifier
+    , fmap (("StorageEncrypted",) . toJSON . fmap Bool') _rDSDBInstanceStorageEncrypted
+    , fmap (("StorageType",) . toJSON) _rDSDBInstanceStorageType
+    , fmap (("Tags",) . toJSON) _rDSDBInstanceTags
+    , fmap (("Timezone",) . toJSON) _rDSDBInstanceTimezone
+    , fmap (("VPCSecurityGroups",) . toJSON) _rDSDBInstanceVPCSecurityGroups
     ]
 
 instance FromJSON RDSDBInstance where
   parseJSON (Object obj) =
     RDSDBInstance <$>
-      obj .:? "AllocatedStorage" <*>
-      obj .:? "AllowMajorVersionUpgrade" <*>
-      obj .:? "AutoMinorVersionUpgrade" <*>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "BackupRetentionPeriod" <*>
-      obj .:? "CharacterSetName" <*>
-      obj .:? "CopyTagsToSnapshot" <*>
-      obj .:? "DBClusterIdentifier" <*>
-      obj .: "DBInstanceClass" <*>
-      obj .:? "DBInstanceIdentifier" <*>
-      obj .:? "DBName" <*>
-      obj .:? "DBParameterGroupName" <*>
-      obj .:? "DBSecurityGroups" <*>
-      obj .:? "DBSnapshotIdentifier" <*>
-      obj .:? "DBSubnetGroupName" <*>
-      obj .:? "Domain" <*>
-      obj .:? "DomainIAMRoleName" <*>
-      obj .:? "Engine" <*>
-      obj .:? "EngineVersion" <*>
-      obj .:? "Iops" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "LicenseModel" <*>
-      obj .:? "MasterUserPassword" <*>
-      obj .:? "MasterUsername" <*>
-      obj .:? "MonitoringInterval" <*>
-      obj .:? "MonitoringRoleArn" <*>
-      obj .:? "MultiAZ" <*>
-      obj .:? "OptionGroupName" <*>
-      obj .:? "Port" <*>
-      obj .:? "PreferredBackupWindow" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "PubliclyAccessible" <*>
-      obj .:? "SourceDBInstanceIdentifier" <*>
-      obj .:? "StorageEncrypted" <*>
-      obj .:? "StorageType" <*>
-      obj .:? "Tags" <*>
-      obj .:? "Timezone" <*>
-      obj .:? "VPCSecurityGroups"
+      (obj .:? "AllocatedStorage") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AllowMajorVersionUpgrade") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "AutoMinorVersionUpgrade") <*>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "BackupRetentionPeriod") <*>
+      (obj .:? "CharacterSetName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "CopyTagsToSnapshot") <*>
+      (obj .:? "DBClusterIdentifier") <*>
+      (obj .: "DBInstanceClass") <*>
+      (obj .:? "DBInstanceIdentifier") <*>
+      (obj .:? "DBName") <*>
+      (obj .:? "DBParameterGroupName") <*>
+      (obj .:? "DBSecurityGroups") <*>
+      (obj .:? "DBSnapshotIdentifier") <*>
+      (obj .:? "DBSubnetGroupName") <*>
+      (obj .:? "Domain") <*>
+      (obj .:? "DomainIAMRoleName") <*>
+      (obj .:? "Engine") <*>
+      (obj .:? "EngineVersion") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Iops") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .:? "LicenseModel") <*>
+      (obj .:? "MasterUserPassword") <*>
+      (obj .:? "MasterUsername") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MonitoringInterval") <*>
+      (obj .:? "MonitoringRoleArn") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "MultiAZ") <*>
+      (obj .:? "OptionGroupName") <*>
+      (obj .:? "Port") <*>
+      (obj .:? "PreferredBackupWindow") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "PubliclyAccessible") <*>
+      (obj .:? "SourceDBInstanceIdentifier") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "StorageEncrypted") <*>
+      (obj .:? "StorageType") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "Timezone") <*>
+      (obj .:? "VPCSecurityGroups")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBInstance' containing required fields as arguments.
@@ -196,11 +197,11 @@
 rdsdbiAllocatedStorage = lens _rDSDBInstanceAllocatedStorage (\s a -> s { _rDSDBInstanceAllocatedStorage = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-allowmajorversionupgrade
-rdsdbiAllowMajorVersionUpgrade :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiAllowMajorVersionUpgrade :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiAllowMajorVersionUpgrade = lens _rDSDBInstanceAllowMajorVersionUpgrade (\s a -> s { _rDSDBInstanceAllowMajorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-autominorversionupgrade
-rdsdbiAutoMinorVersionUpgrade :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiAutoMinorVersionUpgrade :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiAutoMinorVersionUpgrade = lens _rDSDBInstanceAutoMinorVersionUpgrade (\s a -> s { _rDSDBInstanceAutoMinorVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-availabilityzone
@@ -216,7 +217,7 @@
 rdsdbiCharacterSetName = lens _rDSDBInstanceCharacterSetName (\s a -> s { _rDSDBInstanceCharacterSetName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-copytagstosnapshot
-rdsdbiCopyTagsToSnapshot :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiCopyTagsToSnapshot :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiCopyTagsToSnapshot = lens _rDSDBInstanceCopyTagsToSnapshot (\s a -> s { _rDSDBInstanceCopyTagsToSnapshot = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbclusteridentifier
@@ -240,7 +241,7 @@
 rdsdbiDBParameterGroupName = lens _rDSDBInstanceDBParameterGroupName (\s a -> s { _rDSDBInstanceDBParameterGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups
-rdsdbiDBSecurityGroups :: Lens' RDSDBInstance (Maybe [Val Text])
+rdsdbiDBSecurityGroups :: Lens' RDSDBInstance (Maybe (ValList Text))
 rdsdbiDBSecurityGroups = lens _rDSDBInstanceDBSecurityGroups (\s a -> s { _rDSDBInstanceDBSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier
@@ -268,7 +269,7 @@
 rdsdbiEngineVersion = lens _rDSDBInstanceEngineVersion (\s a -> s { _rDSDBInstanceEngineVersion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-iops
-rdsdbiIops :: Lens' RDSDBInstance (Maybe (Val Integer'))
+rdsdbiIops :: Lens' RDSDBInstance (Maybe (Val Integer))
 rdsdbiIops = lens _rDSDBInstanceIops (\s a -> s { _rDSDBInstanceIops = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-kmskeyid
@@ -288,7 +289,7 @@
 rdsdbiMasterUsername = lens _rDSDBInstanceMasterUsername (\s a -> s { _rDSDBInstanceMasterUsername = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-monitoringinterval
-rdsdbiMonitoringInterval :: Lens' RDSDBInstance (Maybe (Val Integer'))
+rdsdbiMonitoringInterval :: Lens' RDSDBInstance (Maybe (Val Integer))
 rdsdbiMonitoringInterval = lens _rDSDBInstanceMonitoringInterval (\s a -> s { _rDSDBInstanceMonitoringInterval = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-monitoringrolearn
@@ -296,7 +297,7 @@
 rdsdbiMonitoringRoleArn = lens _rDSDBInstanceMonitoringRoleArn (\s a -> s { _rDSDBInstanceMonitoringRoleArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-multiaz
-rdsdbiMultiAZ :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiMultiAZ :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiMultiAZ = lens _rDSDBInstanceMultiAZ (\s a -> s { _rDSDBInstanceMultiAZ = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-optiongroupname
@@ -316,7 +317,7 @@
 rdsdbiPreferredMaintenanceWindow = lens _rDSDBInstancePreferredMaintenanceWindow (\s a -> s { _rDSDBInstancePreferredMaintenanceWindow = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-publiclyaccessible
-rdsdbiPubliclyAccessible :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiPubliclyAccessible :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiPubliclyAccessible = lens _rDSDBInstancePubliclyAccessible (\s a -> s { _rDSDBInstancePubliclyAccessible = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-sourcedbinstanceidentifier
@@ -324,7 +325,7 @@
 rdsdbiSourceDBInstanceIdentifier = lens _rDSDBInstanceSourceDBInstanceIdentifier (\s a -> s { _rDSDBInstanceSourceDBInstanceIdentifier = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-storageencrypted
-rdsdbiStorageEncrypted :: Lens' RDSDBInstance (Maybe (Val Bool'))
+rdsdbiStorageEncrypted :: Lens' RDSDBInstance (Maybe (Val Bool))
 rdsdbiStorageEncrypted = lens _rDSDBInstanceStorageEncrypted (\s a -> s { _rDSDBInstanceStorageEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-storagetype
@@ -340,5 +341,5 @@
 rdsdbiTimezone = lens _rDSDBInstanceTimezone (\s a -> s { _rDSDBInstanceTimezone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-vpcsecuritygroups
-rdsdbiVPCSecurityGroups :: Lens' RDSDBInstance (Maybe [Val Text])
+rdsdbiVPCSecurityGroups :: Lens' RDSDBInstance (Maybe (ValList Text))
 rdsdbiVPCSecurityGroups = lens _rDSDBInstanceVPCSecurityGroups (\s a -> s { _rDSDBInstanceVPCSecurityGroups = a })
diff --git a/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs b/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html
 
@@ -28,19 +29,19 @@
   toJSON RDSDBParameterGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _rDSDBParameterGroupDescription)
-    , Just ("Family" .= _rDSDBParameterGroupFamily)
-    , ("Parameters" .=) <$> _rDSDBParameterGroupParameters
-    , ("Tags" .=) <$> _rDSDBParameterGroupTags
+    [ (Just . ("Description",) . toJSON) _rDSDBParameterGroupDescription
+    , (Just . ("Family",) . toJSON) _rDSDBParameterGroupFamily
+    , fmap (("Parameters",) . toJSON) _rDSDBParameterGroupParameters
+    , fmap (("Tags",) . toJSON) _rDSDBParameterGroupTags
     ]
 
 instance FromJSON RDSDBParameterGroup where
   parseJSON (Object obj) =
     RDSDBParameterGroup <$>
-      obj .: "Description" <*>
-      obj .: "Family" <*>
-      obj .:? "Parameters" <*>
-      obj .:? "Tags"
+      (obj .: "Description") <*>
+      (obj .: "Family") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBParameterGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs b/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html
 
@@ -29,19 +30,19 @@
   toJSON RDSDBSecurityGroup{..} =
     object $
     catMaybes
-    [ Just ("DBSecurityGroupIngress" .= _rDSDBSecurityGroupDBSecurityGroupIngress)
-    , ("EC2VpcId" .=) <$> _rDSDBSecurityGroupEC2VpcId
-    , Just ("GroupDescription" .= _rDSDBSecurityGroupGroupDescription)
-    , ("Tags" .=) <$> _rDSDBSecurityGroupTags
+    [ (Just . ("DBSecurityGroupIngress",) . toJSON) _rDSDBSecurityGroupDBSecurityGroupIngress
+    , fmap (("EC2VpcId",) . toJSON) _rDSDBSecurityGroupEC2VpcId
+    , (Just . ("GroupDescription",) . toJSON) _rDSDBSecurityGroupGroupDescription
+    , fmap (("Tags",) . toJSON) _rDSDBSecurityGroupTags
     ]
 
 instance FromJSON RDSDBSecurityGroup where
   parseJSON (Object obj) =
     RDSDBSecurityGroup <$>
-      obj .: "DBSecurityGroupIngress" <*>
-      obj .:? "EC2VpcId" <*>
-      obj .: "GroupDescription" <*>
-      obj .:? "Tags"
+      (obj .: "DBSecurityGroupIngress") <*>
+      (obj .:? "EC2VpcId") <*>
+      (obj .: "GroupDescription") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBSecurityGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html
 
@@ -29,21 +30,21 @@
   toJSON RDSDBSecurityGroupIngress{..} =
     object $
     catMaybes
-    [ ("CIDRIP" .=) <$> _rDSDBSecurityGroupIngressCIDRIP
-    , Just ("DBSecurityGroupName" .= _rDSDBSecurityGroupIngressDBSecurityGroupName)
-    , ("EC2SecurityGroupId" .=) <$> _rDSDBSecurityGroupIngressEC2SecurityGroupId
-    , ("EC2SecurityGroupName" .=) <$> _rDSDBSecurityGroupIngressEC2SecurityGroupName
-    , ("EC2SecurityGroupOwnerId" .=) <$> _rDSDBSecurityGroupIngressEC2SecurityGroupOwnerId
+    [ fmap (("CIDRIP",) . toJSON) _rDSDBSecurityGroupIngressCIDRIP
+    , (Just . ("DBSecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressDBSecurityGroupName
+    , fmap (("EC2SecurityGroupId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupId
+    , fmap (("EC2SecurityGroupName",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupName
+    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _rDSDBSecurityGroupIngressEC2SecurityGroupOwnerId
     ]
 
 instance FromJSON RDSDBSecurityGroupIngress where
   parseJSON (Object obj) =
     RDSDBSecurityGroupIngress <$>
-      obj .:? "CIDRIP" <*>
-      obj .: "DBSecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupId" <*>
-      obj .:? "EC2SecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupOwnerId"
+      (obj .:? "CIDRIP") <*>
+      (obj .: "DBSecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupId") <*>
+      (obj .:? "EC2SecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupOwnerId")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBSecurityGroupIngress' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs b/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html
 
@@ -19,7 +20,7 @@
 data RDSDBSubnetGroup =
   RDSDBSubnetGroup
   { _rDSDBSubnetGroupDBSubnetGroupDescription :: Val Text
-  , _rDSDBSubnetGroupSubnetIds :: [Val Text]
+  , _rDSDBSubnetGroupSubnetIds :: ValList Text
   , _rDSDBSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON RDSDBSubnetGroup{..} =
     object $
     catMaybes
-    [ Just ("DBSubnetGroupDescription" .= _rDSDBSubnetGroupDBSubnetGroupDescription)
-    , Just ("SubnetIds" .= _rDSDBSubnetGroupSubnetIds)
-    , ("Tags" .=) <$> _rDSDBSubnetGroupTags
+    [ (Just . ("DBSubnetGroupDescription",) . toJSON) _rDSDBSubnetGroupDBSubnetGroupDescription
+    , (Just . ("SubnetIds",) . toJSON) _rDSDBSubnetGroupSubnetIds
+    , fmap (("Tags",) . toJSON) _rDSDBSubnetGroupTags
     ]
 
 instance FromJSON RDSDBSubnetGroup where
   parseJSON (Object obj) =
     RDSDBSubnetGroup <$>
-      obj .: "DBSubnetGroupDescription" <*>
-      obj .: "SubnetIds" <*>
-      obj .:? "Tags"
+      (obj .: "DBSubnetGroupDescription") <*>
+      (obj .: "SubnetIds") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSDBSubnetGroup' containing required fields as
 -- arguments.
 rdsdbSubnetGroup
   :: Val Text -- ^ 'rdsdbsugDBSubnetGroupDescription'
-  -> [Val Text] -- ^ 'rdsdbsugSubnetIds'
+  -> ValList Text -- ^ 'rdsdbsugSubnetIds'
   -> RDSDBSubnetGroup
 rdsdbSubnetGroup dBSubnetGroupDescriptionarg subnetIdsarg =
   RDSDBSubnetGroup
@@ -58,7 +59,7 @@
 rdsdbsugDBSubnetGroupDescription = lens _rDSDBSubnetGroupDBSubnetGroupDescription (\s a -> s { _rDSDBSubnetGroupDBSubnetGroupDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html#cfn-rds-dbsubnetgroup-subnetids
-rdsdbsugSubnetIds :: Lens' RDSDBSubnetGroup [Val Text]
+rdsdbsugSubnetIds :: Lens' RDSDBSubnetGroup (ValList Text)
 rdsdbsugSubnetIds = lens _rDSDBSubnetGroupSubnetIds (\s a -> s { _rDSDBSubnetGroupSubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html#cfn-rds-dbsubnetgroup-tags
diff --git a/library-gen/Stratosphere/Resources/RDSEventSubscription.hs b/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
--- a/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
+++ b/library-gen/Stratosphere/Resources/RDSEventSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html
 
@@ -18,10 +19,10 @@
 -- 'rdsEventSubscription' for a more convenient constructor.
 data RDSEventSubscription =
   RDSEventSubscription
-  { _rDSEventSubscriptionEnabled :: Maybe (Val Bool')
-  , _rDSEventSubscriptionEventCategories :: Maybe [Val Text]
+  { _rDSEventSubscriptionEnabled :: Maybe (Val Bool)
+  , _rDSEventSubscriptionEventCategories :: Maybe (ValList Text)
   , _rDSEventSubscriptionSnsTopicArn :: Val Text
-  , _rDSEventSubscriptionSourceIds :: Maybe [Val Text]
+  , _rDSEventSubscriptionSourceIds :: Maybe (ValList Text)
   , _rDSEventSubscriptionSourceType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -29,21 +30,21 @@
   toJSON RDSEventSubscription{..} =
     object $
     catMaybes
-    [ ("Enabled" .=) <$> _rDSEventSubscriptionEnabled
-    , ("EventCategories" .=) <$> _rDSEventSubscriptionEventCategories
-    , Just ("SnsTopicArn" .= _rDSEventSubscriptionSnsTopicArn)
-    , ("SourceIds" .=) <$> _rDSEventSubscriptionSourceIds
-    , ("SourceType" .=) <$> _rDSEventSubscriptionSourceType
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _rDSEventSubscriptionEnabled
+    , fmap (("EventCategories",) . toJSON) _rDSEventSubscriptionEventCategories
+    , (Just . ("SnsTopicArn",) . toJSON) _rDSEventSubscriptionSnsTopicArn
+    , fmap (("SourceIds",) . toJSON) _rDSEventSubscriptionSourceIds
+    , fmap (("SourceType",) . toJSON) _rDSEventSubscriptionSourceType
     ]
 
 instance FromJSON RDSEventSubscription where
   parseJSON (Object obj) =
     RDSEventSubscription <$>
-      obj .:? "Enabled" <*>
-      obj .:? "EventCategories" <*>
-      obj .: "SnsTopicArn" <*>
-      obj .:? "SourceIds" <*>
-      obj .:? "SourceType"
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "EventCategories") <*>
+      (obj .: "SnsTopicArn") <*>
+      (obj .:? "SourceIds") <*>
+      (obj .:? "SourceType")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSEventSubscription' containing required fields as
@@ -61,11 +62,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-enabled
-rdsesEnabled :: Lens' RDSEventSubscription (Maybe (Val Bool'))
+rdsesEnabled :: Lens' RDSEventSubscription (Maybe (Val Bool))
 rdsesEnabled = lens _rDSEventSubscriptionEnabled (\s a -> s { _rDSEventSubscriptionEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-eventcategories
-rdsesEventCategories :: Lens' RDSEventSubscription (Maybe [Val Text])
+rdsesEventCategories :: Lens' RDSEventSubscription (Maybe (ValList Text))
 rdsesEventCategories = lens _rDSEventSubscriptionEventCategories (\s a -> s { _rDSEventSubscriptionEventCategories = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-snstopicarn
@@ -73,7 +74,7 @@
 rdsesSnsTopicArn = lens _rDSEventSubscriptionSnsTopicArn (\s a -> s { _rDSEventSubscriptionSnsTopicArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourceids
-rdsesSourceIds :: Lens' RDSEventSubscription (Maybe [Val Text])
+rdsesSourceIds :: Lens' RDSEventSubscription (Maybe (ValList Text))
 rdsesSourceIds = lens _rDSEventSubscriptionSourceIds (\s a -> s { _rDSEventSubscriptionSourceIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourcetype
diff --git a/library-gen/Stratosphere/Resources/RDSOptionGroup.hs b/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
--- a/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
+++ b/library-gen/Stratosphere/Resources/RDSOptionGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html
 
@@ -30,21 +31,21 @@
   toJSON RDSOptionGroup{..} =
     object $
     catMaybes
-    [ Just ("EngineName" .= _rDSOptionGroupEngineName)
-    , Just ("MajorEngineVersion" .= _rDSOptionGroupMajorEngineVersion)
-    , Just ("OptionConfigurations" .= _rDSOptionGroupOptionConfigurations)
-    , Just ("OptionGroupDescription" .= _rDSOptionGroupOptionGroupDescription)
-    , ("Tags" .=) <$> _rDSOptionGroupTags
+    [ (Just . ("EngineName",) . toJSON) _rDSOptionGroupEngineName
+    , (Just . ("MajorEngineVersion",) . toJSON) _rDSOptionGroupMajorEngineVersion
+    , (Just . ("OptionConfigurations",) . toJSON) _rDSOptionGroupOptionConfigurations
+    , (Just . ("OptionGroupDescription",) . toJSON) _rDSOptionGroupOptionGroupDescription
+    , fmap (("Tags",) . toJSON) _rDSOptionGroupTags
     ]
 
 instance FromJSON RDSOptionGroup where
   parseJSON (Object obj) =
     RDSOptionGroup <$>
-      obj .: "EngineName" <*>
-      obj .: "MajorEngineVersion" <*>
-      obj .: "OptionConfigurations" <*>
-      obj .: "OptionGroupDescription" <*>
-      obj .:? "Tags"
+      (obj .: "EngineName") <*>
+      (obj .: "MajorEngineVersion") <*>
+      (obj .: "OptionConfigurations") <*>
+      (obj .: "OptionGroupDescription") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RDSOptionGroup' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/RedshiftCluster.hs b/library-gen/Stratosphere/Resources/RedshiftCluster.hs
--- a/library-gen/Stratosphere/Resources/RedshiftCluster.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftCluster.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html
 
@@ -19,101 +20,101 @@
 -- a more convenient constructor.
 data RedshiftCluster =
   RedshiftCluster
-  { _redshiftClusterAllowVersionUpgrade :: Maybe (Val Bool')
-  , _redshiftClusterAutomatedSnapshotRetentionPeriod :: Maybe (Val Integer')
+  { _redshiftClusterAllowVersionUpgrade :: Maybe (Val Bool)
+  , _redshiftClusterAutomatedSnapshotRetentionPeriod :: Maybe (Val Integer)
   , _redshiftClusterAvailabilityZone :: Maybe (Val Text)
   , _redshiftClusterClusterParameterGroupName :: Maybe (Val Text)
-  , _redshiftClusterClusterSecurityGroups :: Maybe [Val Text]
+  , _redshiftClusterClusterSecurityGroups :: Maybe (ValList Text)
   , _redshiftClusterClusterSubnetGroupName :: Maybe (Val Text)
   , _redshiftClusterClusterType :: Val Text
   , _redshiftClusterClusterVersion :: Maybe (Val Text)
   , _redshiftClusterDBName :: Val Text
   , _redshiftClusterElasticIp :: Maybe (Val Text)
-  , _redshiftClusterEncrypted :: Maybe (Val Bool')
+  , _redshiftClusterEncrypted :: Maybe (Val Bool)
   , _redshiftClusterHsmClientCertificateIdentifier :: Maybe (Val Text)
   , _redshiftClusterHsmConfigurationIdentifier :: Maybe (Val Text)
-  , _redshiftClusterIamRoles :: Maybe [Val Text]
+  , _redshiftClusterIamRoles :: Maybe (ValList Text)
   , _redshiftClusterKmsKeyId :: Maybe (Val Text)
   , _redshiftClusterLoggingProperties :: Maybe RedshiftClusterLoggingProperties
   , _redshiftClusterMasterUserPassword :: Val Text
   , _redshiftClusterMasterUsername :: Val Text
   , _redshiftClusterNodeType :: Val Text
-  , _redshiftClusterNumberOfNodes :: Maybe (Val Integer')
+  , _redshiftClusterNumberOfNodes :: Maybe (Val Integer)
   , _redshiftClusterOwnerAccount :: Maybe (Val Text)
-  , _redshiftClusterPort :: Maybe (Val Integer')
+  , _redshiftClusterPort :: Maybe (Val Integer)
   , _redshiftClusterPreferredMaintenanceWindow :: Maybe (Val Text)
-  , _redshiftClusterPubliclyAccessible :: Maybe (Val Bool')
+  , _redshiftClusterPubliclyAccessible :: Maybe (Val Bool)
   , _redshiftClusterSnapshotClusterIdentifier :: Maybe (Val Text)
   , _redshiftClusterSnapshotIdentifier :: Maybe (Val Text)
   , _redshiftClusterTags :: Maybe [Tag]
-  , _redshiftClusterVpcSecurityGroupIds :: Maybe [Val Text]
+  , _redshiftClusterVpcSecurityGroupIds :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
 instance ToJSON RedshiftCluster where
   toJSON RedshiftCluster{..} =
     object $
     catMaybes
-    [ ("AllowVersionUpgrade" .=) <$> _redshiftClusterAllowVersionUpgrade
-    , ("AutomatedSnapshotRetentionPeriod" .=) <$> _redshiftClusterAutomatedSnapshotRetentionPeriod
-    , ("AvailabilityZone" .=) <$> _redshiftClusterAvailabilityZone
-    , ("ClusterParameterGroupName" .=) <$> _redshiftClusterClusterParameterGroupName
-    , ("ClusterSecurityGroups" .=) <$> _redshiftClusterClusterSecurityGroups
-    , ("ClusterSubnetGroupName" .=) <$> _redshiftClusterClusterSubnetGroupName
-    , Just ("ClusterType" .= _redshiftClusterClusterType)
-    , ("ClusterVersion" .=) <$> _redshiftClusterClusterVersion
-    , Just ("DBName" .= _redshiftClusterDBName)
-    , ("ElasticIp" .=) <$> _redshiftClusterElasticIp
-    , ("Encrypted" .=) <$> _redshiftClusterEncrypted
-    , ("HsmClientCertificateIdentifier" .=) <$> _redshiftClusterHsmClientCertificateIdentifier
-    , ("HsmConfigurationIdentifier" .=) <$> _redshiftClusterHsmConfigurationIdentifier
-    , ("IamRoles" .=) <$> _redshiftClusterIamRoles
-    , ("KmsKeyId" .=) <$> _redshiftClusterKmsKeyId
-    , ("LoggingProperties" .=) <$> _redshiftClusterLoggingProperties
-    , Just ("MasterUserPassword" .= _redshiftClusterMasterUserPassword)
-    , Just ("MasterUsername" .= _redshiftClusterMasterUsername)
-    , Just ("NodeType" .= _redshiftClusterNodeType)
-    , ("NumberOfNodes" .=) <$> _redshiftClusterNumberOfNodes
-    , ("OwnerAccount" .=) <$> _redshiftClusterOwnerAccount
-    , ("Port" .=) <$> _redshiftClusterPort
-    , ("PreferredMaintenanceWindow" .=) <$> _redshiftClusterPreferredMaintenanceWindow
-    , ("PubliclyAccessible" .=) <$> _redshiftClusterPubliclyAccessible
-    , ("SnapshotClusterIdentifier" .=) <$> _redshiftClusterSnapshotClusterIdentifier
-    , ("SnapshotIdentifier" .=) <$> _redshiftClusterSnapshotIdentifier
-    , ("Tags" .=) <$> _redshiftClusterTags
-    , ("VpcSecurityGroupIds" .=) <$> _redshiftClusterVpcSecurityGroupIds
+    [ fmap (("AllowVersionUpgrade",) . toJSON . fmap Bool') _redshiftClusterAllowVersionUpgrade
+    , fmap (("AutomatedSnapshotRetentionPeriod",) . toJSON . fmap Integer') _redshiftClusterAutomatedSnapshotRetentionPeriod
+    , fmap (("AvailabilityZone",) . toJSON) _redshiftClusterAvailabilityZone
+    , fmap (("ClusterParameterGroupName",) . toJSON) _redshiftClusterClusterParameterGroupName
+    , fmap (("ClusterSecurityGroups",) . toJSON) _redshiftClusterClusterSecurityGroups
+    , fmap (("ClusterSubnetGroupName",) . toJSON) _redshiftClusterClusterSubnetGroupName
+    , (Just . ("ClusterType",) . toJSON) _redshiftClusterClusterType
+    , fmap (("ClusterVersion",) . toJSON) _redshiftClusterClusterVersion
+    , (Just . ("DBName",) . toJSON) _redshiftClusterDBName
+    , fmap (("ElasticIp",) . toJSON) _redshiftClusterElasticIp
+    , fmap (("Encrypted",) . toJSON . fmap Bool') _redshiftClusterEncrypted
+    , fmap (("HsmClientCertificateIdentifier",) . toJSON) _redshiftClusterHsmClientCertificateIdentifier
+    , fmap (("HsmConfigurationIdentifier",) . toJSON) _redshiftClusterHsmConfigurationIdentifier
+    , fmap (("IamRoles",) . toJSON) _redshiftClusterIamRoles
+    , fmap (("KmsKeyId",) . toJSON) _redshiftClusterKmsKeyId
+    , fmap (("LoggingProperties",) . toJSON) _redshiftClusterLoggingProperties
+    , (Just . ("MasterUserPassword",) . toJSON) _redshiftClusterMasterUserPassword
+    , (Just . ("MasterUsername",) . toJSON) _redshiftClusterMasterUsername
+    , (Just . ("NodeType",) . toJSON) _redshiftClusterNodeType
+    , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _redshiftClusterNumberOfNodes
+    , fmap (("OwnerAccount",) . toJSON) _redshiftClusterOwnerAccount
+    , fmap (("Port",) . toJSON . fmap Integer') _redshiftClusterPort
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _redshiftClusterPreferredMaintenanceWindow
+    , fmap (("PubliclyAccessible",) . toJSON . fmap Bool') _redshiftClusterPubliclyAccessible
+    , fmap (("SnapshotClusterIdentifier",) . toJSON) _redshiftClusterSnapshotClusterIdentifier
+    , fmap (("SnapshotIdentifier",) . toJSON) _redshiftClusterSnapshotIdentifier
+    , fmap (("Tags",) . toJSON) _redshiftClusterTags
+    , fmap (("VpcSecurityGroupIds",) . toJSON) _redshiftClusterVpcSecurityGroupIds
     ]
 
 instance FromJSON RedshiftCluster where
   parseJSON (Object obj) =
     RedshiftCluster <$>
-      obj .:? "AllowVersionUpgrade" <*>
-      obj .:? "AutomatedSnapshotRetentionPeriod" <*>
-      obj .:? "AvailabilityZone" <*>
-      obj .:? "ClusterParameterGroupName" <*>
-      obj .:? "ClusterSecurityGroups" <*>
-      obj .:? "ClusterSubnetGroupName" <*>
-      obj .: "ClusterType" <*>
-      obj .:? "ClusterVersion" <*>
-      obj .: "DBName" <*>
-      obj .:? "ElasticIp" <*>
-      obj .:? "Encrypted" <*>
-      obj .:? "HsmClientCertificateIdentifier" <*>
-      obj .:? "HsmConfigurationIdentifier" <*>
-      obj .:? "IamRoles" <*>
-      obj .:? "KmsKeyId" <*>
-      obj .:? "LoggingProperties" <*>
-      obj .: "MasterUserPassword" <*>
-      obj .: "MasterUsername" <*>
-      obj .: "NodeType" <*>
-      obj .:? "NumberOfNodes" <*>
-      obj .:? "OwnerAccount" <*>
-      obj .:? "Port" <*>
-      obj .:? "PreferredMaintenanceWindow" <*>
-      obj .:? "PubliclyAccessible" <*>
-      obj .:? "SnapshotClusterIdentifier" <*>
-      obj .:? "SnapshotIdentifier" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VpcSecurityGroupIds"
+      fmap (fmap (fmap unBool')) (obj .:? "AllowVersionUpgrade") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "AutomatedSnapshotRetentionPeriod") <*>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "ClusterParameterGroupName") <*>
+      (obj .:? "ClusterSecurityGroups") <*>
+      (obj .:? "ClusterSubnetGroupName") <*>
+      (obj .: "ClusterType") <*>
+      (obj .:? "ClusterVersion") <*>
+      (obj .: "DBName") <*>
+      (obj .:? "ElasticIp") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Encrypted") <*>
+      (obj .:? "HsmClientCertificateIdentifier") <*>
+      (obj .:? "HsmConfigurationIdentifier") <*>
+      (obj .:? "IamRoles") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .:? "LoggingProperties") <*>
+      (obj .: "MasterUserPassword") <*>
+      (obj .: "MasterUsername") <*>
+      (obj .: "NodeType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfNodes") <*>
+      (obj .:? "OwnerAccount") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "PubliclyAccessible") <*>
+      (obj .:? "SnapshotClusterIdentifier") <*>
+      (obj .:? "SnapshotIdentifier") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcSecurityGroupIds")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftCluster' containing required fields as
@@ -158,11 +159,11 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-allowversionupgrade
-rcAllowVersionUpgrade :: Lens' RedshiftCluster (Maybe (Val Bool'))
+rcAllowVersionUpgrade :: Lens' RedshiftCluster (Maybe (Val Bool))
 rcAllowVersionUpgrade = lens _redshiftClusterAllowVersionUpgrade (\s a -> s { _redshiftClusterAllowVersionUpgrade = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-automatedsnapshotretentionperiod
-rcAutomatedSnapshotRetentionPeriod :: Lens' RedshiftCluster (Maybe (Val Integer'))
+rcAutomatedSnapshotRetentionPeriod :: Lens' RedshiftCluster (Maybe (Val Integer))
 rcAutomatedSnapshotRetentionPeriod = lens _redshiftClusterAutomatedSnapshotRetentionPeriod (\s a -> s { _redshiftClusterAutomatedSnapshotRetentionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-availabilityzone
@@ -174,7 +175,7 @@
 rcClusterParameterGroupName = lens _redshiftClusterClusterParameterGroupName (\s a -> s { _redshiftClusterClusterParameterGroupName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clustersecuritygroups
-rcClusterSecurityGroups :: Lens' RedshiftCluster (Maybe [Val Text])
+rcClusterSecurityGroups :: Lens' RedshiftCluster (Maybe (ValList Text))
 rcClusterSecurityGroups = lens _redshiftClusterClusterSecurityGroups (\s a -> s { _redshiftClusterClusterSecurityGroups = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clustersubnetgroupname
@@ -198,7 +199,7 @@
 rcElasticIp = lens _redshiftClusterElasticIp (\s a -> s { _redshiftClusterElasticIp = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-encrypted
-rcEncrypted :: Lens' RedshiftCluster (Maybe (Val Bool'))
+rcEncrypted :: Lens' RedshiftCluster (Maybe (Val Bool))
 rcEncrypted = lens _redshiftClusterEncrypted (\s a -> s { _redshiftClusterEncrypted = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-hsmclientcertidentifier
@@ -210,7 +211,7 @@
 rcHsmConfigurationIdentifier = lens _redshiftClusterHsmConfigurationIdentifier (\s a -> s { _redshiftClusterHsmConfigurationIdentifier = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-iamroles
-rcIamRoles :: Lens' RedshiftCluster (Maybe [Val Text])
+rcIamRoles :: Lens' RedshiftCluster (Maybe (ValList Text))
 rcIamRoles = lens _redshiftClusterIamRoles (\s a -> s { _redshiftClusterIamRoles = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-kmskeyid
@@ -234,7 +235,7 @@
 rcNodeType = lens _redshiftClusterNodeType (\s a -> s { _redshiftClusterNodeType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-nodetype
-rcNumberOfNodes :: Lens' RedshiftCluster (Maybe (Val Integer'))
+rcNumberOfNodes :: Lens' RedshiftCluster (Maybe (Val Integer))
 rcNumberOfNodes = lens _redshiftClusterNumberOfNodes (\s a -> s { _redshiftClusterNumberOfNodes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-owneraccount
@@ -242,7 +243,7 @@
 rcOwnerAccount = lens _redshiftClusterOwnerAccount (\s a -> s { _redshiftClusterOwnerAccount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-port
-rcPort :: Lens' RedshiftCluster (Maybe (Val Integer'))
+rcPort :: Lens' RedshiftCluster (Maybe (Val Integer))
 rcPort = lens _redshiftClusterPort (\s a -> s { _redshiftClusterPort = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-preferredmaintenancewindow
@@ -250,7 +251,7 @@
 rcPreferredMaintenanceWindow = lens _redshiftClusterPreferredMaintenanceWindow (\s a -> s { _redshiftClusterPreferredMaintenanceWindow = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-publiclyaccessible
-rcPubliclyAccessible :: Lens' RedshiftCluster (Maybe (Val Bool'))
+rcPubliclyAccessible :: Lens' RedshiftCluster (Maybe (Val Bool))
 rcPubliclyAccessible = lens _redshiftClusterPubliclyAccessible (\s a -> s { _redshiftClusterPubliclyAccessible = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-snapshotclusteridentifier
@@ -266,5 +267,5 @@
 rcTags = lens _redshiftClusterTags (\s a -> s { _redshiftClusterTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-vpcsecuritygroupids
-rcVpcSecurityGroupIds :: Lens' RedshiftCluster (Maybe [Val Text])
+rcVpcSecurityGroupIds :: Lens' RedshiftCluster (Maybe (ValList Text))
 rcVpcSecurityGroupIds = lens _redshiftClusterVpcSecurityGroupIds (\s a -> s { _redshiftClusterVpcSecurityGroupIds = a })
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterParameterGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html
 
@@ -29,19 +30,19 @@
   toJSON RedshiftClusterParameterGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _redshiftClusterParameterGroupDescription)
-    , Just ("ParameterGroupFamily" .= _redshiftClusterParameterGroupParameterGroupFamily)
-    , ("Parameters" .=) <$> _redshiftClusterParameterGroupParameters
-    , ("Tags" .=) <$> _redshiftClusterParameterGroupTags
+    [ (Just . ("Description",) . toJSON) _redshiftClusterParameterGroupDescription
+    , (Just . ("ParameterGroupFamily",) . toJSON) _redshiftClusterParameterGroupParameterGroupFamily
+    , fmap (("Parameters",) . toJSON) _redshiftClusterParameterGroupParameters
+    , fmap (("Tags",) . toJSON) _redshiftClusterParameterGroupTags
     ]
 
 instance FromJSON RedshiftClusterParameterGroup where
   parseJSON (Object obj) =
     RedshiftClusterParameterGroup <$>
-      obj .: "Description" <*>
-      obj .: "ParameterGroupFamily" <*>
-      obj .:? "Parameters" <*>
-      obj .:? "Tags"
+      (obj .: "Description") <*>
+      (obj .: "ParameterGroupFamily") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterParameterGroup' containing required
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html
 
@@ -26,15 +27,15 @@
   toJSON RedshiftClusterSecurityGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _redshiftClusterSecurityGroupDescription)
-    , ("Tags" .=) <$> _redshiftClusterSecurityGroupTags
+    [ (Just . ("Description",) . toJSON) _redshiftClusterSecurityGroupDescription
+    , fmap (("Tags",) . toJSON) _redshiftClusterSecurityGroupTags
     ]
 
 instance FromJSON RedshiftClusterSecurityGroup where
   parseJSON (Object obj) =
     RedshiftClusterSecurityGroup <$>
-      obj .: "Description" <*>
-      obj .:? "Tags"
+      (obj .: "Description") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterSecurityGroup' containing required fields
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSecurityGroupIngress.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html
 
@@ -28,19 +29,19 @@
   toJSON RedshiftClusterSecurityGroupIngress{..} =
     object $
     catMaybes
-    [ ("CIDRIP" .=) <$> _redshiftClusterSecurityGroupIngressCIDRIP
-    , Just ("ClusterSecurityGroupName" .= _redshiftClusterSecurityGroupIngressClusterSecurityGroupName)
-    , ("EC2SecurityGroupName" .=) <$> _redshiftClusterSecurityGroupIngressEC2SecurityGroupName
-    , ("EC2SecurityGroupOwnerId" .=) <$> _redshiftClusterSecurityGroupIngressEC2SecurityGroupOwnerId
+    [ fmap (("CIDRIP",) . toJSON) _redshiftClusterSecurityGroupIngressCIDRIP
+    , (Just . ("ClusterSecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressClusterSecurityGroupName
+    , fmap (("EC2SecurityGroupName",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupName
+    , fmap (("EC2SecurityGroupOwnerId",) . toJSON) _redshiftClusterSecurityGroupIngressEC2SecurityGroupOwnerId
     ]
 
 instance FromJSON RedshiftClusterSecurityGroupIngress where
   parseJSON (Object obj) =
     RedshiftClusterSecurityGroupIngress <$>
-      obj .:? "CIDRIP" <*>
-      obj .: "ClusterSecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupName" <*>
-      obj .:? "EC2SecurityGroupOwnerId"
+      (obj .:? "CIDRIP") <*>
+      (obj .: "ClusterSecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupName") <*>
+      (obj .:? "EC2SecurityGroupOwnerId")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterSecurityGroupIngress' containing required
diff --git a/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs b/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
--- a/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
+++ b/library-gen/Stratosphere/Resources/RedshiftClusterSubnetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html
 
@@ -19,7 +20,7 @@
 data RedshiftClusterSubnetGroup =
   RedshiftClusterSubnetGroup
   { _redshiftClusterSubnetGroupDescription :: Val Text
-  , _redshiftClusterSubnetGroupSubnetIds :: [Val Text]
+  , _redshiftClusterSubnetGroupSubnetIds :: ValList Text
   , _redshiftClusterSubnetGroupTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
@@ -27,24 +28,24 @@
   toJSON RedshiftClusterSubnetGroup{..} =
     object $
     catMaybes
-    [ Just ("Description" .= _redshiftClusterSubnetGroupDescription)
-    , Just ("SubnetIds" .= _redshiftClusterSubnetGroupSubnetIds)
-    , ("Tags" .=) <$> _redshiftClusterSubnetGroupTags
+    [ (Just . ("Description",) . toJSON) _redshiftClusterSubnetGroupDescription
+    , (Just . ("SubnetIds",) . toJSON) _redshiftClusterSubnetGroupSubnetIds
+    , fmap (("Tags",) . toJSON) _redshiftClusterSubnetGroupTags
     ]
 
 instance FromJSON RedshiftClusterSubnetGroup where
   parseJSON (Object obj) =
     RedshiftClusterSubnetGroup <$>
-      obj .: "Description" <*>
-      obj .: "SubnetIds" <*>
-      obj .:? "Tags"
+      (obj .: "Description") <*>
+      (obj .: "SubnetIds") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'RedshiftClusterSubnetGroup' containing required fields
 -- as arguments.
 redshiftClusterSubnetGroup
   :: Val Text -- ^ 'rcsugDescription'
-  -> [Val Text] -- ^ 'rcsugSubnetIds'
+  -> ValList Text -- ^ 'rcsugSubnetIds'
   -> RedshiftClusterSubnetGroup
 redshiftClusterSubnetGroup descriptionarg subnetIdsarg =
   RedshiftClusterSubnetGroup
@@ -58,7 +59,7 @@
 rcsugDescription = lens _redshiftClusterSubnetGroupDescription (\s a -> s { _redshiftClusterSubnetGroupDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html#cfn-redshift-clustersubnetgroup-subnetids
-rcsugSubnetIds :: Lens' RedshiftClusterSubnetGroup [Val Text]
+rcsugSubnetIds :: Lens' RedshiftClusterSubnetGroup (ValList Text)
 rcsugSubnetIds = lens _redshiftClusterSubnetGroupSubnetIds (\s a -> s { _redshiftClusterSubnetGroupSubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html#cfn-redshift-clustersubnetgroup-tags
diff --git a/library-gen/Stratosphere/Resources/Route53HealthCheck.hs b/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
--- a/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
+++ b/library-gen/Stratosphere/Resources/Route53HealthCheck.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html
 
@@ -27,15 +28,15 @@
   toJSON Route53HealthCheck{..} =
     object $
     catMaybes
-    [ Just ("HealthCheckConfig" .= _route53HealthCheckHealthCheckConfig)
-    , ("HealthCheckTags" .=) <$> _route53HealthCheckHealthCheckTags
+    [ (Just . ("HealthCheckConfig",) . toJSON) _route53HealthCheckHealthCheckConfig
+    , fmap (("HealthCheckTags",) . toJSON) _route53HealthCheckHealthCheckTags
     ]
 
 instance FromJSON Route53HealthCheck where
   parseJSON (Object obj) =
     Route53HealthCheck <$>
-      obj .: "HealthCheckConfig" <*>
-      obj .:? "HealthCheckTags"
+      (obj .: "HealthCheckConfig") <*>
+      (obj .:? "HealthCheckTags")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HealthCheck' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/Route53HostedZone.hs b/library-gen/Stratosphere/Resources/Route53HostedZone.hs
--- a/library-gen/Stratosphere/Resources/Route53HostedZone.hs
+++ b/library-gen/Stratosphere/Resources/Route53HostedZone.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
 
@@ -30,19 +31,19 @@
   toJSON Route53HostedZone{..} =
     object $
     catMaybes
-    [ ("HostedZoneConfig" .=) <$> _route53HostedZoneHostedZoneConfig
-    , ("HostedZoneTags" .=) <$> _route53HostedZoneHostedZoneTags
-    , Just ("Name" .= _route53HostedZoneName)
-    , ("VPCs" .=) <$> _route53HostedZoneVPCs
+    [ fmap (("HostedZoneConfig",) . toJSON) _route53HostedZoneHostedZoneConfig
+    , fmap (("HostedZoneTags",) . toJSON) _route53HostedZoneHostedZoneTags
+    , (Just . ("Name",) . toJSON) _route53HostedZoneName
+    , fmap (("VPCs",) . toJSON) _route53HostedZoneVPCs
     ]
 
 instance FromJSON Route53HostedZone where
   parseJSON (Object obj) =
     Route53HostedZone <$>
-      obj .:? "HostedZoneConfig" <*>
-      obj .:? "HostedZoneTags" <*>
-      obj .: "Name" <*>
-      obj .:? "VPCs"
+      (obj .:? "HostedZoneConfig") <*>
+      (obj .:? "HostedZoneTags") <*>
+      (obj .: "Name") <*>
+      (obj .:? "VPCs")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53HostedZone' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/Route53RecordSet.hs b/library-gen/Stratosphere/Resources/Route53RecordSet.hs
--- a/library-gen/Stratosphere/Resources/Route53RecordSet.hs
+++ b/library-gen/Stratosphere/Resources/Route53RecordSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
 
@@ -28,50 +29,50 @@
   , _route53RecordSetHostedZoneName :: Maybe (Val Text)
   , _route53RecordSetName :: Val Text
   , _route53RecordSetRegion :: Maybe (Val Text)
-  , _route53RecordSetResourceRecords :: Maybe [Val Text]
+  , _route53RecordSetResourceRecords :: Maybe (ValList Text)
   , _route53RecordSetSetIdentifier :: Maybe (Val Text)
   , _route53RecordSetTTL :: Maybe (Val Text)
   , _route53RecordSetType :: Val Text
-  , _route53RecordSetWeight :: Maybe (Val Integer')
+  , _route53RecordSetWeight :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON Route53RecordSet where
   toJSON Route53RecordSet{..} =
     object $
     catMaybes
-    [ ("AliasTarget" .=) <$> _route53RecordSetAliasTarget
-    , ("Comment" .=) <$> _route53RecordSetComment
-    , ("Failover" .=) <$> _route53RecordSetFailover
-    , ("GeoLocation" .=) <$> _route53RecordSetGeoLocation
-    , ("HealthCheckId" .=) <$> _route53RecordSetHealthCheckId
-    , ("HostedZoneId" .=) <$> _route53RecordSetHostedZoneId
-    , ("HostedZoneName" .=) <$> _route53RecordSetHostedZoneName
-    , Just ("Name" .= _route53RecordSetName)
-    , ("Region" .=) <$> _route53RecordSetRegion
-    , ("ResourceRecords" .=) <$> _route53RecordSetResourceRecords
-    , ("SetIdentifier" .=) <$> _route53RecordSetSetIdentifier
-    , ("TTL" .=) <$> _route53RecordSetTTL
-    , Just ("Type" .= _route53RecordSetType)
-    , ("Weight" .=) <$> _route53RecordSetWeight
+    [ fmap (("AliasTarget",) . toJSON) _route53RecordSetAliasTarget
+    , fmap (("Comment",) . toJSON) _route53RecordSetComment
+    , fmap (("Failover",) . toJSON) _route53RecordSetFailover
+    , fmap (("GeoLocation",) . toJSON) _route53RecordSetGeoLocation
+    , fmap (("HealthCheckId",) . toJSON) _route53RecordSetHealthCheckId
+    , fmap (("HostedZoneId",) . toJSON) _route53RecordSetHostedZoneId
+    , fmap (("HostedZoneName",) . toJSON) _route53RecordSetHostedZoneName
+    , (Just . ("Name",) . toJSON) _route53RecordSetName
+    , fmap (("Region",) . toJSON) _route53RecordSetRegion
+    , fmap (("ResourceRecords",) . toJSON) _route53RecordSetResourceRecords
+    , fmap (("SetIdentifier",) . toJSON) _route53RecordSetSetIdentifier
+    , fmap (("TTL",) . toJSON) _route53RecordSetTTL
+    , (Just . ("Type",) . toJSON) _route53RecordSetType
+    , fmap (("Weight",) . toJSON . fmap Integer') _route53RecordSetWeight
     ]
 
 instance FromJSON Route53RecordSet where
   parseJSON (Object obj) =
     Route53RecordSet <$>
-      obj .:? "AliasTarget" <*>
-      obj .:? "Comment" <*>
-      obj .:? "Failover" <*>
-      obj .:? "GeoLocation" <*>
-      obj .:? "HealthCheckId" <*>
-      obj .:? "HostedZoneId" <*>
-      obj .:? "HostedZoneName" <*>
-      obj .: "Name" <*>
-      obj .:? "Region" <*>
-      obj .:? "ResourceRecords" <*>
-      obj .:? "SetIdentifier" <*>
-      obj .:? "TTL" <*>
-      obj .: "Type" <*>
-      obj .:? "Weight"
+      (obj .:? "AliasTarget") <*>
+      (obj .:? "Comment") <*>
+      (obj .:? "Failover") <*>
+      (obj .:? "GeoLocation") <*>
+      (obj .:? "HealthCheckId") <*>
+      (obj .:? "HostedZoneId") <*>
+      (obj .:? "HostedZoneName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Region") <*>
+      (obj .:? "ResourceRecords") <*>
+      (obj .:? "SetIdentifier") <*>
+      (obj .:? "TTL") <*>
+      (obj .: "Type") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Weight")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSet' containing required fields as
@@ -135,7 +136,7 @@
 rrsRegion = lens _route53RecordSetRegion (\s a -> s { _route53RecordSetRegion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-resourcerecords
-rrsResourceRecords :: Lens' Route53RecordSet (Maybe [Val Text])
+rrsResourceRecords :: Lens' Route53RecordSet (Maybe (ValList Text))
 rrsResourceRecords = lens _route53RecordSetResourceRecords (\s a -> s { _route53RecordSetResourceRecords = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-setidentifier
@@ -151,5 +152,5 @@
 rrsType = lens _route53RecordSetType (\s a -> s { _route53RecordSetType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-weight
-rrsWeight :: Lens' Route53RecordSet (Maybe (Val Integer'))
+rrsWeight :: Lens' Route53RecordSet (Maybe (Val Integer))
 rrsWeight = lens _route53RecordSetWeight (\s a -> s { _route53RecordSetWeight = a })
diff --git a/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs b/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
--- a/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
+++ b/library-gen/Stratosphere/Resources/Route53RecordSetGroup.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html
 
@@ -28,19 +29,19 @@
   toJSON Route53RecordSetGroup{..} =
     object $
     catMaybes
-    [ ("Comment" .=) <$> _route53RecordSetGroupComment
-    , ("HostedZoneId" .=) <$> _route53RecordSetGroupHostedZoneId
-    , ("HostedZoneName" .=) <$> _route53RecordSetGroupHostedZoneName
-    , ("RecordSets" .=) <$> _route53RecordSetGroupRecordSets
+    [ fmap (("Comment",) . toJSON) _route53RecordSetGroupComment
+    , fmap (("HostedZoneId",) . toJSON) _route53RecordSetGroupHostedZoneId
+    , fmap (("HostedZoneName",) . toJSON) _route53RecordSetGroupHostedZoneName
+    , fmap (("RecordSets",) . toJSON) _route53RecordSetGroupRecordSets
     ]
 
 instance FromJSON Route53RecordSetGroup where
   parseJSON (Object obj) =
     Route53RecordSetGroup <$>
-      obj .:? "Comment" <*>
-      obj .:? "HostedZoneId" <*>
-      obj .:? "HostedZoneName" <*>
-      obj .:? "RecordSets"
+      (obj .:? "Comment") <*>
+      (obj .:? "HostedZoneId") <*>
+      (obj .:? "HostedZoneName") <*>
+      (obj .:? "RecordSets")
   parseJSON _ = mempty
 
 -- | Constructor for 'Route53RecordSetGroup' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/S3Bucket.hs b/library-gen/Stratosphere/Resources/S3Bucket.hs
--- a/library-gen/Stratosphere/Resources/S3Bucket.hs
+++ b/library-gen/Stratosphere/Resources/S3Bucket.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
 
@@ -42,31 +43,31 @@
   toJSON S3Bucket{..} =
     object $
     catMaybes
-    [ ("AccessControl" .=) <$> _s3BucketAccessControl
-    , ("BucketName" .=) <$> _s3BucketBucketName
-    , ("CorsConfiguration" .=) <$> _s3BucketCorsConfiguration
-    , ("LifecycleConfiguration" .=) <$> _s3BucketLifecycleConfiguration
-    , ("LoggingConfiguration" .=) <$> _s3BucketLoggingConfiguration
-    , ("NotificationConfiguration" .=) <$> _s3BucketNotificationConfiguration
-    , ("ReplicationConfiguration" .=) <$> _s3BucketReplicationConfiguration
-    , ("Tags" .=) <$> _s3BucketTags
-    , ("VersioningConfiguration" .=) <$> _s3BucketVersioningConfiguration
-    , ("WebsiteConfiguration" .=) <$> _s3BucketWebsiteConfiguration
+    [ fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
+    , fmap (("BucketName",) . toJSON) _s3BucketBucketName
+    , fmap (("CorsConfiguration",) . toJSON) _s3BucketCorsConfiguration
+    , fmap (("LifecycleConfiguration",) . toJSON) _s3BucketLifecycleConfiguration
+    , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
+    , fmap (("NotificationConfiguration",) . toJSON) _s3BucketNotificationConfiguration
+    , fmap (("ReplicationConfiguration",) . toJSON) _s3BucketReplicationConfiguration
+    , fmap (("Tags",) . toJSON) _s3BucketTags
+    , fmap (("VersioningConfiguration",) . toJSON) _s3BucketVersioningConfiguration
+    , fmap (("WebsiteConfiguration",) . toJSON) _s3BucketWebsiteConfiguration
     ]
 
 instance FromJSON S3Bucket where
   parseJSON (Object obj) =
     S3Bucket <$>
-      obj .:? "AccessControl" <*>
-      obj .:? "BucketName" <*>
-      obj .:? "CorsConfiguration" <*>
-      obj .:? "LifecycleConfiguration" <*>
-      obj .:? "LoggingConfiguration" <*>
-      obj .:? "NotificationConfiguration" <*>
-      obj .:? "ReplicationConfiguration" <*>
-      obj .:? "Tags" <*>
-      obj .:? "VersioningConfiguration" <*>
-      obj .:? "WebsiteConfiguration"
+      (obj .:? "AccessControl") <*>
+      (obj .:? "BucketName") <*>
+      (obj .:? "CorsConfiguration") <*>
+      (obj .:? "LifecycleConfiguration") <*>
+      (obj .:? "LoggingConfiguration") <*>
+      (obj .:? "NotificationConfiguration") <*>
+      (obj .:? "ReplicationConfiguration") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VersioningConfiguration") <*>
+      (obj .:? "WebsiteConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3Bucket' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/S3BucketPolicy.hs b/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
--- a/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
+++ b/library-gen/Stratosphere/Resources/S3BucketPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
 
@@ -26,15 +27,15 @@
   toJSON S3BucketPolicy{..} =
     object $
     catMaybes
-    [ Just ("Bucket" .= _s3BucketPolicyBucket)
-    , Just ("PolicyDocument" .= _s3BucketPolicyPolicyDocument)
+    [ (Just . ("Bucket",) . toJSON) _s3BucketPolicyBucket
+    , (Just . ("PolicyDocument",) . toJSON) _s3BucketPolicyPolicyDocument
     ]
 
 instance FromJSON S3BucketPolicy where
   parseJSON (Object obj) =
     S3BucketPolicy <$>
-      obj .: "Bucket" <*>
-      obj .: "PolicyDocument"
+      (obj .: "Bucket") <*>
+      (obj .: "PolicyDocument")
   parseJSON _ = mempty
 
 -- | Constructor for 'S3BucketPolicy' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SDBDomain.hs b/library-gen/Stratosphere/Resources/SDBDomain.hs
--- a/library-gen/Stratosphere/Resources/SDBDomain.hs
+++ b/library-gen/Stratosphere/Resources/SDBDomain.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html
 
@@ -25,13 +26,13 @@
   toJSON SDBDomain{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _sDBDomainDescription
+    [ fmap (("Description",) . toJSON) _sDBDomainDescription
     ]
 
 instance FromJSON SDBDomain where
   parseJSON (Object obj) =
     SDBDomain <$>
-      obj .:? "Description"
+      (obj .:? "Description")
   parseJSON _ = mempty
 
 -- | Constructor for 'SDBDomain' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SNSSubscription.hs b/library-gen/Stratosphere/Resources/SNSSubscription.hs
--- a/library-gen/Stratosphere/Resources/SNSSubscription.hs
+++ b/library-gen/Stratosphere/Resources/SNSSubscription.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html
 
@@ -27,17 +28,17 @@
   toJSON SNSSubscription{..} =
     object $
     catMaybes
-    [ ("Endpoint" .=) <$> _sNSSubscriptionEndpoint
-    , ("Protocol" .=) <$> _sNSSubscriptionProtocol
-    , ("TopicArn" .=) <$> _sNSSubscriptionTopicArn
+    [ fmap (("Endpoint",) . toJSON) _sNSSubscriptionEndpoint
+    , fmap (("Protocol",) . toJSON) _sNSSubscriptionProtocol
+    , fmap (("TopicArn",) . toJSON) _sNSSubscriptionTopicArn
     ]
 
 instance FromJSON SNSSubscription where
   parseJSON (Object obj) =
     SNSSubscription <$>
-      obj .:? "Endpoint" <*>
-      obj .:? "Protocol" <*>
-      obj .:? "TopicArn"
+      (obj .:? "Endpoint") <*>
+      (obj .:? "Protocol") <*>
+      (obj .:? "TopicArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'SNSSubscription' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/SNSTopic.hs b/library-gen/Stratosphere/Resources/SNSTopic.hs
--- a/library-gen/Stratosphere/Resources/SNSTopic.hs
+++ b/library-gen/Stratosphere/Resources/SNSTopic.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html
 
@@ -27,17 +28,17 @@
   toJSON SNSTopic{..} =
     object $
     catMaybes
-    [ ("DisplayName" .=) <$> _sNSTopicDisplayName
-    , ("Subscription" .=) <$> _sNSTopicSubscription
-    , ("TopicName" .=) <$> _sNSTopicTopicName
+    [ fmap (("DisplayName",) . toJSON) _sNSTopicDisplayName
+    , fmap (("Subscription",) . toJSON) _sNSTopicSubscription
+    , fmap (("TopicName",) . toJSON) _sNSTopicTopicName
     ]
 
 instance FromJSON SNSTopic where
   parseJSON (Object obj) =
     SNSTopic <$>
-      obj .:? "DisplayName" <*>
-      obj .:? "Subscription" <*>
-      obj .:? "TopicName"
+      (obj .:? "DisplayName") <*>
+      (obj .:? "Subscription") <*>
+      (obj .:? "TopicName")
   parseJSON _ = mempty
 
 -- | Constructor for 'SNSTopic' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs b/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
--- a/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
+++ b/library-gen/Stratosphere/Resources/SNSTopicPolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html
 
@@ -19,28 +20,28 @@
 data SNSTopicPolicy =
   SNSTopicPolicy
   { _sNSTopicPolicyPolicyDocument :: Object
-  , _sNSTopicPolicyTopics :: [Val Text]
+  , _sNSTopicPolicyTopics :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON SNSTopicPolicy where
   toJSON SNSTopicPolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _sNSTopicPolicyPolicyDocument)
-    , Just ("Topics" .= _sNSTopicPolicyTopics)
+    [ (Just . ("PolicyDocument",) . toJSON) _sNSTopicPolicyPolicyDocument
+    , (Just . ("Topics",) . toJSON) _sNSTopicPolicyTopics
     ]
 
 instance FromJSON SNSTopicPolicy where
   parseJSON (Object obj) =
     SNSTopicPolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .: "Topics"
+      (obj .: "PolicyDocument") <*>
+      (obj .: "Topics")
   parseJSON _ = mempty
 
 -- | Constructor for 'SNSTopicPolicy' containing required fields as arguments.
 snsTopicPolicy
   :: Object -- ^ 'snstpPolicyDocument'
-  -> [Val Text] -- ^ 'snstpTopics'
+  -> ValList Text -- ^ 'snstpTopics'
   -> SNSTopicPolicy
 snsTopicPolicy policyDocumentarg topicsarg =
   SNSTopicPolicy
@@ -53,5 +54,5 @@
 snstpPolicyDocument = lens _sNSTopicPolicyPolicyDocument (\s a -> s { _sNSTopicPolicyPolicyDocument = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html#cfn-sns-topicpolicy-topics
-snstpTopics :: Lens' SNSTopicPolicy [Val Text]
+snstpTopics :: Lens' SNSTopicPolicy (ValList Text)
 snstpTopics = lens _sNSTopicPolicyTopics (\s a -> s { _sNSTopicPolicyTopics = a })
diff --git a/library-gen/Stratosphere/Resources/SQSQueue.hs b/library-gen/Stratosphere/Resources/SQSQueue.hs
--- a/library-gen/Stratosphere/Resources/SQSQueue.hs
+++ b/library-gen/Stratosphere/Resources/SQSQueue.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
 
@@ -18,44 +19,44 @@
 -- convenient constructor.
 data SQSQueue =
   SQSQueue
-  { _sQSQueueContentBasedDeduplication :: Maybe (Val Bool')
-  , _sQSQueueDelaySeconds :: Maybe (Val Integer')
-  , _sQSQueueFifoQueue :: Maybe (Val Bool')
-  , _sQSQueueMaximumMessageSize :: Maybe (Val Integer')
-  , _sQSQueueMessageRetentionPeriod :: Maybe (Val Integer')
+  { _sQSQueueContentBasedDeduplication :: Maybe (Val Bool)
+  , _sQSQueueDelaySeconds :: Maybe (Val Integer)
+  , _sQSQueueFifoQueue :: Maybe (Val Bool)
+  , _sQSQueueMaximumMessageSize :: Maybe (Val Integer)
+  , _sQSQueueMessageRetentionPeriod :: Maybe (Val Integer)
   , _sQSQueueQueueName :: Maybe (Val Text)
-  , _sQSQueueReceiveMessageWaitTimeSeconds :: Maybe (Val Integer')
+  , _sQSQueueReceiveMessageWaitTimeSeconds :: Maybe (Val Integer)
   , _sQSQueueRedrivePolicy :: Maybe Object
-  , _sQSQueueVisibilityTimeout :: Maybe (Val Integer')
+  , _sQSQueueVisibilityTimeout :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToJSON SQSQueue where
   toJSON SQSQueue{..} =
     object $
     catMaybes
-    [ ("ContentBasedDeduplication" .=) <$> _sQSQueueContentBasedDeduplication
-    , ("DelaySeconds" .=) <$> _sQSQueueDelaySeconds
-    , ("FifoQueue" .=) <$> _sQSQueueFifoQueue
-    , ("MaximumMessageSize" .=) <$> _sQSQueueMaximumMessageSize
-    , ("MessageRetentionPeriod" .=) <$> _sQSQueueMessageRetentionPeriod
-    , ("QueueName" .=) <$> _sQSQueueQueueName
-    , ("ReceiveMessageWaitTimeSeconds" .=) <$> _sQSQueueReceiveMessageWaitTimeSeconds
-    , ("RedrivePolicy" .=) <$> _sQSQueueRedrivePolicy
-    , ("VisibilityTimeout" .=) <$> _sQSQueueVisibilityTimeout
+    [ fmap (("ContentBasedDeduplication",) . toJSON . fmap Bool') _sQSQueueContentBasedDeduplication
+    , fmap (("DelaySeconds",) . toJSON . fmap Integer') _sQSQueueDelaySeconds
+    , fmap (("FifoQueue",) . toJSON . fmap Bool') _sQSQueueFifoQueue
+    , fmap (("MaximumMessageSize",) . toJSON . fmap Integer') _sQSQueueMaximumMessageSize
+    , fmap (("MessageRetentionPeriod",) . toJSON . fmap Integer') _sQSQueueMessageRetentionPeriod
+    , fmap (("QueueName",) . toJSON) _sQSQueueQueueName
+    , fmap (("ReceiveMessageWaitTimeSeconds",) . toJSON . fmap Integer') _sQSQueueReceiveMessageWaitTimeSeconds
+    , fmap (("RedrivePolicy",) . toJSON) _sQSQueueRedrivePolicy
+    , fmap (("VisibilityTimeout",) . toJSON . fmap Integer') _sQSQueueVisibilityTimeout
     ]
 
 instance FromJSON SQSQueue where
   parseJSON (Object obj) =
     SQSQueue <$>
-      obj .:? "ContentBasedDeduplication" <*>
-      obj .:? "DelaySeconds" <*>
-      obj .:? "FifoQueue" <*>
-      obj .:? "MaximumMessageSize" <*>
-      obj .:? "MessageRetentionPeriod" <*>
-      obj .:? "QueueName" <*>
-      obj .:? "ReceiveMessageWaitTimeSeconds" <*>
-      obj .:? "RedrivePolicy" <*>
-      obj .:? "VisibilityTimeout"
+      fmap (fmap (fmap unBool')) (obj .:? "ContentBasedDeduplication") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DelaySeconds") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "FifoQueue") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaximumMessageSize") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MessageRetentionPeriod") <*>
+      (obj .:? "QueueName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ReceiveMessageWaitTimeSeconds") <*>
+      (obj .:? "RedrivePolicy") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "VisibilityTimeout")
   parseJSON _ = mempty
 
 -- | Constructor for 'SQSQueue' containing required fields as arguments.
@@ -75,23 +76,23 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-contentbaseddeduplication
-sqsqContentBasedDeduplication :: Lens' SQSQueue (Maybe (Val Bool'))
+sqsqContentBasedDeduplication :: Lens' SQSQueue (Maybe (Val Bool))
 sqsqContentBasedDeduplication = lens _sQSQueueContentBasedDeduplication (\s a -> s { _sQSQueueContentBasedDeduplication = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-delayseconds
-sqsqDelaySeconds :: Lens' SQSQueue (Maybe (Val Integer'))
+sqsqDelaySeconds :: Lens' SQSQueue (Maybe (Val Integer))
 sqsqDelaySeconds = lens _sQSQueueDelaySeconds (\s a -> s { _sQSQueueDelaySeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-fifoqueue
-sqsqFifoQueue :: Lens' SQSQueue (Maybe (Val Bool'))
+sqsqFifoQueue :: Lens' SQSQueue (Maybe (Val Bool))
 sqsqFifoQueue = lens _sQSQueueFifoQueue (\s a -> s { _sQSQueueFifoQueue = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-maxmesgsize
-sqsqMaximumMessageSize :: Lens' SQSQueue (Maybe (Val Integer'))
+sqsqMaximumMessageSize :: Lens' SQSQueue (Maybe (Val Integer))
 sqsqMaximumMessageSize = lens _sQSQueueMaximumMessageSize (\s a -> s { _sQSQueueMaximumMessageSize = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-msgretentionperiod
-sqsqMessageRetentionPeriod :: Lens' SQSQueue (Maybe (Val Integer'))
+sqsqMessageRetentionPeriod :: Lens' SQSQueue (Maybe (Val Integer))
 sqsqMessageRetentionPeriod = lens _sQSQueueMessageRetentionPeriod (\s a -> s { _sQSQueueMessageRetentionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-name
@@ -99,7 +100,7 @@
 sqsqQueueName = lens _sQSQueueQueueName (\s a -> s { _sQSQueueQueueName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-receivemsgwaittime
-sqsqReceiveMessageWaitTimeSeconds :: Lens' SQSQueue (Maybe (Val Integer'))
+sqsqReceiveMessageWaitTimeSeconds :: Lens' SQSQueue (Maybe (Val Integer))
 sqsqReceiveMessageWaitTimeSeconds = lens _sQSQueueReceiveMessageWaitTimeSeconds (\s a -> s { _sQSQueueReceiveMessageWaitTimeSeconds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-redrive
@@ -107,5 +108,5 @@
 sqsqRedrivePolicy = lens _sQSQueueRedrivePolicy (\s a -> s { _sQSQueueRedrivePolicy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-visiblitytimeout
-sqsqVisibilityTimeout :: Lens' SQSQueue (Maybe (Val Integer'))
+sqsqVisibilityTimeout :: Lens' SQSQueue (Maybe (Val Integer))
 sqsqVisibilityTimeout = lens _sQSQueueVisibilityTimeout (\s a -> s { _sQSQueueVisibilityTimeout = a })
diff --git a/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs b/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
--- a/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
+++ b/library-gen/Stratosphere/Resources/SQSQueuePolicy.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
 
@@ -19,28 +20,28 @@
 data SQSQueuePolicy =
   SQSQueuePolicy
   { _sQSQueuePolicyPolicyDocument :: Object
-  , _sQSQueuePolicyQueues :: [Val Text]
+  , _sQSQueuePolicyQueues :: ValList Text
   } deriving (Show, Eq)
 
 instance ToJSON SQSQueuePolicy where
   toJSON SQSQueuePolicy{..} =
     object $
     catMaybes
-    [ Just ("PolicyDocument" .= _sQSQueuePolicyPolicyDocument)
-    , Just ("Queues" .= _sQSQueuePolicyQueues)
+    [ (Just . ("PolicyDocument",) . toJSON) _sQSQueuePolicyPolicyDocument
+    , (Just . ("Queues",) . toJSON) _sQSQueuePolicyQueues
     ]
 
 instance FromJSON SQSQueuePolicy where
   parseJSON (Object obj) =
     SQSQueuePolicy <$>
-      obj .: "PolicyDocument" <*>
-      obj .: "Queues"
+      (obj .: "PolicyDocument") <*>
+      (obj .: "Queues")
   parseJSON _ = mempty
 
 -- | Constructor for 'SQSQueuePolicy' containing required fields as arguments.
 sqsQueuePolicy
   :: Object -- ^ 'sqsqpPolicyDocument'
-  -> [Val Text] -- ^ 'sqsqpQueues'
+  -> ValList Text -- ^ 'sqsqpQueues'
   -> SQSQueuePolicy
 sqsQueuePolicy policyDocumentarg queuesarg =
   SQSQueuePolicy
@@ -53,5 +54,5 @@
 sqsqpPolicyDocument = lens _sQSQueuePolicyPolicyDocument (\s a -> s { _sQSQueuePolicyPolicyDocument = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-queues
-sqsqpQueues :: Lens' SQSQueuePolicy [Val Text]
+sqsqpQueues :: Lens' SQSQueuePolicy (ValList Text)
 sqsqpQueues = lens _sQSQueuePolicyQueues (\s a -> s { _sQSQueuePolicyQueues = a })
diff --git a/library-gen/Stratosphere/Resources/SSMAssociation.hs b/library-gen/Stratosphere/Resources/SSMAssociation.hs
--- a/library-gen/Stratosphere/Resources/SSMAssociation.hs
+++ b/library-gen/Stratosphere/Resources/SSMAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html
 
@@ -31,23 +32,23 @@
   toJSON SSMAssociation{..} =
     object $
     catMaybes
-    [ ("DocumentVersion" .=) <$> _sSMAssociationDocumentVersion
-    , ("InstanceId" .=) <$> _sSMAssociationInstanceId
-    , Just ("Name" .= _sSMAssociationName)
-    , ("Parameters" .=) <$> _sSMAssociationParameters
-    , ("ScheduleExpression" .=) <$> _sSMAssociationScheduleExpression
-    , ("Targets" .=) <$> _sSMAssociationTargets
+    [ fmap (("DocumentVersion",) . toJSON) _sSMAssociationDocumentVersion
+    , fmap (("InstanceId",) . toJSON) _sSMAssociationInstanceId
+    , (Just . ("Name",) . toJSON) _sSMAssociationName
+    , fmap (("Parameters",) . toJSON) _sSMAssociationParameters
+    , fmap (("ScheduleExpression",) . toJSON) _sSMAssociationScheduleExpression
+    , fmap (("Targets",) . toJSON) _sSMAssociationTargets
     ]
 
 instance FromJSON SSMAssociation where
   parseJSON (Object obj) =
     SSMAssociation <$>
-      obj .:? "DocumentVersion" <*>
-      obj .:? "InstanceId" <*>
-      obj .: "Name" <*>
-      obj .:? "Parameters" <*>
-      obj .:? "ScheduleExpression" <*>
-      obj .:? "Targets"
+      (obj .:? "DocumentVersion") <*>
+      (obj .:? "InstanceId") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "ScheduleExpression") <*>
+      (obj .:? "Targets")
   parseJSON _ = mempty
 
 -- | Constructor for 'SSMAssociation' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SSMDocument.hs b/library-gen/Stratosphere/Resources/SSMDocument.hs
--- a/library-gen/Stratosphere/Resources/SSMDocument.hs
+++ b/library-gen/Stratosphere/Resources/SSMDocument.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html
 
@@ -26,15 +27,15 @@
   toJSON SSMDocument{..} =
     object $
     catMaybes
-    [ Just ("Content" .= _sSMDocumentContent)
-    , ("DocumentType" .=) <$> _sSMDocumentDocumentType
+    [ (Just . ("Content",) . toJSON) _sSMDocumentContent
+    , fmap (("DocumentType",) . toJSON) _sSMDocumentDocumentType
     ]
 
 instance FromJSON SSMDocument where
   parseJSON (Object obj) =
     SSMDocument <$>
-      obj .: "Content" <*>
-      obj .:? "DocumentType"
+      (obj .: "Content") <*>
+      (obj .:? "DocumentType")
   parseJSON _ = mempty
 
 -- | Constructor for 'SSMDocument' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/SSMParameter.hs b/library-gen/Stratosphere/Resources/SSMParameter.hs
--- a/library-gen/Stratosphere/Resources/SSMParameter.hs
+++ b/library-gen/Stratosphere/Resources/SSMParameter.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html
 
@@ -28,19 +29,19 @@
   toJSON SSMParameter{..} =
     object $
     catMaybes
-    [ ("Description" .=) <$> _sSMParameterDescription
-    , ("Name" .=) <$> _sSMParameterName
-    , Just ("Type" .= _sSMParameterType)
-    , Just ("Value" .= _sSMParameterValue)
+    [ fmap (("Description",) . toJSON) _sSMParameterDescription
+    , fmap (("Name",) . toJSON) _sSMParameterName
+    , (Just . ("Type",) . toJSON) _sSMParameterType
+    , (Just . ("Value",) . toJSON) _sSMParameterValue
     ]
 
 instance FromJSON SSMParameter where
   parseJSON (Object obj) =
     SSMParameter <$>
-      obj .:? "Description" <*>
-      obj .:? "Name" <*>
-      obj .: "Type" <*>
-      obj .: "Value"
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .: "Type") <*>
+      (obj .: "Value")
   parseJSON _ = mempty
 
 -- | Constructor for 'SSMParameter' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs b/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
--- a/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
+++ b/library-gen/Stratosphere/Resources/StepFunctionsActivity.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html
 
@@ -25,13 +26,13 @@
   toJSON StepFunctionsActivity{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _stepFunctionsActivityName)
+    [ (Just . ("Name",) . toJSON) _stepFunctionsActivityName
     ]
 
 instance FromJSON StepFunctionsActivity where
   parseJSON (Object obj) =
     StepFunctionsActivity <$>
-      obj .: "Name"
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'StepFunctionsActivity' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs b/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
--- a/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
+++ b/library-gen/Stratosphere/Resources/StepFunctionsStateMachine.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html
 
@@ -26,15 +27,15 @@
   toJSON StepFunctionsStateMachine{..} =
     object $
     catMaybes
-    [ Just ("DefinitionString" .= _stepFunctionsStateMachineDefinitionString)
-    , Just ("RoleArn" .= _stepFunctionsStateMachineRoleArn)
+    [ (Just . ("DefinitionString",) . toJSON) _stepFunctionsStateMachineDefinitionString
+    , (Just . ("RoleArn",) . toJSON) _stepFunctionsStateMachineRoleArn
     ]
 
 instance FromJSON StepFunctionsStateMachine where
   parseJSON (Object obj) =
     StepFunctionsStateMachine <$>
-      obj .: "DefinitionString" <*>
-      obj .: "RoleArn"
+      (obj .: "DefinitionString") <*>
+      (obj .: "RoleArn")
   parseJSON _ = mempty
 
 -- | Constructor for 'StepFunctionsStateMachine' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs b/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFByteMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFByteMatchSet{..} =
     object $
     catMaybes
-    [ ("ByteMatchTuples" .=) <$> _wAFByteMatchSetByteMatchTuples
-    , Just ("Name" .= _wAFByteMatchSetName)
+    [ fmap (("ByteMatchTuples",) . toJSON) _wAFByteMatchSetByteMatchTuples
+    , (Just . ("Name",) . toJSON) _wAFByteMatchSetName
     ]
 
 instance FromJSON WAFByteMatchSet where
   parseJSON (Object obj) =
     WAFByteMatchSet <$>
-      obj .:? "ByteMatchTuples" <*>
-      obj .: "Name"
+      (obj .:? "ByteMatchTuples") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFByteMatchSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFIPSet.hs b/library-gen/Stratosphere/Resources/WAFIPSet.hs
--- a/library-gen/Stratosphere/Resources/WAFIPSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFIPSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFIPSet{..} =
     object $
     catMaybes
-    [ ("IPSetDescriptors" .=) <$> _wAFIPSetIPSetDescriptors
-    , Just ("Name" .= _wAFIPSetName)
+    [ fmap (("IPSetDescriptors",) . toJSON) _wAFIPSetIPSetDescriptors
+    , (Just . ("Name",) . toJSON) _wAFIPSetName
     ]
 
 instance FromJSON WAFIPSet where
   parseJSON (Object obj) =
     WAFIPSet <$>
-      obj .:? "IPSetDescriptors" <*>
-      obj .: "Name"
+      (obj .:? "IPSetDescriptors") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFIPSet' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalByteMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalByteMatchSet{..} =
     object $
     catMaybes
-    [ ("ByteMatchTuples" .=) <$> _wAFRegionalByteMatchSetByteMatchTuples
-    , Just ("Name" .= _wAFRegionalByteMatchSetName)
+    [ fmap (("ByteMatchTuples",) . toJSON) _wAFRegionalByteMatchSetByteMatchTuples
+    , (Just . ("Name",) . toJSON) _wAFRegionalByteMatchSetName
     ]
 
 instance FromJSON WAFRegionalByteMatchSet where
   parseJSON (Object obj) =
     WAFRegionalByteMatchSet <$>
-      obj .:? "ByteMatchTuples" <*>
-      obj .: "Name"
+      (obj .:? "ByteMatchTuples") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalByteMatchSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalIPSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalIPSet{..} =
     object $
     catMaybes
-    [ ("IPSetDescriptors" .=) <$> _wAFRegionalIPSetIPSetDescriptors
-    , Just ("Name" .= _wAFRegionalIPSetName)
+    [ fmap (("IPSetDescriptors",) . toJSON) _wAFRegionalIPSetIPSetDescriptors
+    , (Just . ("Name",) . toJSON) _wAFRegionalIPSetName
     ]
 
 instance FromJSON WAFRegionalIPSet where
   parseJSON (Object obj) =
     WAFRegionalIPSet <$>
-      obj .:? "IPSetDescriptors" <*>
-      obj .: "Name"
+      (obj .:? "IPSetDescriptors") <*>
+      (obj .: "Name")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalIPSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalRule.hs b/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html
 
@@ -27,17 +28,17 @@
   toJSON WAFRegionalRule{..} =
     object $
     catMaybes
-    [ Just ("MetricName" .= _wAFRegionalRuleMetricName)
-    , Just ("Name" .= _wAFRegionalRuleName)
-    , ("Predicates" .=) <$> _wAFRegionalRulePredicates
+    [ (Just . ("MetricName",) . toJSON) _wAFRegionalRuleMetricName
+    , (Just . ("Name",) . toJSON) _wAFRegionalRuleName
+    , fmap (("Predicates",) . toJSON) _wAFRegionalRulePredicates
     ]
 
 instance FromJSON WAFRegionalRule where
   parseJSON (Object obj) =
     WAFRegionalRule <$>
-      obj .: "MetricName" <*>
-      obj .: "Name" <*>
-      obj .:? "Predicates"
+      (obj .: "MetricName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Predicates")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalRule' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalSizeConstraintSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalSizeConstraintSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFRegionalSizeConstraintSetName)
-    , ("SizeConstraints" .=) <$> _wAFRegionalSizeConstraintSetSizeConstraints
+    [ (Just . ("Name",) . toJSON) _wAFRegionalSizeConstraintSetName
+    , fmap (("SizeConstraints",) . toJSON) _wAFRegionalSizeConstraintSetSizeConstraints
     ]
 
 instance FromJSON WAFRegionalSizeConstraintSet where
   parseJSON (Object obj) =
     WAFRegionalSizeConstraintSet <$>
-      obj .: "Name" <*>
-      obj .:? "SizeConstraints"
+      (obj .: "Name") <*>
+      (obj .:? "SizeConstraints")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSizeConstraintSet' containing required fields
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalSqlInjectionMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalSqlInjectionMatchSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFRegionalSqlInjectionMatchSetName)
-    , ("SqlInjectionMatchTuples" .=) <$> _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuples
+    [ (Just . ("Name",) . toJSON) _wAFRegionalSqlInjectionMatchSetName
+    , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFRegionalSqlInjectionMatchSetSqlInjectionMatchTuples
     ]
 
 instance FromJSON WAFRegionalSqlInjectionMatchSet where
   parseJSON (Object obj) =
     WAFRegionalSqlInjectionMatchSet <$>
-      obj .: "Name" <*>
-      obj .:? "SqlInjectionMatchTuples"
+      (obj .: "Name") <*>
+      (obj .:? "SqlInjectionMatchTuples")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalSqlInjectionMatchSet' containing required
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs b/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalWebACL.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html
 
@@ -29,19 +30,19 @@
   toJSON WAFRegionalWebACL{..} =
     object $
     catMaybes
-    [ Just ("DefaultAction" .= _wAFRegionalWebACLDefaultAction)
-    , Just ("MetricName" .= _wAFRegionalWebACLMetricName)
-    , Just ("Name" .= _wAFRegionalWebACLName)
-    , ("Rules" .=) <$> _wAFRegionalWebACLRules
+    [ (Just . ("DefaultAction",) . toJSON) _wAFRegionalWebACLDefaultAction
+    , (Just . ("MetricName",) . toJSON) _wAFRegionalWebACLMetricName
+    , (Just . ("Name",) . toJSON) _wAFRegionalWebACLName
+    , fmap (("Rules",) . toJSON) _wAFRegionalWebACLRules
     ]
 
 instance FromJSON WAFRegionalWebACL where
   parseJSON (Object obj) =
     WAFRegionalWebACL <$>
-      obj .: "DefaultAction" <*>
-      obj .: "MetricName" <*>
-      obj .: "Name" <*>
-      obj .:? "Rules"
+      (obj .: "DefaultAction") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalWebACL' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs b/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalWebACLAssociation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalWebACLAssociation{..} =
     object $
     catMaybes
-    [ Just ("ResourceArn" .= _wAFRegionalWebACLAssociationResourceArn)
-    , Just ("WebACLId" .= _wAFRegionalWebACLAssociationWebACLId)
+    [ (Just . ("ResourceArn",) . toJSON) _wAFRegionalWebACLAssociationResourceArn
+    , (Just . ("WebACLId",) . toJSON) _wAFRegionalWebACLAssociationWebACLId
     ]
 
 instance FromJSON WAFRegionalWebACLAssociation where
   parseJSON (Object obj) =
     WAFRegionalWebACLAssociation <$>
-      obj .: "ResourceArn" <*>
-      obj .: "WebACLId"
+      (obj .: "ResourceArn") <*>
+      (obj .: "WebACLId")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalWebACLAssociation' containing required fields
diff --git a/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs b/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFRegionalXssMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFRegionalXssMatchSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFRegionalXssMatchSetName)
-    , ("XssMatchTuples" .=) <$> _wAFRegionalXssMatchSetXssMatchTuples
+    [ (Just . ("Name",) . toJSON) _wAFRegionalXssMatchSetName
+    , fmap (("XssMatchTuples",) . toJSON) _wAFRegionalXssMatchSetXssMatchTuples
     ]
 
 instance FromJSON WAFRegionalXssMatchSet where
   parseJSON (Object obj) =
     WAFRegionalXssMatchSet <$>
-      obj .: "Name" <*>
-      obj .:? "XssMatchTuples"
+      (obj .: "Name") <*>
+      (obj .:? "XssMatchTuples")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRegionalXssMatchSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFRule.hs b/library-gen/Stratosphere/Resources/WAFRule.hs
--- a/library-gen/Stratosphere/Resources/WAFRule.hs
+++ b/library-gen/Stratosphere/Resources/WAFRule.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html
 
@@ -27,17 +28,17 @@
   toJSON WAFRule{..} =
     object $
     catMaybes
-    [ Just ("MetricName" .= _wAFRuleMetricName)
-    , Just ("Name" .= _wAFRuleName)
-    , ("Predicates" .=) <$> _wAFRulePredicates
+    [ (Just . ("MetricName",) . toJSON) _wAFRuleMetricName
+    , (Just . ("Name",) . toJSON) _wAFRuleName
+    , fmap (("Predicates",) . toJSON) _wAFRulePredicates
     ]
 
 instance FromJSON WAFRule where
   parseJSON (Object obj) =
     WAFRule <$>
-      obj .: "MetricName" <*>
-      obj .: "Name" <*>
-      obj .:? "Predicates"
+      (obj .: "MetricName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Predicates")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFRule' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs b/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
--- a/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFSizeConstraintSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFSizeConstraintSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFSizeConstraintSetName)
-    , Just ("SizeConstraints" .= _wAFSizeConstraintSetSizeConstraints)
+    [ (Just . ("Name",) . toJSON) _wAFSizeConstraintSetName
+    , (Just . ("SizeConstraints",) . toJSON) _wAFSizeConstraintSetSizeConstraints
     ]
 
 instance FromJSON WAFSizeConstraintSet where
   parseJSON (Object obj) =
     WAFSizeConstraintSet <$>
-      obj .: "Name" <*>
-      obj .: "SizeConstraints"
+      (obj .: "Name") <*>
+      (obj .: "SizeConstraints")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSizeConstraintSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs b/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFSqlInjectionMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFSqlInjectionMatchSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFSqlInjectionMatchSetName)
-    , ("SqlInjectionMatchTuples" .=) <$> _wAFSqlInjectionMatchSetSqlInjectionMatchTuples
+    [ (Just . ("Name",) . toJSON) _wAFSqlInjectionMatchSetName
+    , fmap (("SqlInjectionMatchTuples",) . toJSON) _wAFSqlInjectionMatchSetSqlInjectionMatchTuples
     ]
 
 instance FromJSON WAFSqlInjectionMatchSet where
   parseJSON (Object obj) =
     WAFSqlInjectionMatchSet <$>
-      obj .: "Name" <*>
-      obj .:? "SqlInjectionMatchTuples"
+      (obj .: "Name") <*>
+      (obj .:? "SqlInjectionMatchTuples")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFSqlInjectionMatchSet' containing required fields as
diff --git a/library-gen/Stratosphere/Resources/WAFWebACL.hs b/library-gen/Stratosphere/Resources/WAFWebACL.hs
--- a/library-gen/Stratosphere/Resources/WAFWebACL.hs
+++ b/library-gen/Stratosphere/Resources/WAFWebACL.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html
 
@@ -29,19 +30,19 @@
   toJSON WAFWebACL{..} =
     object $
     catMaybes
-    [ Just ("DefaultAction" .= _wAFWebACLDefaultAction)
-    , Just ("MetricName" .= _wAFWebACLMetricName)
-    , Just ("Name" .= _wAFWebACLName)
-    , ("Rules" .=) <$> _wAFWebACLRules
+    [ (Just . ("DefaultAction",) . toJSON) _wAFWebACLDefaultAction
+    , (Just . ("MetricName",) . toJSON) _wAFWebACLMetricName
+    , (Just . ("Name",) . toJSON) _wAFWebACLName
+    , fmap (("Rules",) . toJSON) _wAFWebACLRules
     ]
 
 instance FromJSON WAFWebACL where
   parseJSON (Object obj) =
     WAFWebACL <$>
-      obj .: "DefaultAction" <*>
-      obj .: "MetricName" <*>
-      obj .: "Name" <*>
-      obj .:? "Rules"
+      (obj .: "DefaultAction") <*>
+      (obj .: "MetricName") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Rules")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFWebACL' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs b/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
--- a/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
+++ b/library-gen/Stratosphere/Resources/WAFXssMatchSet.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html
 
@@ -26,15 +27,15 @@
   toJSON WAFXssMatchSet{..} =
     object $
     catMaybes
-    [ Just ("Name" .= _wAFXssMatchSetName)
-    , Just ("XssMatchTuples" .= _wAFXssMatchSetXssMatchTuples)
+    [ (Just . ("Name",) . toJSON) _wAFXssMatchSetName
+    , (Just . ("XssMatchTuples",) . toJSON) _wAFXssMatchSetXssMatchTuples
     ]
 
 instance FromJSON WAFXssMatchSet where
   parseJSON (Object obj) =
     WAFXssMatchSet <$>
-      obj .: "Name" <*>
-      obj .: "XssMatchTuples"
+      (obj .: "Name") <*>
+      (obj .: "XssMatchTuples")
   parseJSON _ = mempty
 
 -- | Constructor for 'WAFXssMatchSet' containing required fields as arguments.
diff --git a/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs b/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
--- a/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
+++ b/library-gen/Stratosphere/Resources/WorkSpacesWorkspace.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html
 
@@ -20,9 +21,9 @@
   WorkSpacesWorkspace
   { _workSpacesWorkspaceBundleId :: Val Text
   , _workSpacesWorkspaceDirectoryId :: Val Text
-  , _workSpacesWorkspaceRootVolumeEncryptionEnabled :: Maybe (Val Bool')
+  , _workSpacesWorkspaceRootVolumeEncryptionEnabled :: Maybe (Val Bool)
   , _workSpacesWorkspaceUserName :: Val Text
-  , _workSpacesWorkspaceUserVolumeEncryptionEnabled :: Maybe (Val Bool')
+  , _workSpacesWorkspaceUserVolumeEncryptionEnabled :: Maybe (Val Bool)
   , _workSpacesWorkspaceVolumeEncryptionKey :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -30,23 +31,23 @@
   toJSON WorkSpacesWorkspace{..} =
     object $
     catMaybes
-    [ Just ("BundleId" .= _workSpacesWorkspaceBundleId)
-    , Just ("DirectoryId" .= _workSpacesWorkspaceDirectoryId)
-    , ("RootVolumeEncryptionEnabled" .=) <$> _workSpacesWorkspaceRootVolumeEncryptionEnabled
-    , Just ("UserName" .= _workSpacesWorkspaceUserName)
-    , ("UserVolumeEncryptionEnabled" .=) <$> _workSpacesWorkspaceUserVolumeEncryptionEnabled
-    , ("VolumeEncryptionKey" .=) <$> _workSpacesWorkspaceVolumeEncryptionKey
+    [ (Just . ("BundleId",) . toJSON) _workSpacesWorkspaceBundleId
+    , (Just . ("DirectoryId",) . toJSON) _workSpacesWorkspaceDirectoryId
+    , fmap (("RootVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceRootVolumeEncryptionEnabled
+    , (Just . ("UserName",) . toJSON) _workSpacesWorkspaceUserName
+    , fmap (("UserVolumeEncryptionEnabled",) . toJSON . fmap Bool') _workSpacesWorkspaceUserVolumeEncryptionEnabled
+    , fmap (("VolumeEncryptionKey",) . toJSON) _workSpacesWorkspaceVolumeEncryptionKey
     ]
 
 instance FromJSON WorkSpacesWorkspace where
   parseJSON (Object obj) =
     WorkSpacesWorkspace <$>
-      obj .: "BundleId" <*>
-      obj .: "DirectoryId" <*>
-      obj .:? "RootVolumeEncryptionEnabled" <*>
-      obj .: "UserName" <*>
-      obj .:? "UserVolumeEncryptionEnabled" <*>
-      obj .:? "VolumeEncryptionKey"
+      (obj .: "BundleId") <*>
+      (obj .: "DirectoryId") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RootVolumeEncryptionEnabled") <*>
+      (obj .: "UserName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UserVolumeEncryptionEnabled") <*>
+      (obj .:? "VolumeEncryptionKey")
   parseJSON _ = mempty
 
 -- | Constructor for 'WorkSpacesWorkspace' containing required fields as
@@ -75,7 +76,7 @@
 wswDirectoryId = lens _workSpacesWorkspaceDirectoryId (\s a -> s { _workSpacesWorkspaceDirectoryId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-rootvolumeencryptionenabled
-wswRootVolumeEncryptionEnabled :: Lens' WorkSpacesWorkspace (Maybe (Val Bool'))
+wswRootVolumeEncryptionEnabled :: Lens' WorkSpacesWorkspace (Maybe (Val Bool))
 wswRootVolumeEncryptionEnabled = lens _workSpacesWorkspaceRootVolumeEncryptionEnabled (\s a -> s { _workSpacesWorkspaceRootVolumeEncryptionEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-username
@@ -83,7 +84,7 @@
 wswUserName = lens _workSpacesWorkspaceUserName (\s a -> s { _workSpacesWorkspaceUserName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-uservolumeencryptionenabled
-wswUserVolumeEncryptionEnabled :: Lens' WorkSpacesWorkspace (Maybe (Val Bool'))
+wswUserVolumeEncryptionEnabled :: Lens' WorkSpacesWorkspace (Maybe (Val Bool))
 wswUserVolumeEncryptionEnabled = lens _workSpacesWorkspaceUserVolumeEncryptionEnabled (\s a -> s { _workSpacesWorkspaceUserVolumeEncryptionEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-volumeencryptionkey
diff --git a/library/Stratosphere/Parameters.hs b/library/Stratosphere/Parameters.hs
--- a/library/Stratosphere/Parameters.hs
+++ b/library/Stratosphere/Parameters.hs
@@ -49,16 +49,16 @@
   , parameterAllowedPattern :: Maybe T.Text
     -- ^ A regular expression that represents the patterns you want to allow
     -- for String types.
-  , parameterMaxLength :: Maybe Integer'
+  , parameterMaxLength :: Maybe Integer
     -- ^ An integer value that determines the largest number of characters you
     -- want to allow for String types.
-  , parameterMinLength :: Maybe Integer'
+  , parameterMinLength :: Maybe Integer
     -- ^ An integer value that determines the smallest number of characters you
     -- want to allow for String types.
-  , parameterMaxValue :: Maybe Integer'
+  , parameterMaxValue :: Maybe Integer
     -- ^ A numeric value that determines the largest numeric value you want to
     -- allow for Number types.
-  , parameterMinValue :: Maybe Integer'
+  , parameterMinValue :: Maybe Integer
     -- ^ A numeric value that determines the smallest numeric value you want to
     -- allow for Number types.
   , parameterDescription :: Maybe T.Text
@@ -80,10 +80,10 @@
   , maybeField "NoEcho" parameterNoEcho
   , maybeField "AllowedValues" parameterAllowedValues
   , maybeField "AllowedPattern" parameterAllowedPattern
-  , maybeField "MaxLength" parameterMaxLength
-  , maybeField "MinLength" parameterMinLength
-  , maybeField "MaxValue" parameterMaxValue
-  , maybeField "MinValue" parameterMinValue
+  , maybeField "MaxLength" (Integer' <$> parameterMaxLength)
+  , maybeField "MinLength" (Integer' <$> parameterMinLength)
+  , maybeField "MaxValue" (Integer' <$> parameterMaxValue)
+  , maybeField "MinValue" (Integer' <$> parameterMinValue)
   , maybeField "Description" parameterDescription
   , maybeField "ConstraintDescription" parameterConstraintDescription
   ]
@@ -96,10 +96,10 @@
   <*> o .:? "NoEcho"
   <*> o .:? "AllowedValues"
   <*> o .:? "AllowedPattern"
-  <*> o .:? "MaxLength"
-  <*> o .:? "MinLength"
-  <*> o .:? "MaxValue"
-  <*> o .:? "MinValue"
+  <*> fmap (fmap unInteger') (o .:? "MaxLength")
+  <*> fmap (fmap unInteger') (o .:? "MinLength")
+  <*> fmap (fmap unInteger') (o .:? "MaxValue")
+  <*> fmap (fmap unInteger') (o .:? "MinValue")
   <*> o .:? "Description"
   <*> o .:? "ConstraintDescription"
 
diff --git a/library/Stratosphere/ResourceAttributes/AutoScalingReplacingUpdatePolicy.hs b/library/Stratosphere/ResourceAttributes/AutoScalingReplacingUpdatePolicy.hs
--- a/library/Stratosphere/ResourceAttributes/AutoScalingReplacingUpdatePolicy.hs
+++ b/library/Stratosphere/ResourceAttributes/AutoScalingReplacingUpdatePolicy.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | To specify how AWS CloudFormation handles replacing updates for an Auto
 -- Scaling group, use the AutoScalingReplacingUpdate policy.
@@ -8,9 +9,8 @@
 
 import Control.Lens
 import Data.Aeson
-import Data.Aeson.Types
+import Data.Maybe (catMaybes)
 import Data.Text
-import GHC.Generics
 
 import Stratosphere.Values
 
@@ -19,14 +19,21 @@
 -- 'autoScalingReplacingUpdatePolicy' for a more convenient constructor.
 data AutoScalingReplacingUpdatePolicy =
   AutoScalingReplacingUpdatePolicy
-  { _autoScalingReplacingUpdatePolicyWillReplace :: Maybe (Val Bool')
-  } deriving (Show, Eq, Generic)
+  { _autoScalingReplacingUpdatePolicyWillReplace :: Maybe (Val Bool)
+  } deriving (Show, Eq)
 
 instance ToJSON AutoScalingReplacingUpdatePolicy where
-  toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 33, omitNothingFields = True }
+  toJSON AutoScalingReplacingUpdatePolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("WillReplace",) . toJSON . fmap Bool') _autoScalingReplacingUpdatePolicyWillReplace
+    ]
 
 instance FromJSON AutoScalingReplacingUpdatePolicy where
-  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 33, omitNothingFields = True }
+  parseJSON (Object obj) =
+    AutoScalingReplacingUpdatePolicy <$>
+      fmap (fmap (fmap unBool')) (obj .:? "WillReplace")
+  parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingReplacingUpdatePolicy' containing required fields
 -- as arguments.
@@ -46,5 +53,5 @@
 -- AWS CloudFormation removes the old Auto Scaling group during the cleanup
 -- process. If the update doesn't succeed, AWS CloudFormation removes the new
 -- Auto Scaling group.
-asrupWillReplace :: Lens' AutoScalingReplacingUpdatePolicy (Maybe (Val Bool'))
+asrupWillReplace :: Lens' AutoScalingReplacingUpdatePolicy (Maybe (Val Bool))
 asrupWillReplace = lens _autoScalingReplacingUpdatePolicyWillReplace (\s a -> s { _autoScalingReplacingUpdatePolicyWillReplace = a })
diff --git a/library/Stratosphere/ResourceAttributes/AutoScalingRollingUpdatePolicy.hs b/library/Stratosphere/ResourceAttributes/AutoScalingRollingUpdatePolicy.hs
--- a/library/Stratosphere/ResourceAttributes/AutoScalingRollingUpdatePolicy.hs
+++ b/library/Stratosphere/ResourceAttributes/AutoScalingRollingUpdatePolicy.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | To specify how AWS CloudFormation handles rolling updates for an Auto
 -- Scaling group, use the AutoScalingRollingUpdatePolicy policy.
@@ -8,9 +9,8 @@
 
 import Control.Lens
 import Data.Aeson
-import Data.Aeson.Types
+import Data.Maybe (catMaybes)
 import Data.Text
-import GHC.Generics
 
 import Stratosphere.Values
 
@@ -19,19 +19,36 @@
 -- 'autoScalingRollingUpdatePolicy' for a more convenient constructor.
 data AutoScalingRollingUpdatePolicy =
   AutoScalingRollingUpdatePolicy
-  { _autoScalingRollingUpdatePolicyMaxBatchSize :: Maybe (Val Integer')
-  , _autoScalingRollingUpdatePolicyMinInstancesInService :: Maybe (Val Integer')
-  , _autoScalingRollingUpdatePolicyMinSuccessfulInstancesPercent :: Maybe (Val Integer')
+  { _autoScalingRollingUpdatePolicyMaxBatchSize :: Maybe (Val Integer)
+  , _autoScalingRollingUpdatePolicyMinInstancesInService :: Maybe (Val Integer)
+  , _autoScalingRollingUpdatePolicyMinSuccessfulInstancesPercent :: Maybe (Val Integer)
   , _autoScalingRollingUpdatePolicyPauseTime :: Maybe (Val Text)
   , _autoScalingRollingUpdatePolicySuspendProcess :: Maybe [Val Text]
-  , _autoScalingRollingUpdatePolicyWaitOnResourceSignals :: Maybe (Val Bool')
-  } deriving (Show, Eq, Generic)
+  , _autoScalingRollingUpdatePolicyWaitOnResourceSignals :: Maybe (Val Bool)
+  } deriving (Show, Eq)
 
 instance ToJSON AutoScalingRollingUpdatePolicy where
-  toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 31, omitNothingFields = True }
+  toJSON AutoScalingRollingUpdatePolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("MaxBatchSize",) . toJSON . fmap Integer') _autoScalingRollingUpdatePolicyMaxBatchSize
+    , fmap (("MinInstancesInService",) . toJSON . fmap Integer') _autoScalingRollingUpdatePolicyMinInstancesInService
+    , fmap (("MinSuccessfulInstancesPercent",) . toJSON . fmap Integer') _autoScalingRollingUpdatePolicyMinSuccessfulInstancesPercent
+    , fmap (("PauseTime",) . toJSON) _autoScalingRollingUpdatePolicyPauseTime
+    , fmap (("SuspendProcess",) . toJSON) _autoScalingRollingUpdatePolicySuspendProcess
+    , fmap (("WaitOnResourceSignals",) . toJSON . fmap Bool') _autoScalingRollingUpdatePolicyWaitOnResourceSignals
+    ]
 
 instance FromJSON AutoScalingRollingUpdatePolicy where
-  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 31, omitNothingFields = True }
+  parseJSON (Object obj) =
+    AutoScalingRollingUpdatePolicy <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxBatchSize") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinInstancesInService") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MinSuccessfulInstancesPercent") <*>
+      (obj .:? "PauseTime") <*>
+      (obj .:? "SuspendProcess") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "WaitOnResourceSignals")
+  parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingRollingUpdatePolicy' containing required fields as
 -- arguments.
@@ -49,13 +66,13 @@
 
 -- | Specifies the maximum number of instances that AWS CloudFormation
 -- terminates.
-asrupMaxBatchSize :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer'))
+asrupMaxBatchSize :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer))
 asrupMaxBatchSize = lens _autoScalingRollingUpdatePolicyMaxBatchSize (\s a -> s { _autoScalingRollingUpdatePolicyMaxBatchSize = a })
 
 -- | Specifies the minimum number of instances that must be in service within
 -- the Auto Scaling group while AWS CloudFormation terminates obsolete
 -- instances.
-asrupMinInstancesInService :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer'))
+asrupMinInstancesInService :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer))
 asrupMinInstancesInService = lens _autoScalingRollingUpdatePolicyMinInstancesInService (\s a -> s { _autoScalingRollingUpdatePolicyMinInstancesInService = a })
 
 -- | Specifies the percentage of instances in an Auto Scaling rolling update
@@ -67,7 +84,7 @@
 -- property, AWS CloudFormation assumes that the instance wasn't successfully
 -- updated. If you specify this property, you must also enable the
 -- WaitOnResourceSignals and PauseTime properties.
-asrupMinSuccessfulInstancesPercent :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer'))
+asrupMinSuccessfulInstancesPercent :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Integer))
 asrupMinSuccessfulInstancesPercent = lens _autoScalingRollingUpdatePolicyMinSuccessfulInstancesPercent (\s a -> s { _autoScalingRollingUpdatePolicyMinSuccessfulInstancesPercent = a })
 
 -- | Specifies the amount of time that AWS CloudFormation should pause after
@@ -104,5 +121,5 @@
 -- Auto Scaling group, use the cfn-signal helper script or SignalResource API.
 -- Use this property to ensure that instances have completed installing and
 -- configuring applications before the Auto Scaling group update proceeds.
-asrupWaitOnResourceSignals :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Bool'))
+asrupWaitOnResourceSignals :: Lens' AutoScalingRollingUpdatePolicy (Maybe (Val Bool))
 asrupWaitOnResourceSignals = lens _autoScalingRollingUpdatePolicyWaitOnResourceSignals (\s a -> s { _autoScalingRollingUpdatePolicyWaitOnResourceSignals = a })
diff --git a/library/Stratosphere/ResourceAttributes/AutoScalingScheduledActionPolicy.hs b/library/Stratosphere/ResourceAttributes/AutoScalingScheduledActionPolicy.hs
--- a/library/Stratosphere/ResourceAttributes/AutoScalingScheduledActionPolicy.hs
+++ b/library/Stratosphere/ResourceAttributes/AutoScalingScheduledActionPolicy.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- | To specify how AWS CloudFormation handles updates for the MinSize,
 -- MaxSize, and DesiredCapacity properties when the
@@ -21,9 +22,8 @@
 
 import Control.Lens
 import Data.Aeson
-import Data.Aeson.Types
+import Data.Maybe (catMaybes)
 import Data.Text
-import GHC.Generics
 
 import Stratosphere.Values
 
@@ -32,14 +32,21 @@
 -- 'autoScalingScheduledActionPolicy' for a more convenient constructor.
 data AutoScalingScheduledActionPolicy =
   AutoScalingScheduledActionPolicy
-  { _autoScalingScheduledActionPolicyIgnoreUnmodifiedGroupSizeProperties :: Maybe (Val Bool')
-  } deriving (Show, Eq, Generic)
+  { _autoScalingScheduledActionPolicyIgnoreUnmodifiedGroupSizeProperties :: Maybe (Val Bool)
+  } deriving (Show, Eq)
 
 instance ToJSON AutoScalingScheduledActionPolicy where
-  toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 33, omitNothingFields = True }
+  toJSON AutoScalingScheduledActionPolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("IgnoreUnmodifiedGroupSizeProperties",) . toJSON . fmap Bool') _autoScalingScheduledActionPolicyIgnoreUnmodifiedGroupSizeProperties
+    ]
 
 instance FromJSON AutoScalingScheduledActionPolicy where
-  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 33, omitNothingFields = True }
+  parseJSON (Object obj) =
+    AutoScalingScheduledActionPolicy <$>
+      fmap (fmap (fmap unBool')) (obj .:? "IgnoreUnmodifiedGroupSizeProperties")
+  parseJSON _ = mempty
 
 -- | Constructor for 'AutoScalingScheduledActionPolicy' containing required fields
 -- as arguments.
@@ -56,5 +63,5 @@
 -- template during a stack update. If you modify any of the group size
 -- property values in your template, AWS CloudFormation uses the modified
 -- values and updates your Auto Scaling group.
-assapIgnoreUnmodifiedGroupSizeProperties :: Lens' AutoScalingScheduledActionPolicy (Maybe (Val Bool'))
+assapIgnoreUnmodifiedGroupSizeProperties :: Lens' AutoScalingScheduledActionPolicy (Maybe (Val Bool))
 assapIgnoreUnmodifiedGroupSizeProperties = lens _autoScalingScheduledActionPolicyIgnoreUnmodifiedGroupSizeProperties (\s a -> s { _autoScalingScheduledActionPolicyIgnoreUnmodifiedGroupSizeProperties = a })
diff --git a/library/Stratosphere/ResourceAttributes/ResourceSignal.hs b/library/Stratosphere/ResourceAttributes/ResourceSignal.hs
--- a/library/Stratosphere/ResourceAttributes/ResourceSignal.hs
+++ b/library/Stratosphere/ResourceAttributes/ResourceSignal.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
 
 -- |
 
@@ -7,9 +8,8 @@
 
 import Control.Lens
 import Data.Aeson
-import Data.Aeson.Types
+import Data.Maybe (catMaybes)
 import Data.Text
-import GHC.Generics
 
 import Stratosphere.Values
 
@@ -18,15 +18,24 @@
 -- more convenient constructor.
 data ResourceSignal =
   ResourceSignal
-  { _resourceSignalCount :: Maybe (Val Integer')
+  { _resourceSignalCount :: Maybe (Val Integer)
   , _resourceSignalTimeout :: Maybe (Val Text)
-  } deriving (Show, Eq, Generic)
+  } deriving (Show, Eq)
 
 instance ToJSON ResourceSignal where
-  toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }
+  toJSON ResourceSignal{..} =
+    object $
+    catMaybes
+    [ fmap (("Count",) . toJSON . fmap Integer') _resourceSignalCount
+    , fmap (("Timeout",) . toJSON) _resourceSignalTimeout
+    ]
 
 instance FromJSON ResourceSignal where
-  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }
+  parseJSON (Object obj) =
+    ResourceSignal <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "Count") <*>
+      (obj .:? "Timeout")
+  parseJSON _ = mempty
 
 -- | Constructor for 'ResourceSignal' containing required fields as arguments.
 resourceSignal
@@ -42,7 +51,7 @@
 -- failure signal or doesn't receive the specified number of signals before
 -- the timeout period expires, the resource creation fails and AWS
 -- CloudFormation rolls the stack back.
-rsCount :: Lens' ResourceSignal (Maybe (Val Integer'))
+rsCount :: Lens' ResourceSignal (Maybe (Val Integer))
 rsCount = lens _resourceSignalCount (\s a -> s { _resourceSignalCount = a })
 
 -- | The length of time that AWS CloudFormation waits for the number of
diff --git a/library/Stratosphere/Values.hs b/library/Stratosphere/Values.hs
--- a/library/Stratosphere/Values.hs
+++ b/library/Stratosphere/Values.hs
@@ -1,29 +1,32 @@
+{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module Stratosphere.Values
-       ( Val (..)
-       , Integer' (..)
-       , Bool' (..)
-       , Double' (..)
-       , ToRef (..)
-       ) where
+  ( Val (..)
+  , ValList (..)
+  , Integer' (..)
+  , Bool' (..)
+  , Double' (..)
+  , ToRef (..)
+  ) where
 
 import Data.Aeson
 import qualified Data.HashMap.Strict as HM
 import Data.String (IsString (..))
-import qualified Data.Text as T
+import Data.Text (Text)
 import Text.Read (readMaybe)
-import GHC.Exts (fromList)
+import GHC.Exts (IsList(..))
 
 -- GADTs are cool, but I couldn't get this to work with FromJSON
 -- data Val a where
 --   Literal :: a -> Val a
---   Ref :: T.Text -> Val a
---   If :: T.Text -> Val a -> Val a -> Val a
+--   Ref :: Text -> Val a
+--   If :: Text -> Val a -> Val a -> Val a
 --   And :: Val Bool -> Val Bool -> Val Bool
 --   Equals :: (Show a, ToJSON a) => Val a -> Val a -> Val Bool
 --   Or :: Val Bool -> Val Bool -> Val Bool
@@ -33,44 +36,48 @@
 -- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html
 data Val a
  = Literal a
- | Ref T.Text
- | If T.Text (Val a) (Val a)
- | And (Val Bool') (Val Bool')
- | Equals (Val Bool') (Val Bool')
- | Or (Val Bool') (Val Bool')
- | GetAtt T.Text T.Text
+ | Ref Text
+ | If Text (Val a) (Val a)
+ | And (Val Bool) (Val Bool)
+ | Equals (Val Bool) (Val Bool)
+ | Or (Val Bool) (Val Bool)
+ | GetAtt Text Text
  | Base64 (Val a)
- | Join T.Text [Val a]
- | Split T.Text T.Text
- | Select Integer' (Val a)
+ | Join Text [Val a]
+ | Split Text Text
+ | Select Integer (Val a)
  | GetAZs (Val a)
  | FindInMap (Val a) (Val a) (Val a) -- ^ Map name, top level key, and second level key
- | ImportValue T.Text -- ^ The account-and-region-unique exported name of the value to import
+ | ImportValue Text -- ^ The account-and-region-unique exported name of the value to import
 
 deriving instance (Show a) => Show (Val a)
 deriving instance (Eq a) => Eq (Val a)
+deriving instance Functor Val
 
 instance (IsString a) => IsString (Val a) where
   fromString s = Literal (fromString s)
 
 instance (ToJSON a) => ToJSON (Val a) where
   toJSON (Literal v) = toJSON v
-  toJSON (Ref r) = object [("Ref", toJSON r)]
+  toJSON (Ref r) = refToJSON r
   toJSON (If i x y) = mkFunc "Fn::If" [toJSON i, toJSON x, toJSON y]
-  toJSON (And x y) = mkFunc "Fn::And" [toJSON x, toJSON y]
-  toJSON (Equals x y) = mkFunc "Fn::Equals" [toJSON x, toJSON y]
-  toJSON (Or x y) = mkFunc "Fn::Or" [toJSON x, toJSON y]
+  toJSON (And x y) = mkFunc "Fn::And" [toJSON (Bool' <$> x), toJSON (Bool' <$> y)]
+  toJSON (Equals x y) = mkFunc "Fn::Equals" [toJSON (Bool' <$> x), toJSON (Bool' <$> y)]
+  toJSON (Or x y) = mkFunc "Fn::Or" [toJSON (Bool' <$> x), toJSON (Bool' <$> y)]
   toJSON (GetAtt x y) = mkFunc "Fn::GetAtt" [toJSON x, toJSON y]
   toJSON (Base64 v) = object [("Fn::Base64", toJSON v)]
   toJSON (Join d vs) = mkFunc "Fn::Join" [toJSON d, toJSON vs]
   toJSON (Split d s) = mkFunc "Fn::Split" [toJSON d, toJSON s]
-  toJSON (Select i vs) = mkFunc "Fn::Select" [toJSON i, toJSON vs]
+  toJSON (Select i vs) = mkFunc "Fn::Select" [toJSON (Integer' i), toJSON vs]
   toJSON (GetAZs r) = object [("Fn::GetAZs", toJSON r)]
   toJSON (FindInMap mapName topKey secondKey) =
     object [("Fn::FindInMap", toJSON [toJSON mapName, toJSON topKey, toJSON secondKey])]
   toJSON (ImportValue t) = object [("Fn::ImportValue", toJSON t)]
 
-mkFunc :: T.Text -> [Value] -> Value
+refToJSON :: Text -> Value
+refToJSON ref = object [("Ref", toJSON ref)]
+
+mkFunc :: Text -> [Value] -> Value
 mkFunc name args = object [(name, Array $ fromList args)]
 
 instance (FromJSON a) => FromJSON (Val a) where
@@ -79,14 +86,14 @@
       [] -> fail "Empty object as Val"
       [("Ref", o')] -> Ref <$> parseJSON o'
       [("Fn::If", o')] -> (\(i, x, y) -> If i x y) <$> parseJSON o'
-      [("Fn::And", o')] -> uncurry And <$> parseJSON o'
-      [("Fn::Equals", o')] -> uncurry Equals <$> parseJSON o'
-      [("Fn::Or", o')] -> uncurry Or <$> parseJSON o'
+      [("Fn::And", o')] -> (\(x, y) -> And (unBool' <$> x) (unBool' <$> y)) <$> parseJSON o'
+      [("Fn::Equals", o')] -> (\(x, y) -> Equals (unBool' <$> x) (unBool' <$> y)) <$> parseJSON o'
+      [("Fn::Or", o')] -> (\(x, y) -> Or (unBool' <$> x) (unBool' <$> y)) <$> parseJSON o'
       [("Fn::GetAtt", o')] -> uncurry GetAtt <$> parseJSON o'
       [("Fn::Base64", o')] -> Base64 <$> parseJSON o'
       [("Fn::Join", o')] -> uncurry Join <$> parseJSON o'
       [("Fn::Split", o')] -> uncurry Split <$> parseJSON o'
-      [("Fn::Select", o')] -> uncurry Select <$> parseJSON o'
+      [("Fn::Select", o')] -> (\(x, y) -> Select (unInteger' x) y) <$> parseJSON o'
       [("Fn::GetAZs", o')] -> GetAZs <$> parseJSON o'
       [("Fn::FindInMap", o')] -> do
         (mapName, topKey, secondKey) <- parseJSON o'
@@ -96,7 +103,37 @@
       os -> Literal <$> parseJSON (object os)
   parseJSON v = Literal <$> parseJSON v
 
+-- | There are two ways to construct a list of 'Val's. One is to use a literal
+-- 'ValList' to construct the list. The other is to reference something that is
+-- already a list. For example, if you have a parameter called @SubnetIds@ of
+-- type @List<AWS::EC2::Subnet::Id>@ then, you can use @RefList "SubnetIds"@ to
+-- reference it.
+data ValList a
+  = ValList [Val a]
+  | RefList Text
+  deriving (Show, Eq)
 
+instance IsList (ValList a) where
+  type Item (ValList a) = Val a
+  fromList = ValList
+
+  toList (ValList xs) = xs
+  -- This is obviously not meaningful, but the IsList instance is so useful
+  -- that I decided to allow it.
+  toList (RefList _) = []
+
+instance (ToJSON a) => ToJSON (ValList a) where
+  toJSON (ValList vals) = toJSON vals
+  toJSON (RefList ref) = refToJSON ref
+
+instance (FromJSON a) => FromJSON (ValList a) where
+  parseJSON a@(Array _) = ValList <$> parseJSON a
+  parseJSON (Object o) =
+    case HM.toList o of
+      [("Ref", o')] -> RefList <$> parseJSON o'
+      _ -> fail "Could not parse object into RefList"
+  parseJSON _ = fail "Expected Array or Object for ValList in parseJSON"
+
 -- | We need to wrap integers so we can override the Aeson type-classes. This
 -- is necessary because CloudFront made the silly decision to represent numbers
 -- as JSON strings.
@@ -114,21 +151,19 @@
       (Just n) -> return n
 
 -- | We need to wrap Bools for the same reason we need to wrap Ints.
-data Bool'
-  = False'
-  | True'
+newtype Bool' = Bool' { unBool' :: Bool }
   deriving (Show, Bounded, Enum, Eq, Ord)
 
 instance ToJSON Bool' where
-  toJSON True' = "true"
-  toJSON False' = "false"
+  toJSON (Bool' True) = "true"
+  toJSON (Bool' False) = "false"
 
 instance FromJSON Bool' where
   parseJSON v = do
     string <- parseJSON v
     case string of
-      "true" -> return True'
-      "false" -> return False'
+      "true" -> return (Bool' True)
+      "false" -> return (Bool' False)
       _ -> fail $ "Unknown bool string " ++ string
 
 -- | Class used to create a 'Ref' from another type.
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           stratosphere
-version:        0.5.0
+version:        0.6.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
