diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@
 | modelDeriving                   | Additional classes to include in the deriving() clause of Models                                                              |          |                    |
 | requestType                     | Set the name of the type used to generate requests                                                                            |          | OpenAPIPetstoreRequest                     |
 | strictFields                    | Add strictness annotations to all model fields                                                                                | true     | true                  |
-| useMonadLogger                  | Use the monad-logger package to provide logging (if instead false, use the katip logging package)                             | false    | false                |
+| useKatip                        | Sets the default value for the UseKatip cabal flag. If true, the katip package provides logging instead of monad-logger       | true     | true                      |
 
 [1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
 
diff --git a/lib/OpenAPIPetstore/API/AnotherFake.hs b/lib/OpenAPIPetstore/API/AnotherFake.hs
--- a/lib/OpenAPIPetstore/API/AnotherFake.hs
+++ b/lib/OpenAPIPetstore/API/AnotherFake.hs
@@ -67,15 +67,15 @@
 -- 
 op123testSpecialTags 
   :: (Consumes Op123testSpecialTags MimeJSON, MimeRender MimeJSON Client)
-  => Client -- ^ "client" -  client model
+  => Client -- ^ "body" -  client model
   -> OpenAPIPetstoreRequest Op123testSpecialTags MimeJSON Client MimeJSON
-op123testSpecialTags client =
+op123testSpecialTags body =
   _mkRequest "PATCH" ["/another-fake/dummy"]
-    `setBodyParam` client
+    `setBodyParam` body
 
 data Op123testSpecialTags 
 
--- | /Body Param/ "Client" - client model
+-- | /Body Param/ "body" - client model
 instance HasBodyParam Op123testSpecialTags Client 
 
 -- | @application/json@
diff --git a/lib/OpenAPIPetstore/API/Fake.hs b/lib/OpenAPIPetstore/API/Fake.hs
--- a/lib/OpenAPIPetstore/API/Fake.hs
+++ b/lib/OpenAPIPetstore/API/Fake.hs
@@ -57,6 +57,44 @@
 
 -- ** Fake
 
+-- *** createXmlItem
+
+-- | @POST \/fake\/create_xml_item@
+-- 
+-- creates an XmlItem
+-- 
+-- this route creates an XmlItem
+-- 
+createXmlItem 
+  :: (Consumes CreateXmlItem contentType, MimeRender contentType XmlItem)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> XmlItem -- ^ "xmlItem" -  XmlItem Body
+  -> OpenAPIPetstoreRequest CreateXmlItem contentType NoContent MimeNoContent
+createXmlItem _ xmlItem =
+  _mkRequest "POST" ["/fake/create_xml_item"]
+    `setBodyParam` xmlItem
+
+data CreateXmlItem 
+
+-- | /Body Param/ "XmlItem" - XmlItem Body
+instance HasBodyParam CreateXmlItem XmlItem 
+
+-- | @application/xml@
+instance Consumes CreateXmlItem MimeXML
+-- | @text/xml@
+instance Consumes CreateXmlItem MimeTextxml
+-- | @text/xml; charset=utf-8@
+instance Consumes CreateXmlItem MimeTextxmlCharsetutf8
+-- | @text/xml; charset=utf-16@
+instance Consumes CreateXmlItem MimeTextxmlCharsetutf16
+-- | @application/xml; charset=utf-8@
+instance Consumes CreateXmlItem MimeXmlCharsetutf8
+-- | @application/xml; charset=utf-16@
+instance Consumes CreateXmlItem MimeXmlCharsetutf16
+
+instance Produces CreateXmlItem MimeNoContent
+
+
 -- *** fakeOuterBooleanSerialize
 
 -- | @POST \/fake\/outer\/boolean@
@@ -75,6 +113,9 @@
 
 -- | /Body Param/ "body" - Input boolean as post body
 instance HasBodyParam FakeOuterBooleanSerialize BodyBool 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes FakeOuterBooleanSerialize mtype
 
 -- | @*/*@
 instance MimeType mtype => Produces FakeOuterBooleanSerialize mtype
@@ -96,8 +137,11 @@
 
 data FakeOuterCompositeSerialize 
 
--- | /Body Param/ "OuterComposite" - Input composite as post body
+-- | /Body Param/ "body" - Input composite as post body
 instance HasBodyParam FakeOuterCompositeSerialize OuterComposite 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes FakeOuterCompositeSerialize mtype
 
 -- | @*/*@
 instance MimeType mtype => Produces FakeOuterCompositeSerialize mtype
@@ -120,7 +164,10 @@
 data FakeOuterNumberSerialize 
 
 -- | /Body Param/ "body" - Input number as post body
-instance HasBodyParam FakeOuterNumberSerialize Body 
+instance HasBodyParam FakeOuterNumberSerialize BodyDouble 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes FakeOuterNumberSerialize mtype
 
 -- | @*/*@
 instance MimeType mtype => Produces FakeOuterNumberSerialize mtype
@@ -144,6 +191,9 @@
 
 -- | /Body Param/ "body" - Input string as post body
 instance HasBodyParam FakeOuterStringSerialize BodyText 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes FakeOuterStringSerialize mtype
 
 -- | @*/*@
 instance MimeType mtype => Produces FakeOuterStringSerialize mtype
@@ -157,11 +207,11 @@
 -- 
 testBodyWithFileSchema 
   :: (Consumes TestBodyWithFileSchema MimeJSON, MimeRender MimeJSON FileSchemaTestClass)
-  => FileSchemaTestClass -- ^ "fileSchemaTestClass"
+  => FileSchemaTestClass -- ^ "body"
   -> OpenAPIPetstoreRequest TestBodyWithFileSchema MimeJSON NoContent MimeNoContent
-testBodyWithFileSchema fileSchemaTestClass =
+testBodyWithFileSchema body =
   _mkRequest "PUT" ["/fake/body-with-file-schema"]
-    `setBodyParam` fileSchemaTestClass
+    `setBodyParam` body
 
 data TestBodyWithFileSchema 
 instance HasBodyParam TestBodyWithFileSchema FileSchemaTestClass 
@@ -178,12 +228,12 @@
 -- 
 testBodyWithQueryParams 
   :: (Consumes TestBodyWithQueryParams MimeJSON, MimeRender MimeJSON User)
-  => User -- ^ "user"
+  => User -- ^ "body"
   -> Query -- ^ "query"
   -> OpenAPIPetstoreRequest TestBodyWithQueryParams MimeJSON NoContent MimeNoContent
-testBodyWithQueryParams user (Query query) =
+testBodyWithQueryParams body (Query query) =
   _mkRequest "PUT" ["/fake/body-with-query-params"]
-    `setBodyParam` user
+    `setBodyParam` body
     `setQuery` toQuery ("query", Just query)
 
 data TestBodyWithQueryParams 
@@ -205,15 +255,15 @@
 -- 
 testClientModel 
   :: (Consumes TestClientModel MimeJSON, MimeRender MimeJSON Client)
-  => Client -- ^ "client" -  client model
+  => Client -- ^ "body" -  client model
   -> OpenAPIPetstoreRequest TestClientModel MimeJSON Client MimeJSON
-testClientModel client =
+testClientModel body =
   _mkRequest "PATCH" ["/fake"]
-    `setBodyParam` client
+    `setBodyParam` body
 
 data TestClientModel 
 
--- | /Body Param/ "Client" - client model
+-- | /Body Param/ "body" - client model
 instance HasBodyParam TestClientModel Client 
 
 -- | @application/json@
@@ -403,7 +453,6 @@
 instance HasOptionalParam TestGroupParameters Int64Group where
   applyOptionalParam req (Int64Group xs) =
     req `setQuery` toQuery ("int64_group", Just xs)
-
 instance Produces TestGroupParameters MimeNoContent
 
 
@@ -414,17 +463,17 @@
 -- test inline additionalProperties
 -- 
 testInlineAdditionalProperties 
-  :: (Consumes TestInlineAdditionalProperties MimeJSON, MimeRender MimeJSON RequestBody)
-  => RequestBody -- ^ "requestBody" -  request body
+  :: (Consumes TestInlineAdditionalProperties MimeJSON, MimeRender MimeJSON ParamMapMapStringText)
+  => ParamMapMapStringText -- ^ "param" -  request body
   -> OpenAPIPetstoreRequest TestInlineAdditionalProperties MimeJSON NoContent MimeNoContent
-testInlineAdditionalProperties requestBody =
+testInlineAdditionalProperties param =
   _mkRequest "POST" ["/fake/inline-additionalProperties"]
-    `setBodyParam` requestBody
+    `setBodyParam` param
 
 data TestInlineAdditionalProperties 
 
--- | /Body Param/ "request_body" - request body
-instance HasBodyParam TestInlineAdditionalProperties RequestBody 
+-- | /Body Param/ "param" - request body
+instance HasBodyParam TestInlineAdditionalProperties ParamMapMapStringText 
 
 -- | @application/json@
 instance Consumes TestInlineAdditionalProperties MimeJSON
diff --git a/lib/OpenAPIPetstore/API/FakeClassnameTags123.hs b/lib/OpenAPIPetstore/API/FakeClassnameTags123.hs
--- a/lib/OpenAPIPetstore/API/FakeClassnameTags123.hs
+++ b/lib/OpenAPIPetstore/API/FakeClassnameTags123.hs
@@ -69,16 +69,16 @@
 -- 
 testClassname 
   :: (Consumes TestClassname MimeJSON, MimeRender MimeJSON Client)
-  => Client -- ^ "client" -  client model
+  => Client -- ^ "body" -  client model
   -> OpenAPIPetstoreRequest TestClassname MimeJSON Client MimeJSON
-testClassname client =
+testClassname body =
   _mkRequest "PATCH" ["/fake_classname_test"]
     `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKeyQuery)
-    `setBodyParam` client
+    `setBodyParam` body
 
 data TestClassname 
 
--- | /Body Param/ "Client" - client model
+-- | /Body Param/ "body" - client model
 instance HasBodyParam TestClassname Client 
 
 -- | @application/json@
diff --git a/lib/OpenAPIPetstore/API/Pet.hs b/lib/OpenAPIPetstore/API/Pet.hs
--- a/lib/OpenAPIPetstore/API/Pet.hs
+++ b/lib/OpenAPIPetstore/API/Pet.hs
@@ -68,16 +68,16 @@
 addPet 
   :: (Consumes AddPet contentType, MimeRender contentType Pet)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> Pet -- ^ "pet" -  Pet object that needs to be added to the store
+  -> Pet -- ^ "body" -  Pet object that needs to be added to the store
   -> OpenAPIPetstoreRequest AddPet contentType NoContent MimeNoContent
-addPet _ pet =
+addPet _ body =
   _mkRequest "POST" ["/pet"]
     `_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)
-    `setBodyParam` pet
+    `setBodyParam` body
 
 data AddPet 
 
--- | /Body Param/ "Pet" - Pet object that needs to be added to the store
+-- | /Body Param/ "body" - Pet object that needs to be added to the store
 instance HasBodyParam AddPet Pet 
 
 -- | @application/xml@
@@ -107,7 +107,6 @@
 instance HasOptionalParam DeletePet ApiKey where
   applyOptionalParam req (ApiKey xs) =
     req `setHeader` toHeader ("api_key", xs)
-
 instance Produces DeletePet MimeNoContent
 
 
@@ -131,7 +130,6 @@
     `setQuery` toQueryColl CommaSeparated ("status", Just status)
 
 data FindPetsByStatus  
-
 -- | @application/xml@
 instance Produces FindPetsByStatus MimeXML
 -- | @application/json@
@@ -160,7 +158,6 @@
 {-# DEPRECATED findPetsByTags "" #-}
 
 data FindPetsByTags  
-
 -- | @application/xml@
 instance Produces FindPetsByTags MimeXML
 -- | @application/json@
@@ -186,7 +183,6 @@
     `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKey)
 
 data GetPetById  
-
 -- | @application/xml@
 instance Produces GetPetById MimeXML
 -- | @application/json@
@@ -204,16 +200,16 @@
 updatePet 
   :: (Consumes UpdatePet contentType, MimeRender contentType Pet)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> Pet -- ^ "pet" -  Pet object that needs to be added to the store
+  -> Pet -- ^ "body" -  Pet object that needs to be added to the store
   -> OpenAPIPetstoreRequest UpdatePet contentType NoContent MimeNoContent
-updatePet _ pet =
+updatePet _ body =
   _mkRequest "PUT" ["/pet"]
     `_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)
-    `setBodyParam` pet
+    `setBodyParam` body
 
 data UpdatePet 
 
--- | /Body Param/ "Pet" - Pet object that needs to be added to the store
+-- | /Body Param/ "body" - Pet object that needs to be added to the store
 instance HasBodyParam UpdatePet Pet 
 
 -- | @application/xml@
diff --git a/lib/OpenAPIPetstore/API/Store.hs b/lib/OpenAPIPetstore/API/Store.hs
--- a/lib/OpenAPIPetstore/API/Store.hs
+++ b/lib/OpenAPIPetstore/API/Store.hs
@@ -72,7 +72,6 @@
   _mkRequest "DELETE" ["/store/order/",toPath orderId]
 
 data DeleteOrder  
-
 instance Produces DeleteOrder MimeNoContent
 
 
@@ -93,7 +92,6 @@
     `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKey)
 
 data GetInventory  
-
 -- | @application/json@
 instance Produces GetInventory MimeJSON
 
@@ -114,7 +112,6 @@
   _mkRequest "GET" ["/store/order/",toPath orderId]
 
 data GetOrderById  
-
 -- | @application/xml@
 instance Produces GetOrderById MimeXML
 -- | @application/json@
@@ -131,16 +128,19 @@
   :: (Consumes PlaceOrder contentType, MimeRender contentType Order)
   => ContentType contentType -- ^ request content-type ('MimeType')
   -> Accept accept -- ^ request accept ('MimeType')
-  -> Order -- ^ "order" -  order placed for purchasing the pet
+  -> Order -- ^ "body" -  order placed for purchasing the pet
   -> OpenAPIPetstoreRequest PlaceOrder contentType Order accept
-placeOrder _  _ order =
+placeOrder _  _ body =
   _mkRequest "POST" ["/store/order"]
-    `setBodyParam` order
+    `setBodyParam` body
 
 data PlaceOrder 
 
--- | /Body Param/ "Order" - order placed for purchasing the pet
+-- | /Body Param/ "body" - order placed for purchasing the pet
 instance HasBodyParam PlaceOrder Order 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes PlaceOrder mtype
 
 -- | @application/xml@
 instance Produces PlaceOrder MimeXML
diff --git a/lib/OpenAPIPetstore/API/User.hs b/lib/OpenAPIPetstore/API/User.hs
--- a/lib/OpenAPIPetstore/API/User.hs
+++ b/lib/OpenAPIPetstore/API/User.hs
@@ -68,16 +68,19 @@
 createUser 
   :: (Consumes CreateUser contentType, MimeRender contentType User)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> User -- ^ "user" -  Created user object
+  -> User -- ^ "body" -  Created user object
   -> OpenAPIPetstoreRequest CreateUser contentType NoContent MimeNoContent
-createUser _ user =
+createUser _ body =
   _mkRequest "POST" ["/user"]
-    `setBodyParam` user
+    `setBodyParam` body
 
 data CreateUser 
 
--- | /Body Param/ "User" - Created user object
+-- | /Body Param/ "body" - Created user object
 instance HasBodyParam CreateUser User 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes CreateUser mtype
 
 instance Produces CreateUser MimeNoContent
 
@@ -89,18 +92,21 @@
 -- Creates list of users with given input array
 -- 
 createUsersWithArrayInput 
-  :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType User2)
+  :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType Body)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> User2 -- ^ "user" -  List of user object
+  -> Body -- ^ "body" -  List of user object
   -> OpenAPIPetstoreRequest CreateUsersWithArrayInput contentType NoContent MimeNoContent
-createUsersWithArrayInput _ user =
+createUsersWithArrayInput _ body =
   _mkRequest "POST" ["/user/createWithArray"]
-    `setBodyParam` user
+    `setBodyParam` body
 
 data CreateUsersWithArrayInput 
 
--- | /Body Param/ "User" - List of user object
-instance HasBodyParam CreateUsersWithArrayInput User2 
+-- | /Body Param/ "body" - List of user object
+instance HasBodyParam CreateUsersWithArrayInput Body 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes CreateUsersWithArrayInput mtype
 
 instance Produces CreateUsersWithArrayInput MimeNoContent
 
@@ -112,18 +118,21 @@
 -- Creates list of users with given input array
 -- 
 createUsersWithListInput 
-  :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType User2)
+  :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType Body)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> User2 -- ^ "user" -  List of user object
+  -> Body -- ^ "body" -  List of user object
   -> OpenAPIPetstoreRequest CreateUsersWithListInput contentType NoContent MimeNoContent
-createUsersWithListInput _ user =
+createUsersWithListInput _ body =
   _mkRequest "POST" ["/user/createWithList"]
-    `setBodyParam` user
+    `setBodyParam` body
 
 data CreateUsersWithListInput 
 
--- | /Body Param/ "User" - List of user object
-instance HasBodyParam CreateUsersWithListInput User2 
+-- | /Body Param/ "body" - List of user object
+instance HasBodyParam CreateUsersWithListInput Body 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes CreateUsersWithListInput mtype
 
 instance Produces CreateUsersWithListInput MimeNoContent
 
@@ -143,7 +152,6 @@
   _mkRequest "DELETE" ["/user/",toPath username]
 
 data DeleteUser  
-
 instance Produces DeleteUser MimeNoContent
 
 
@@ -161,7 +169,6 @@
   _mkRequest "GET" ["/user/",toPath username]
 
 data GetUserByName  
-
 -- | @application/xml@
 instance Produces GetUserByName MimeXML
 -- | @application/json@
@@ -185,7 +192,6 @@
     `setQuery` toQuery ("password", Just password)
 
 data LoginUser  
-
 -- | @application/xml@
 instance Produces LoginUser MimeXML
 -- | @application/json@
@@ -204,7 +210,6 @@
   _mkRequest "GET" ["/user/logout"]
 
 data LogoutUser  
-
 instance Produces LogoutUser MimeNoContent
 
 
@@ -219,17 +224,20 @@
 updateUser 
   :: (Consumes UpdateUser contentType, MimeRender contentType User)
   => ContentType contentType -- ^ request content-type ('MimeType')
-  -> User -- ^ "user" -  Updated user object
+  -> User -- ^ "body" -  Updated user object
   -> Username -- ^ "username" -  name that need to be deleted
   -> OpenAPIPetstoreRequest UpdateUser contentType NoContent MimeNoContent
-updateUser _ user (Username username) =
+updateUser _ body (Username username) =
   _mkRequest "PUT" ["/user/",toPath username]
-    `setBodyParam` user
+    `setBodyParam` body
 
 data UpdateUser 
 
--- | /Body Param/ "User" - Updated user object
+-- | /Body Param/ "body" - Updated user object
 instance HasBodyParam UpdateUser User 
+    
+-- | @*/*@
+instance MimeType mtype => Consumes UpdateUser mtype
 
 instance Produces UpdateUser MimeNoContent
 
diff --git a/lib/OpenAPIPetstore/Logging.hs b/lib/OpenAPIPetstore/Logging.hs
--- a/lib/OpenAPIPetstore/Logging.hs
+++ b/lib/OpenAPIPetstore/Logging.hs
@@ -10,109 +10,24 @@
 
 {-|
 Module : OpenAPIPetstore.Logging
-Katip Logging functions
+Logging functions
 -}
-
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-
-module OpenAPIPetstore.Logging where
-
-import qualified Control.Exception.Safe as E
-import qualified Control.Monad.IO.Class as P
-import qualified Control.Monad.Trans.Reader as P
-import qualified Data.Text as T
-import qualified Lens.Micro as L
-import qualified System.IO as IO
-
-import Data.Text (Text)
-import GHC.Exts (IsString(..))
-
-import qualified Katip as LG
-
--- * Type Aliases (for compatibility)
-
--- | Runs a Katip logging block with the Log environment
-type LogExecWithContext = forall m. P.MonadIO m =>
-                                    LogContext -> LogExec m
-
--- | A Katip logging block
-type LogExec m = forall a. LG.KatipT m a -> m a
-
--- | A Katip Log environment
-type LogContext = LG.LogEnv
-
--- | A Katip Log severity
-type LogLevel = LG.Severity
-
--- * default logger
-
--- | the default log environment
-initLogContext :: IO LogContext
-initLogContext = LG.initLogEnv "OpenAPIPetstore" "dev"
-
--- | Runs a Katip logging block with the Log environment
-runDefaultLogExecWithContext :: LogExecWithContext
-runDefaultLogExecWithContext = LG.runKatipT
-
--- * stdout logger
-
--- | Runs a Katip logging block with the Log environment
-stdoutLoggingExec :: LogExecWithContext
-stdoutLoggingExec = runDefaultLogExecWithContext
-
--- | A Katip Log environment which targets stdout
-stdoutLoggingContext :: LogContext -> IO LogContext
-stdoutLoggingContext cxt = do
-    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stdout LG.InfoS LG.V2
-    LG.registerScribe "stdout" handleScribe LG.defaultScribeSettings cxt
-
--- * stderr logger
-
--- | Runs a Katip logging block with the Log environment
-stderrLoggingExec :: LogExecWithContext
-stderrLoggingExec = runDefaultLogExecWithContext
-
--- | A Katip Log environment which targets stderr
-stderrLoggingContext :: LogContext -> IO LogContext
-stderrLoggingContext cxt = do
-    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stderr LG.InfoS LG.V2
-    LG.registerScribe "stderr" handleScribe LG.defaultScribeSettings cxt
-
--- * Null logger
-
--- | Disables Katip logging
-runNullLogExec :: LogExecWithContext
-runNullLogExec le (LG.KatipT f) = P.runReaderT f (L.set LG.logEnvScribes mempty le)
-
--- * Log Msg
-
--- | Log a katip message
-_log :: (Applicative m, LG.Katip m) => Text -> LogLevel -> Text -> m ()
-_log src level msg = do
-  LG.logMsg (fromString $ T.unpack src) level (LG.logStr msg)
+{-# LANGUAGE CPP #-}
 
--- * Log Exceptions
+#ifdef USE_KATIP
 
--- | re-throws exceptions after logging them
-logExceptions
-  :: (LG.Katip m, E.MonadCatch m, Applicative m)
-  => Text -> m a -> m a
-logExceptions src =
-  E.handle
-    (\(e :: E.SomeException) -> do
-       _log src LG.ErrorS ((T.pack . show) e)
-       E.throw e)
+module OpenAPIPetstore.Logging
+  ( module OpenAPIPetstore.LoggingKatip
+  ) where
 
--- * Log Level
+import OpenAPIPetstore.LoggingKatip
 
-levelInfo :: LogLevel
-levelInfo = LG.InfoS
+#else
 
-levelError :: LogLevel
-levelError = LG.ErrorS
+module OpenAPIPetstore.Logging
+  ( module OpenAPIPetstore.LoggingMonadLogger
+  ) where
 
-levelDebug :: LogLevel
-levelDebug = LG.DebugS
+import OpenAPIPetstore.LoggingMonadLogger
 
+#endif
diff --git a/lib/OpenAPIPetstore/LoggingKatip.hs b/lib/OpenAPIPetstore/LoggingKatip.hs
new file mode 100644
--- /dev/null
+++ b/lib/OpenAPIPetstore/LoggingKatip.hs
@@ -0,0 +1,118 @@
+{-
+   OpenAPI Petstore
+
+   This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+
+   OpenAPI Version: 3.0.1
+   OpenAPI Petstore API version: 1.0.0
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : OpenAPIPetstore.LoggingKatip
+Katip Logging functions
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module OpenAPIPetstore.LoggingKatip where
+
+import qualified Control.Exception.Safe as E
+import qualified Control.Monad.IO.Class as P
+import qualified Control.Monad.Trans.Reader as P
+import qualified Data.Text as T
+import qualified Lens.Micro as L
+import qualified System.IO as IO
+
+import Data.Text (Text)
+import GHC.Exts (IsString(..))
+
+import qualified Katip as LG
+
+-- * Type Aliases (for compatibility)
+
+-- | Runs a Katip logging block with the Log environment
+type LogExecWithContext = forall m. P.MonadIO m =>
+                                    LogContext -> LogExec m
+
+-- | A Katip logging block
+type LogExec m = forall a. LG.KatipT m a -> m a
+
+-- | A Katip Log environment
+type LogContext = LG.LogEnv
+
+-- | A Katip Log severity
+type LogLevel = LG.Severity
+
+-- * default logger
+
+-- | the default log environment
+initLogContext :: IO LogContext
+initLogContext = LG.initLogEnv "OpenAPIPetstore" "dev"
+
+-- | Runs a Katip logging block with the Log environment
+runDefaultLogExecWithContext :: LogExecWithContext
+runDefaultLogExecWithContext = LG.runKatipT
+
+-- * stdout logger
+
+-- | Runs a Katip logging block with the Log environment
+stdoutLoggingExec :: LogExecWithContext
+stdoutLoggingExec = runDefaultLogExecWithContext
+
+-- | A Katip Log environment which targets stdout
+stdoutLoggingContext :: LogContext -> IO LogContext
+stdoutLoggingContext cxt = do
+    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stdout (LG.permitItem LG.InfoS) LG.V2
+    LG.registerScribe "stdout" handleScribe LG.defaultScribeSettings cxt
+
+-- * stderr logger
+
+-- | Runs a Katip logging block with the Log environment
+stderrLoggingExec :: LogExecWithContext
+stderrLoggingExec = runDefaultLogExecWithContext
+
+-- | A Katip Log environment which targets stderr
+stderrLoggingContext :: LogContext -> IO LogContext
+stderrLoggingContext cxt = do
+    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stderr (LG.permitItem LG.InfoS) LG.V2
+    LG.registerScribe "stderr" handleScribe LG.defaultScribeSettings cxt
+
+-- * Null logger
+
+-- | Disables Katip logging
+runNullLogExec :: LogExecWithContext
+runNullLogExec le (LG.KatipT f) = P.runReaderT f (L.set LG.logEnvScribes mempty le)
+
+-- * Log Msg
+
+-- | Log a katip message
+_log :: (Applicative m, LG.Katip m) => Text -> LogLevel -> Text -> m ()
+_log src level msg = do
+  LG.logMsg (fromString $ T.unpack src) level (LG.logStr msg)
+
+-- * Log Exceptions
+
+-- | re-throws exceptions after logging them
+logExceptions
+  :: (LG.Katip m, E.MonadCatch m, Applicative m)
+  => Text -> m a -> m a
+logExceptions src =
+  E.handle
+    (\(e :: E.SomeException) -> do
+       _log src LG.ErrorS ((T.pack . show) e)
+       E.throw e)
+
+-- * Log Level
+
+levelInfo :: LogLevel
+levelInfo = LG.InfoS
+
+levelError :: LogLevel
+levelError = LG.ErrorS
+
+levelDebug :: LogLevel
+levelDebug = LG.DebugS
+
diff --git a/lib/OpenAPIPetstore/LoggingMonadLogger.hs b/lib/OpenAPIPetstore/LoggingMonadLogger.hs
new file mode 100644
--- /dev/null
+++ b/lib/OpenAPIPetstore/LoggingMonadLogger.hs
@@ -0,0 +1,127 @@
+{-
+   OpenAPI Petstore
+
+   This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+
+   OpenAPI Version: 3.0.1
+   OpenAPI Petstore API version: 1.0.0
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : OpenAPIPetstore.LoggingMonadLogger
+monad-logger Logging functions
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module OpenAPIPetstore.LoggingMonadLogger where
+
+import qualified Control.Exception.Safe as E
+import qualified Control.Monad.IO.Class as P
+import qualified Data.Text as T
+import qualified Data.Time as TI
+
+import Data.Monoid ((<>))
+import Data.Text (Text)
+
+import qualified Control.Monad.Logger as LG
+
+-- * Type Aliases (for compatibility)
+
+-- | Runs a monad-logger  block with the filter predicate
+type LogExecWithContext = forall m. P.MonadIO m =>
+                                    LogContext -> LogExec m
+
+-- | A monad-logger block
+type LogExec m = forall a. LG.LoggingT m a -> m a
+
+-- | A monad-logger filter predicate
+type LogContext = LG.LogSource -> LG.LogLevel -> Bool
+
+-- | A monad-logger log level
+type LogLevel = LG.LogLevel
+
+-- * default logger
+
+-- | the default log environment
+initLogContext :: IO LogContext
+initLogContext = pure infoLevelFilter
+
+-- | Runs a monad-logger block with the filter predicate
+runDefaultLogExecWithContext :: LogExecWithContext
+runDefaultLogExecWithContext = runNullLogExec
+
+-- * stdout logger
+
+-- | Runs a monad-logger block targeting stdout, with the filter predicate
+stdoutLoggingExec :: LogExecWithContext
+stdoutLoggingExec cxt = LG.runStdoutLoggingT . LG.filterLogger cxt
+
+-- | @pure@
+stdoutLoggingContext :: LogContext -> IO LogContext
+stdoutLoggingContext = pure
+
+-- * stderr logger
+
+-- | Runs a monad-logger block targeting stderr, with the filter predicate
+stderrLoggingExec :: LogExecWithContext
+stderrLoggingExec cxt = LG.runStderrLoggingT . LG.filterLogger cxt
+
+-- | @pure@
+stderrLoggingContext :: LogContext -> IO LogContext
+stderrLoggingContext = pure
+
+-- * Null logger
+
+-- | Disables monad-logger logging
+runNullLogExec :: LogExecWithContext
+runNullLogExec = const (`LG.runLoggingT` nullLogger)
+
+-- | monad-logger which does nothing
+nullLogger :: LG.Loc -> LG.LogSource -> LG.LogLevel -> LG.LogStr -> IO ()
+nullLogger _ _ _ _ = return ()
+
+-- * Log Msg
+
+-- | Log a message using the current time
+_log :: (P.MonadIO m, LG.MonadLogger m) => Text -> LG.LogLevel -> Text -> m ()
+_log src level msg = do
+  now <- P.liftIO (formatTimeLog <$> TI.getCurrentTime)
+  LG.logOtherNS ("OpenAPIPetstore." <> src) level ("[" <> now <> "] " <> msg)
+ where
+  formatTimeLog =
+    T.pack . TI.formatTime TI.defaultTimeLocale "%Y-%m-%dT%H:%M:%S%Z"
+
+-- * Log Exceptions
+
+-- | re-throws exceptions after logging them
+logExceptions
+   :: (LG.MonadLogger m, E.MonadCatch m, P.MonadIO m)
+   => Text -> m a -> m a
+logExceptions src =
+   E.handle
+     (\(e :: E.SomeException) -> do
+        _log src LG.LevelError ((T.pack . show) e)
+        E.throw e)
+
+-- * Log Level
+
+levelInfo :: LogLevel
+levelInfo = LG.LevelInfo
+
+levelError :: LogLevel
+levelError = LG.LevelError
+
+levelDebug :: LogLevel
+levelDebug = LG.LevelDebug
+
+-- * Level Filter
+
+minLevelFilter :: LG.LogLevel -> LG.LogSource -> LG.LogLevel -> Bool
+minLevelFilter l _ l' = l' >= l
+
+infoLevelFilter :: LG.LogSource -> LG.LogLevel -> Bool
+infoLevelFilter = minLevelFilter LG.LevelInfo
diff --git a/lib/OpenAPIPetstore/MimeTypes.hs b/lib/OpenAPIPetstore/MimeTypes.hs
--- a/lib/OpenAPIPetstore/MimeTypes.hs
+++ b/lib/OpenAPIPetstore/MimeTypes.hs
@@ -201,3 +201,55 @@
 instance MimeUnrender MimeNoContent NoContent where mimeUnrender _ = P.Right . P.const NoContent
 
 
+-- * Custom Mime Types
+
+-- ** MimeXmlCharsetutf16
+
+data MimeXmlCharsetutf16 = MimeXmlCharsetutf16 deriving (P.Typeable)
+
+-- | @application/xml; charset=utf-16@
+instance MimeType MimeXmlCharsetutf16 where
+  mimeType _ = Just $ P.fromString "application/xml; charset=utf-16"
+-- instance MimeRender MimeXmlCharsetutf16 T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeXmlCharsetutf16 T.Text where mimeUnrender _ = undefined
+
+-- ** MimeXmlCharsetutf8
+
+data MimeXmlCharsetutf8 = MimeXmlCharsetutf8 deriving (P.Typeable)
+
+-- | @application/xml; charset=utf-8@
+instance MimeType MimeXmlCharsetutf8 where
+  mimeType _ = Just $ P.fromString "application/xml; charset=utf-8"
+-- instance MimeRender MimeXmlCharsetutf8 T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeXmlCharsetutf8 T.Text where mimeUnrender _ = undefined
+
+-- ** MimeTextxml
+
+data MimeTextxml = MimeTextxml deriving (P.Typeable)
+
+-- | @text/xml@
+instance MimeType MimeTextxml where
+  mimeType _ = Just $ P.fromString "text/xml"
+-- instance MimeRender MimeTextxml T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeTextxml T.Text where mimeUnrender _ = undefined
+
+-- ** MimeTextxmlCharsetutf16
+
+data MimeTextxmlCharsetutf16 = MimeTextxmlCharsetutf16 deriving (P.Typeable)
+
+-- | @text/xml; charset=utf-16@
+instance MimeType MimeTextxmlCharsetutf16 where
+  mimeType _ = Just $ P.fromString "text/xml; charset=utf-16"
+-- instance MimeRender MimeTextxmlCharsetutf16 T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeTextxmlCharsetutf16 T.Text where mimeUnrender _ = undefined
+
+-- ** MimeTextxmlCharsetutf8
+
+data MimeTextxmlCharsetutf8 = MimeTextxmlCharsetutf8 deriving (P.Typeable)
+
+-- | @text/xml; charset=utf-8@
+instance MimeType MimeTextxmlCharsetutf8 where
+  mimeType _ = Just $ P.fromString "text/xml; charset=utf-8"
+-- instance MimeRender MimeTextxmlCharsetutf8 T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeTextxmlCharsetutf8 T.Text where mimeUnrender _ = undefined
+
diff --git a/lib/OpenAPIPetstore/Model.hs b/lib/OpenAPIPetstore/Model.hs
--- a/lib/OpenAPIPetstore/Model.hs
+++ b/lib/OpenAPIPetstore/Model.hs
@@ -73,11 +73,14 @@
 newtype ApiKey = ApiKey { unApiKey :: Text } deriving (P.Eq, P.Show)
 
 -- ** Body
-newtype Body = Body { unBody :: Double } deriving (P.Eq, P.Show, A.ToJSON)
+newtype Body = Body { unBody :: [User] } deriving (P.Eq, P.Show, A.ToJSON)
 
 -- ** BodyBool
 newtype BodyBool = BodyBool { unBodyBool :: Bool } deriving (P.Eq, P.Show, A.ToJSON)
 
+-- ** BodyDouble
+newtype BodyDouble = BodyDouble { unBodyDouble :: Double } deriving (P.Eq, P.Show, A.ToJSON)
+
 -- ** BodyText
 newtype BodyText = BodyText { unBodyText :: Text } deriving (P.Eq, P.Show, A.ToJSON)
 
@@ -162,6 +165,9 @@
 -- ** ParamInteger
 newtype ParamInteger = ParamInteger { unParamInteger :: Int } deriving (P.Eq, P.Show)
 
+-- ** ParamMapMapStringText
+newtype ParamMapMapStringText = ParamMapMapStringText { unParamMapMapStringText :: (Map.Map String Text) } deriving (P.Eq, P.Show, A.ToJSON)
+
 -- ** ParamString
 newtype ParamString = ParamString { unParamString :: Text } deriving (P.Eq, P.Show)
 
@@ -177,9 +183,6 @@
 -- ** Query
 newtype Query = Query { unQuery :: Text } deriving (P.Eq, P.Show)
 
--- ** RequestBody
-newtype RequestBody = RequestBody { unRequestBody :: (Map.Map String Text) } deriving (P.Eq, P.Show, A.ToJSON)
-
 -- ** RequiredBooleanGroup
 newtype RequiredBooleanGroup = RequiredBooleanGroup { unRequiredBooleanGroup :: Bool } deriving (P.Eq, P.Show)
 
@@ -204,9 +207,6 @@
 -- ** Tags
 newtype Tags = Tags { unTags :: [Text] } deriving (P.Eq, P.Show)
 
--- ** User2
-newtype User2 = User2 { unUser2 :: [User] } deriving (P.Eq, P.Show, A.ToJSON)
-
 -- ** Username
 newtype Username = Username { unUsername :: Text } deriving (P.Eq, P.Show)
 
@@ -278,34 +278,6 @@
   , animalColor = Nothing
   }
 
--- ** AnimalFarm
--- | AnimalFarm
-data AnimalFarm = AnimalFarm
-  { 
-  } deriving (P.Show, P.Eq, P.Typeable)
-
--- | FromJSON AnimalFarm
-instance A.FromJSON AnimalFarm where
-  parseJSON = A.withObject "AnimalFarm" $ \o ->
-    pure AnimalFarm
-      
-
--- | ToJSON AnimalFarm
-instance A.ToJSON AnimalFarm where
-  toJSON AnimalFarm  =
-   _omitNulls
-      [ 
-      ]
-
-
--- | Construct a value of type 'AnimalFarm' (by applying it's required fields, if any)
-mkAnimalFarm
-  :: AnimalFarm
-mkAnimalFarm =
-  AnimalFarm
-  { 
-  }
-
 -- ** ApiResponse
 -- | ApiResponse
 data ApiResponse = ApiResponse
@@ -1326,34 +1298,6 @@
   { specialModelNameSpecialPropertyName = Nothing
   }
 
--- ** StringBooleanMap
--- | StringBooleanMap
-data StringBooleanMap = StringBooleanMap
-  { 
-  } deriving (P.Show, P.Eq, P.Typeable)
-
--- | FromJSON StringBooleanMap
-instance A.FromJSON StringBooleanMap where
-  parseJSON = A.withObject "StringBooleanMap" $ \o ->
-    pure StringBooleanMap
-      
-
--- | ToJSON StringBooleanMap
-instance A.ToJSON StringBooleanMap where
-  toJSON StringBooleanMap  =
-   _omitNulls
-      [ 
-      ]
-
-
--- | Construct a value of type 'StringBooleanMap' (by applying it's required fields, if any)
-mkStringBooleanMap
-  :: StringBooleanMap
-mkStringBooleanMap =
-  StringBooleanMap
-  { 
-  }
-
 -- ** Tag
 -- | Tag
 data Tag = Tag
@@ -1386,6 +1330,104 @@
   , tagName = Nothing
   }
 
+-- ** TypeHolderDefault
+-- | TypeHolderDefault
+data TypeHolderDefault = TypeHolderDefault
+  { typeHolderDefaultStringItem :: !(Text) -- ^ /Required/ "string_item"
+  , typeHolderDefaultNumberItem :: !(Double) -- ^ /Required/ "number_item"
+  , typeHolderDefaultIntegerItem :: !(Int) -- ^ /Required/ "integer_item"
+  , typeHolderDefaultBoolItem :: !(Bool) -- ^ /Required/ "bool_item"
+  , typeHolderDefaultArrayItem :: !([Int]) -- ^ /Required/ "array_item"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TypeHolderDefault
+instance A.FromJSON TypeHolderDefault where
+  parseJSON = A.withObject "TypeHolderDefault" $ \o ->
+    TypeHolderDefault
+      <$> (o .:  "string_item")
+      <*> (o .:  "number_item")
+      <*> (o .:  "integer_item")
+      <*> (o .:  "bool_item")
+      <*> (o .:  "array_item")
+
+-- | ToJSON TypeHolderDefault
+instance A.ToJSON TypeHolderDefault where
+  toJSON TypeHolderDefault {..} =
+   _omitNulls
+      [ "string_item" .= typeHolderDefaultStringItem
+      , "number_item" .= typeHolderDefaultNumberItem
+      , "integer_item" .= typeHolderDefaultIntegerItem
+      , "bool_item" .= typeHolderDefaultBoolItem
+      , "array_item" .= typeHolderDefaultArrayItem
+      ]
+
+
+-- | Construct a value of type 'TypeHolderDefault' (by applying it's required fields, if any)
+mkTypeHolderDefault
+  :: Text -- ^ 'typeHolderDefaultStringItem' 
+  -> Double -- ^ 'typeHolderDefaultNumberItem' 
+  -> Int -- ^ 'typeHolderDefaultIntegerItem' 
+  -> Bool -- ^ 'typeHolderDefaultBoolItem' 
+  -> [Int] -- ^ 'typeHolderDefaultArrayItem' 
+  -> TypeHolderDefault
+mkTypeHolderDefault typeHolderDefaultStringItem typeHolderDefaultNumberItem typeHolderDefaultIntegerItem typeHolderDefaultBoolItem typeHolderDefaultArrayItem =
+  TypeHolderDefault
+  { typeHolderDefaultStringItem
+  , typeHolderDefaultNumberItem
+  , typeHolderDefaultIntegerItem
+  , typeHolderDefaultBoolItem
+  , typeHolderDefaultArrayItem
+  }
+
+-- ** TypeHolderExample
+-- | TypeHolderExample
+data TypeHolderExample = TypeHolderExample
+  { typeHolderExampleStringItem :: !(Text) -- ^ /Required/ "string_item"
+  , typeHolderExampleNumberItem :: !(Double) -- ^ /Required/ "number_item"
+  , typeHolderExampleIntegerItem :: !(Int) -- ^ /Required/ "integer_item"
+  , typeHolderExampleBoolItem :: !(Bool) -- ^ /Required/ "bool_item"
+  , typeHolderExampleArrayItem :: !([Int]) -- ^ /Required/ "array_item"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TypeHolderExample
+instance A.FromJSON TypeHolderExample where
+  parseJSON = A.withObject "TypeHolderExample" $ \o ->
+    TypeHolderExample
+      <$> (o .:  "string_item")
+      <*> (o .:  "number_item")
+      <*> (o .:  "integer_item")
+      <*> (o .:  "bool_item")
+      <*> (o .:  "array_item")
+
+-- | ToJSON TypeHolderExample
+instance A.ToJSON TypeHolderExample where
+  toJSON TypeHolderExample {..} =
+   _omitNulls
+      [ "string_item" .= typeHolderExampleStringItem
+      , "number_item" .= typeHolderExampleNumberItem
+      , "integer_item" .= typeHolderExampleIntegerItem
+      , "bool_item" .= typeHolderExampleBoolItem
+      , "array_item" .= typeHolderExampleArrayItem
+      ]
+
+
+-- | Construct a value of type 'TypeHolderExample' (by applying it's required fields, if any)
+mkTypeHolderExample
+  :: Text -- ^ 'typeHolderExampleStringItem' 
+  -> Double -- ^ 'typeHolderExampleNumberItem' 
+  -> Int -- ^ 'typeHolderExampleIntegerItem' 
+  -> Bool -- ^ 'typeHolderExampleBoolItem' 
+  -> [Int] -- ^ 'typeHolderExampleArrayItem' 
+  -> TypeHolderExample
+mkTypeHolderExample typeHolderExampleStringItem typeHolderExampleNumberItem typeHolderExampleIntegerItem typeHolderExampleBoolItem typeHolderExampleArrayItem =
+  TypeHolderExample
+  { typeHolderExampleStringItem
+  , typeHolderExampleNumberItem
+  , typeHolderExampleIntegerItem
+  , typeHolderExampleBoolItem
+  , typeHolderExampleArrayItem
+  }
+
 -- ** User
 -- | User
 data User = User
@@ -1442,7 +1484,147 @@
   , userUserStatus = Nothing
   }
 
+-- ** XmlItem
+-- | XmlItem
+data XmlItem = XmlItem
+  { xmlItemAttributeString :: !(Maybe Text) -- ^ "attribute_string"
+  , xmlItemAttributeNumber :: !(Maybe Double) -- ^ "attribute_number"
+  , xmlItemAttributeInteger :: !(Maybe Int) -- ^ "attribute_integer"
+  , xmlItemAttributeBoolean :: !(Maybe Bool) -- ^ "attribute_boolean"
+  , xmlItemWrappedArray :: !(Maybe [Int]) -- ^ "wrapped_array"
+  , xmlItemNameString :: !(Maybe Text) -- ^ "name_string"
+  , xmlItemNameNumber :: !(Maybe Double) -- ^ "name_number"
+  , xmlItemNameInteger :: !(Maybe Int) -- ^ "name_integer"
+  , xmlItemNameBoolean :: !(Maybe Bool) -- ^ "name_boolean"
+  , xmlItemNameArray :: !(Maybe [Int]) -- ^ "name_array"
+  , xmlItemNameWrappedArray :: !(Maybe [Int]) -- ^ "name_wrapped_array"
+  , xmlItemPrefixString :: !(Maybe Text) -- ^ "prefix_string"
+  , xmlItemPrefixNumber :: !(Maybe Double) -- ^ "prefix_number"
+  , xmlItemPrefixInteger :: !(Maybe Int) -- ^ "prefix_integer"
+  , xmlItemPrefixBoolean :: !(Maybe Bool) -- ^ "prefix_boolean"
+  , xmlItemPrefixArray :: !(Maybe [Int]) -- ^ "prefix_array"
+  , xmlItemPrefixWrappedArray :: !(Maybe [Int]) -- ^ "prefix_wrapped_array"
+  , xmlItemNamespaceString :: !(Maybe Text) -- ^ "namespace_string"
+  , xmlItemNamespaceNumber :: !(Maybe Double) -- ^ "namespace_number"
+  , xmlItemNamespaceInteger :: !(Maybe Int) -- ^ "namespace_integer"
+  , xmlItemNamespaceBoolean :: !(Maybe Bool) -- ^ "namespace_boolean"
+  , xmlItemNamespaceArray :: !(Maybe [Int]) -- ^ "namespace_array"
+  , xmlItemNamespaceWrappedArray :: !(Maybe [Int]) -- ^ "namespace_wrapped_array"
+  , xmlItemPrefixNsString :: !(Maybe Text) -- ^ "prefix_ns_string"
+  , xmlItemPrefixNsNumber :: !(Maybe Double) -- ^ "prefix_ns_number"
+  , xmlItemPrefixNsInteger :: !(Maybe Int) -- ^ "prefix_ns_integer"
+  , xmlItemPrefixNsBoolean :: !(Maybe Bool) -- ^ "prefix_ns_boolean"
+  , xmlItemPrefixNsArray :: !(Maybe [Int]) -- ^ "prefix_ns_array"
+  , xmlItemPrefixNsWrappedArray :: !(Maybe [Int]) -- ^ "prefix_ns_wrapped_array"
+  } deriving (P.Show, P.Eq, P.Typeable)
 
+-- | FromJSON XmlItem
+instance A.FromJSON XmlItem where
+  parseJSON = A.withObject "XmlItem" $ \o ->
+    XmlItem
+      <$> (o .:? "attribute_string")
+      <*> (o .:? "attribute_number")
+      <*> (o .:? "attribute_integer")
+      <*> (o .:? "attribute_boolean")
+      <*> (o .:? "wrapped_array")
+      <*> (o .:? "name_string")
+      <*> (o .:? "name_number")
+      <*> (o .:? "name_integer")
+      <*> (o .:? "name_boolean")
+      <*> (o .:? "name_array")
+      <*> (o .:? "name_wrapped_array")
+      <*> (o .:? "prefix_string")
+      <*> (o .:? "prefix_number")
+      <*> (o .:? "prefix_integer")
+      <*> (o .:? "prefix_boolean")
+      <*> (o .:? "prefix_array")
+      <*> (o .:? "prefix_wrapped_array")
+      <*> (o .:? "namespace_string")
+      <*> (o .:? "namespace_number")
+      <*> (o .:? "namespace_integer")
+      <*> (o .:? "namespace_boolean")
+      <*> (o .:? "namespace_array")
+      <*> (o .:? "namespace_wrapped_array")
+      <*> (o .:? "prefix_ns_string")
+      <*> (o .:? "prefix_ns_number")
+      <*> (o .:? "prefix_ns_integer")
+      <*> (o .:? "prefix_ns_boolean")
+      <*> (o .:? "prefix_ns_array")
+      <*> (o .:? "prefix_ns_wrapped_array")
+
+-- | ToJSON XmlItem
+instance A.ToJSON XmlItem where
+  toJSON XmlItem {..} =
+   _omitNulls
+      [ "attribute_string" .= xmlItemAttributeString
+      , "attribute_number" .= xmlItemAttributeNumber
+      , "attribute_integer" .= xmlItemAttributeInteger
+      , "attribute_boolean" .= xmlItemAttributeBoolean
+      , "wrapped_array" .= xmlItemWrappedArray
+      , "name_string" .= xmlItemNameString
+      , "name_number" .= xmlItemNameNumber
+      , "name_integer" .= xmlItemNameInteger
+      , "name_boolean" .= xmlItemNameBoolean
+      , "name_array" .= xmlItemNameArray
+      , "name_wrapped_array" .= xmlItemNameWrappedArray
+      , "prefix_string" .= xmlItemPrefixString
+      , "prefix_number" .= xmlItemPrefixNumber
+      , "prefix_integer" .= xmlItemPrefixInteger
+      , "prefix_boolean" .= xmlItemPrefixBoolean
+      , "prefix_array" .= xmlItemPrefixArray
+      , "prefix_wrapped_array" .= xmlItemPrefixWrappedArray
+      , "namespace_string" .= xmlItemNamespaceString
+      , "namespace_number" .= xmlItemNamespaceNumber
+      , "namespace_integer" .= xmlItemNamespaceInteger
+      , "namespace_boolean" .= xmlItemNamespaceBoolean
+      , "namespace_array" .= xmlItemNamespaceArray
+      , "namespace_wrapped_array" .= xmlItemNamespaceWrappedArray
+      , "prefix_ns_string" .= xmlItemPrefixNsString
+      , "prefix_ns_number" .= xmlItemPrefixNsNumber
+      , "prefix_ns_integer" .= xmlItemPrefixNsInteger
+      , "prefix_ns_boolean" .= xmlItemPrefixNsBoolean
+      , "prefix_ns_array" .= xmlItemPrefixNsArray
+      , "prefix_ns_wrapped_array" .= xmlItemPrefixNsWrappedArray
+      ]
+
+
+-- | Construct a value of type 'XmlItem' (by applying it's required fields, if any)
+mkXmlItem
+  :: XmlItem
+mkXmlItem =
+  XmlItem
+  { xmlItemAttributeString = Nothing
+  , xmlItemAttributeNumber = Nothing
+  , xmlItemAttributeInteger = Nothing
+  , xmlItemAttributeBoolean = Nothing
+  , xmlItemWrappedArray = Nothing
+  , xmlItemNameString = Nothing
+  , xmlItemNameNumber = Nothing
+  , xmlItemNameInteger = Nothing
+  , xmlItemNameBoolean = Nothing
+  , xmlItemNameArray = Nothing
+  , xmlItemNameWrappedArray = Nothing
+  , xmlItemPrefixString = Nothing
+  , xmlItemPrefixNumber = Nothing
+  , xmlItemPrefixInteger = Nothing
+  , xmlItemPrefixBoolean = Nothing
+  , xmlItemPrefixArray = Nothing
+  , xmlItemPrefixWrappedArray = Nothing
+  , xmlItemNamespaceString = Nothing
+  , xmlItemNamespaceNumber = Nothing
+  , xmlItemNamespaceInteger = Nothing
+  , xmlItemNamespaceBoolean = Nothing
+  , xmlItemNamespaceArray = Nothing
+  , xmlItemNamespaceWrappedArray = Nothing
+  , xmlItemPrefixNsString = Nothing
+  , xmlItemPrefixNsNumber = Nothing
+  , xmlItemPrefixNsInteger = Nothing
+  , xmlItemPrefixNsBoolean = Nothing
+  , xmlItemPrefixNsArray = Nothing
+  , xmlItemPrefixNsWrappedArray = Nothing
+  }
+
+
 -- * Enums
 
 
@@ -1885,4 +2067,5 @@
       then req `setHeader` toHeader ("Authorization", "Bearer " <> secret) 
            & L.over rAuthTypesL (P.filter (/= P.typeOf a))
       else req
+
 
diff --git a/lib/OpenAPIPetstore/ModelLens.hs b/lib/OpenAPIPetstore/ModelLens.hs
--- a/lib/OpenAPIPetstore/ModelLens.hs
+++ b/lib/OpenAPIPetstore/ModelLens.hs
@@ -64,10 +64,6 @@
 
 
 
--- * AnimalFarm
-
-
-
 -- * ApiResponse
 
 -- | 'apiResponseCode' Lens
@@ -603,10 +599,6 @@
 
 
 
--- * StringBooleanMap
-
-
-
 -- * Tag
 
 -- | 'tagId' Lens
@@ -621,6 +613,64 @@
 
 
 
+-- * TypeHolderDefault
+
+-- | 'typeHolderDefaultStringItem' Lens
+typeHolderDefaultStringItemL :: Lens_' TypeHolderDefault (Text)
+typeHolderDefaultStringItemL f TypeHolderDefault{..} = (\typeHolderDefaultStringItem -> TypeHolderDefault { typeHolderDefaultStringItem, ..} ) <$> f typeHolderDefaultStringItem
+{-# INLINE typeHolderDefaultStringItemL #-}
+
+-- | 'typeHolderDefaultNumberItem' Lens
+typeHolderDefaultNumberItemL :: Lens_' TypeHolderDefault (Double)
+typeHolderDefaultNumberItemL f TypeHolderDefault{..} = (\typeHolderDefaultNumberItem -> TypeHolderDefault { typeHolderDefaultNumberItem, ..} ) <$> f typeHolderDefaultNumberItem
+{-# INLINE typeHolderDefaultNumberItemL #-}
+
+-- | 'typeHolderDefaultIntegerItem' Lens
+typeHolderDefaultIntegerItemL :: Lens_' TypeHolderDefault (Int)
+typeHolderDefaultIntegerItemL f TypeHolderDefault{..} = (\typeHolderDefaultIntegerItem -> TypeHolderDefault { typeHolderDefaultIntegerItem, ..} ) <$> f typeHolderDefaultIntegerItem
+{-# INLINE typeHolderDefaultIntegerItemL #-}
+
+-- | 'typeHolderDefaultBoolItem' Lens
+typeHolderDefaultBoolItemL :: Lens_' TypeHolderDefault (Bool)
+typeHolderDefaultBoolItemL f TypeHolderDefault{..} = (\typeHolderDefaultBoolItem -> TypeHolderDefault { typeHolderDefaultBoolItem, ..} ) <$> f typeHolderDefaultBoolItem
+{-# INLINE typeHolderDefaultBoolItemL #-}
+
+-- | 'typeHolderDefaultArrayItem' Lens
+typeHolderDefaultArrayItemL :: Lens_' TypeHolderDefault ([Int])
+typeHolderDefaultArrayItemL f TypeHolderDefault{..} = (\typeHolderDefaultArrayItem -> TypeHolderDefault { typeHolderDefaultArrayItem, ..} ) <$> f typeHolderDefaultArrayItem
+{-# INLINE typeHolderDefaultArrayItemL #-}
+
+
+
+-- * TypeHolderExample
+
+-- | 'typeHolderExampleStringItem' Lens
+typeHolderExampleStringItemL :: Lens_' TypeHolderExample (Text)
+typeHolderExampleStringItemL f TypeHolderExample{..} = (\typeHolderExampleStringItem -> TypeHolderExample { typeHolderExampleStringItem, ..} ) <$> f typeHolderExampleStringItem
+{-# INLINE typeHolderExampleStringItemL #-}
+
+-- | 'typeHolderExampleNumberItem' Lens
+typeHolderExampleNumberItemL :: Lens_' TypeHolderExample (Double)
+typeHolderExampleNumberItemL f TypeHolderExample{..} = (\typeHolderExampleNumberItem -> TypeHolderExample { typeHolderExampleNumberItem, ..} ) <$> f typeHolderExampleNumberItem
+{-# INLINE typeHolderExampleNumberItemL #-}
+
+-- | 'typeHolderExampleIntegerItem' Lens
+typeHolderExampleIntegerItemL :: Lens_' TypeHolderExample (Int)
+typeHolderExampleIntegerItemL f TypeHolderExample{..} = (\typeHolderExampleIntegerItem -> TypeHolderExample { typeHolderExampleIntegerItem, ..} ) <$> f typeHolderExampleIntegerItem
+{-# INLINE typeHolderExampleIntegerItemL #-}
+
+-- | 'typeHolderExampleBoolItem' Lens
+typeHolderExampleBoolItemL :: Lens_' TypeHolderExample (Bool)
+typeHolderExampleBoolItemL f TypeHolderExample{..} = (\typeHolderExampleBoolItem -> TypeHolderExample { typeHolderExampleBoolItem, ..} ) <$> f typeHolderExampleBoolItem
+{-# INLINE typeHolderExampleBoolItemL #-}
+
+-- | 'typeHolderExampleArrayItem' Lens
+typeHolderExampleArrayItemL :: Lens_' TypeHolderExample ([Int])
+typeHolderExampleArrayItemL f TypeHolderExample{..} = (\typeHolderExampleArrayItem -> TypeHolderExample { typeHolderExampleArrayItem, ..} ) <$> f typeHolderExampleArrayItem
+{-# INLINE typeHolderExampleArrayItemL #-}
+
+
+
 -- * User
 
 -- | 'userId' Lens
@@ -662,5 +712,154 @@
 userUserStatusL :: Lens_' User (Maybe Int)
 userUserStatusL f User{..} = (\userUserStatus -> User { userUserStatus, ..} ) <$> f userUserStatus
 {-# INLINE userUserStatusL #-}
+
+
+
+-- * XmlItem
+
+-- | 'xmlItemAttributeString' Lens
+xmlItemAttributeStringL :: Lens_' XmlItem (Maybe Text)
+xmlItemAttributeStringL f XmlItem{..} = (\xmlItemAttributeString -> XmlItem { xmlItemAttributeString, ..} ) <$> f xmlItemAttributeString
+{-# INLINE xmlItemAttributeStringL #-}
+
+-- | 'xmlItemAttributeNumber' Lens
+xmlItemAttributeNumberL :: Lens_' XmlItem (Maybe Double)
+xmlItemAttributeNumberL f XmlItem{..} = (\xmlItemAttributeNumber -> XmlItem { xmlItemAttributeNumber, ..} ) <$> f xmlItemAttributeNumber
+{-# INLINE xmlItemAttributeNumberL #-}
+
+-- | 'xmlItemAttributeInteger' Lens
+xmlItemAttributeIntegerL :: Lens_' XmlItem (Maybe Int)
+xmlItemAttributeIntegerL f XmlItem{..} = (\xmlItemAttributeInteger -> XmlItem { xmlItemAttributeInteger, ..} ) <$> f xmlItemAttributeInteger
+{-# INLINE xmlItemAttributeIntegerL #-}
+
+-- | 'xmlItemAttributeBoolean' Lens
+xmlItemAttributeBooleanL :: Lens_' XmlItem (Maybe Bool)
+xmlItemAttributeBooleanL f XmlItem{..} = (\xmlItemAttributeBoolean -> XmlItem { xmlItemAttributeBoolean, ..} ) <$> f xmlItemAttributeBoolean
+{-# INLINE xmlItemAttributeBooleanL #-}
+
+-- | 'xmlItemWrappedArray' Lens
+xmlItemWrappedArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemWrappedArrayL f XmlItem{..} = (\xmlItemWrappedArray -> XmlItem { xmlItemWrappedArray, ..} ) <$> f xmlItemWrappedArray
+{-# INLINE xmlItemWrappedArrayL #-}
+
+-- | 'xmlItemNameString' Lens
+xmlItemNameStringL :: Lens_' XmlItem (Maybe Text)
+xmlItemNameStringL f XmlItem{..} = (\xmlItemNameString -> XmlItem { xmlItemNameString, ..} ) <$> f xmlItemNameString
+{-# INLINE xmlItemNameStringL #-}
+
+-- | 'xmlItemNameNumber' Lens
+xmlItemNameNumberL :: Lens_' XmlItem (Maybe Double)
+xmlItemNameNumberL f XmlItem{..} = (\xmlItemNameNumber -> XmlItem { xmlItemNameNumber, ..} ) <$> f xmlItemNameNumber
+{-# INLINE xmlItemNameNumberL #-}
+
+-- | 'xmlItemNameInteger' Lens
+xmlItemNameIntegerL :: Lens_' XmlItem (Maybe Int)
+xmlItemNameIntegerL f XmlItem{..} = (\xmlItemNameInteger -> XmlItem { xmlItemNameInteger, ..} ) <$> f xmlItemNameInteger
+{-# INLINE xmlItemNameIntegerL #-}
+
+-- | 'xmlItemNameBoolean' Lens
+xmlItemNameBooleanL :: Lens_' XmlItem (Maybe Bool)
+xmlItemNameBooleanL f XmlItem{..} = (\xmlItemNameBoolean -> XmlItem { xmlItemNameBoolean, ..} ) <$> f xmlItemNameBoolean
+{-# INLINE xmlItemNameBooleanL #-}
+
+-- | 'xmlItemNameArray' Lens
+xmlItemNameArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemNameArrayL f XmlItem{..} = (\xmlItemNameArray -> XmlItem { xmlItemNameArray, ..} ) <$> f xmlItemNameArray
+{-# INLINE xmlItemNameArrayL #-}
+
+-- | 'xmlItemNameWrappedArray' Lens
+xmlItemNameWrappedArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemNameWrappedArrayL f XmlItem{..} = (\xmlItemNameWrappedArray -> XmlItem { xmlItemNameWrappedArray, ..} ) <$> f xmlItemNameWrappedArray
+{-# INLINE xmlItemNameWrappedArrayL #-}
+
+-- | 'xmlItemPrefixString' Lens
+xmlItemPrefixStringL :: Lens_' XmlItem (Maybe Text)
+xmlItemPrefixStringL f XmlItem{..} = (\xmlItemPrefixString -> XmlItem { xmlItemPrefixString, ..} ) <$> f xmlItemPrefixString
+{-# INLINE xmlItemPrefixStringL #-}
+
+-- | 'xmlItemPrefixNumber' Lens
+xmlItemPrefixNumberL :: Lens_' XmlItem (Maybe Double)
+xmlItemPrefixNumberL f XmlItem{..} = (\xmlItemPrefixNumber -> XmlItem { xmlItemPrefixNumber, ..} ) <$> f xmlItemPrefixNumber
+{-# INLINE xmlItemPrefixNumberL #-}
+
+-- | 'xmlItemPrefixInteger' Lens
+xmlItemPrefixIntegerL :: Lens_' XmlItem (Maybe Int)
+xmlItemPrefixIntegerL f XmlItem{..} = (\xmlItemPrefixInteger -> XmlItem { xmlItemPrefixInteger, ..} ) <$> f xmlItemPrefixInteger
+{-# INLINE xmlItemPrefixIntegerL #-}
+
+-- | 'xmlItemPrefixBoolean' Lens
+xmlItemPrefixBooleanL :: Lens_' XmlItem (Maybe Bool)
+xmlItemPrefixBooleanL f XmlItem{..} = (\xmlItemPrefixBoolean -> XmlItem { xmlItemPrefixBoolean, ..} ) <$> f xmlItemPrefixBoolean
+{-# INLINE xmlItemPrefixBooleanL #-}
+
+-- | 'xmlItemPrefixArray' Lens
+xmlItemPrefixArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemPrefixArrayL f XmlItem{..} = (\xmlItemPrefixArray -> XmlItem { xmlItemPrefixArray, ..} ) <$> f xmlItemPrefixArray
+{-# INLINE xmlItemPrefixArrayL #-}
+
+-- | 'xmlItemPrefixWrappedArray' Lens
+xmlItemPrefixWrappedArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemPrefixWrappedArrayL f XmlItem{..} = (\xmlItemPrefixWrappedArray -> XmlItem { xmlItemPrefixWrappedArray, ..} ) <$> f xmlItemPrefixWrappedArray
+{-# INLINE xmlItemPrefixWrappedArrayL #-}
+
+-- | 'xmlItemNamespaceString' Lens
+xmlItemNamespaceStringL :: Lens_' XmlItem (Maybe Text)
+xmlItemNamespaceStringL f XmlItem{..} = (\xmlItemNamespaceString -> XmlItem { xmlItemNamespaceString, ..} ) <$> f xmlItemNamespaceString
+{-# INLINE xmlItemNamespaceStringL #-}
+
+-- | 'xmlItemNamespaceNumber' Lens
+xmlItemNamespaceNumberL :: Lens_' XmlItem (Maybe Double)
+xmlItemNamespaceNumberL f XmlItem{..} = (\xmlItemNamespaceNumber -> XmlItem { xmlItemNamespaceNumber, ..} ) <$> f xmlItemNamespaceNumber
+{-# INLINE xmlItemNamespaceNumberL #-}
+
+-- | 'xmlItemNamespaceInteger' Lens
+xmlItemNamespaceIntegerL :: Lens_' XmlItem (Maybe Int)
+xmlItemNamespaceIntegerL f XmlItem{..} = (\xmlItemNamespaceInteger -> XmlItem { xmlItemNamespaceInteger, ..} ) <$> f xmlItemNamespaceInteger
+{-# INLINE xmlItemNamespaceIntegerL #-}
+
+-- | 'xmlItemNamespaceBoolean' Lens
+xmlItemNamespaceBooleanL :: Lens_' XmlItem (Maybe Bool)
+xmlItemNamespaceBooleanL f XmlItem{..} = (\xmlItemNamespaceBoolean -> XmlItem { xmlItemNamespaceBoolean, ..} ) <$> f xmlItemNamespaceBoolean
+{-# INLINE xmlItemNamespaceBooleanL #-}
+
+-- | 'xmlItemNamespaceArray' Lens
+xmlItemNamespaceArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemNamespaceArrayL f XmlItem{..} = (\xmlItemNamespaceArray -> XmlItem { xmlItemNamespaceArray, ..} ) <$> f xmlItemNamespaceArray
+{-# INLINE xmlItemNamespaceArrayL #-}
+
+-- | 'xmlItemNamespaceWrappedArray' Lens
+xmlItemNamespaceWrappedArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemNamespaceWrappedArrayL f XmlItem{..} = (\xmlItemNamespaceWrappedArray -> XmlItem { xmlItemNamespaceWrappedArray, ..} ) <$> f xmlItemNamespaceWrappedArray
+{-# INLINE xmlItemNamespaceWrappedArrayL #-}
+
+-- | 'xmlItemPrefixNsString' Lens
+xmlItemPrefixNsStringL :: Lens_' XmlItem (Maybe Text)
+xmlItemPrefixNsStringL f XmlItem{..} = (\xmlItemPrefixNsString -> XmlItem { xmlItemPrefixNsString, ..} ) <$> f xmlItemPrefixNsString
+{-# INLINE xmlItemPrefixNsStringL #-}
+
+-- | 'xmlItemPrefixNsNumber' Lens
+xmlItemPrefixNsNumberL :: Lens_' XmlItem (Maybe Double)
+xmlItemPrefixNsNumberL f XmlItem{..} = (\xmlItemPrefixNsNumber -> XmlItem { xmlItemPrefixNsNumber, ..} ) <$> f xmlItemPrefixNsNumber
+{-# INLINE xmlItemPrefixNsNumberL #-}
+
+-- | 'xmlItemPrefixNsInteger' Lens
+xmlItemPrefixNsIntegerL :: Lens_' XmlItem (Maybe Int)
+xmlItemPrefixNsIntegerL f XmlItem{..} = (\xmlItemPrefixNsInteger -> XmlItem { xmlItemPrefixNsInteger, ..} ) <$> f xmlItemPrefixNsInteger
+{-# INLINE xmlItemPrefixNsIntegerL #-}
+
+-- | 'xmlItemPrefixNsBoolean' Lens
+xmlItemPrefixNsBooleanL :: Lens_' XmlItem (Maybe Bool)
+xmlItemPrefixNsBooleanL f XmlItem{..} = (\xmlItemPrefixNsBoolean -> XmlItem { xmlItemPrefixNsBoolean, ..} ) <$> f xmlItemPrefixNsBoolean
+{-# INLINE xmlItemPrefixNsBooleanL #-}
+
+-- | 'xmlItemPrefixNsArray' Lens
+xmlItemPrefixNsArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemPrefixNsArrayL f XmlItem{..} = (\xmlItemPrefixNsArray -> XmlItem { xmlItemPrefixNsArray, ..} ) <$> f xmlItemPrefixNsArray
+{-# INLINE xmlItemPrefixNsArrayL #-}
+
+-- | 'xmlItemPrefixNsWrappedArray' Lens
+xmlItemPrefixNsWrappedArrayL :: Lens_' XmlItem (Maybe [Int])
+xmlItemPrefixNsWrappedArrayL f XmlItem{..} = (\xmlItemPrefixNsWrappedArray -> XmlItem { xmlItemPrefixNsWrappedArray, ..} ) <$> f xmlItemPrefixNsWrappedArray
+{-# INLINE xmlItemPrefixNsWrappedArrayL #-}
 
 
diff --git a/openapi-petstore.cabal b/openapi-petstore.cabal
--- a/openapi-petstore.cabal
+++ b/openapi-petstore.cabal
@@ -1,5 +1,5 @@
 name:           openapi-petstore
-version:        0.0.3.0
+version:        0.0.4.0
 synopsis:       Auto-generated openapi-petstore API Client
 description:    .
                 Client library for calling the OpenAPI Petstore API based on http-client.
@@ -12,13 +12,12 @@
                 .
                 OpenAPI version: 3.0.1
                 .
-                category:       Web
+category:       Web
 homepage:       https://openapi-generator.tech
 author:         Author Name Here
 maintainer:     author.name@email.com
 copyright:      YEAR - AUTHOR
 license:        MIT
-category:       Web
 build-type:     Simple
 cabal-version:  >= 1.10
 
@@ -26,6 +25,11 @@
     README.md
     openapi.yaml
 
+Flag UseKatip
+  Description: Use the katip package to provide logging (if false, use the default monad-logger package)
+  Default:     True
+  Manual:      True
+
 library
   hs-source-dirs:
       lib
@@ -36,10 +40,10 @@
     , base64-bytestring >1.0 && <2.0
     , bytestring >=0.10.0 && <0.11
     , case-insensitive
-    , containers >=0.5.0.0 && <0.6
+    , containers >=0.5.0.0 && <0.8
     , deepseq >= 1.4 && <1.6
     , exceptions >= 0.4
-    , http-api-data >= 0.3.4 && <0.4
+    , http-api-data >= 0.3.4 && <0.5
     , http-client >=0.5 && <0.6
     , http-client-tls
     , http-media >= 0.4 && < 0.8
@@ -47,7 +51,7 @@
     , iso8601-time >=0.1.3 && <0.2.0
     , microlens >= 0.4.3 && <0.5
     , mtl >=2.2.1
-    , network >=2.6.2 && <2.8
+    , network >=2.6.2 && <2.9
     , random >=1.1
     , safe-exceptions <0.2
     , text >=0.11 && <1.3
@@ -55,7 +59,6 @@
     , transformers >=0.4.0.0
     , unordered-containers
     , vector >=0.10.9 && <0.13
-    , katip >=0.4 && < 0.6
   other-modules:
       Paths_openapi_petstore
   exposed-modules:
@@ -74,6 +77,15 @@
       OpenAPIPetstore.Model
       OpenAPIPetstore.ModelLens
   default-language: Haskell2010
+
+  if flag(UseKatip)
+      build-depends: katip >=0.6 && < 1.0
+      other-modules: OpenAPIPetstore.LoggingKatip
+      cpp-options: -DUSE_KATIP
+  else
+      build-depends: monad-logger >=0.3 && <0.4
+      other-modules: OpenAPIPetstore.LoggingMonadLogger
+      cpp-options: -DUSE_MONAD_LOGGER
 
 test-suite tests
   type: exitcode-stdio-1.0
diff --git a/openapi.yaml b/openapi.yaml
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -42,6 +42,7 @@
       summary: Add a new pet to the store
       tags:
       - pet
+      x-codegen-request-body-name: body
     put:
       operationId: updatePet
       requestBody:
@@ -71,6 +72,7 @@
       summary: Update an existing pet
       tags:
       - pet
+      x-codegen-request-body-name: body
   /pet/findByStatus:
     get:
       description: Multiple status values can be provided with comma separated strings
@@ -327,6 +329,7 @@
       summary: Place an order for a pet
       tags:
       - store
+      x-codegen-request-body-name: body
   /store/order/{order_id}:
     delete:
       description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
@@ -398,6 +401,7 @@
       summary: Create user
       tags:
       - user
+      x-codegen-request-body-name: body
   /user/createWithArray:
     post:
       operationId: createUsersWithArrayInput
@@ -417,6 +421,7 @@
       summary: Creates list of users with given input array
       tags:
       - user
+      x-codegen-request-body-name: body
   /user/createWithList:
     post:
       operationId: createUsersWithListInput
@@ -436,6 +441,7 @@
       summary: Creates list of users with given input array
       tags:
       - user
+      x-codegen-request-body-name: body
   /user/login:
     get:
       operationId: loginUser
@@ -565,6 +571,7 @@
       summary: Updated user
       tags:
       - user
+      x-codegen-request-body-name: body
   /fake_classname_test:
     patch:
       description: To test class name in snake case
@@ -588,6 +595,7 @@
       summary: To test class name in snake case
       tags:
       - fake_classname_tags 123#$%^
+      x-codegen-request-body-name: body
   /fake:
     delete:
       description: Fake endpoint to test group parameters (optional)
@@ -756,6 +764,7 @@
       summary: To test "client" model
       tags:
       - fake
+      x-codegen-request-body-name: body
     post:
       description: |
         Fake endpoint for testing various parameters
@@ -874,6 +883,7 @@
           description: Output number
       tags:
       - fake
+      x-codegen-request-body-name: body
   /fake/outer/string:
     post:
       description: Test serialization of outer string types
@@ -894,6 +904,7 @@
           description: Output string
       tags:
       - fake
+      x-codegen-request-body-name: body
   /fake/outer/boolean:
     post:
       description: Test serialization of outer boolean types
@@ -914,6 +925,7 @@
           description: Output boolean
       tags:
       - fake
+      x-codegen-request-body-name: body
   /fake/outer/composite:
     post:
       description: Test serialization of object with outer number type
@@ -934,6 +946,7 @@
           description: Output composite
       tags:
       - fake
+      x-codegen-request-body-name: body
   /fake/jsonFormData:
     get:
       operationId: testJsonFormData
@@ -978,6 +991,7 @@
       summary: test inline additionalProperties
       tags:
       - fake
+      x-codegen-request-body-name: param
   /fake/body-with-query-params:
     put:
       operationId: testBodyWithQueryParams
@@ -999,6 +1013,41 @@
           description: Success
       tags:
       - fake
+      x-codegen-request-body-name: body
+  /fake/create_xml_item:
+    post:
+      description: this route creates an XmlItem
+      operationId: createXmlItem
+      requestBody:
+        content:
+          application/xml:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          application/xml; charset=utf-8:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          application/xml; charset=utf-16:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml; charset=utf-8:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+          text/xml; charset=utf-16:
+            schema:
+              $ref: '#/components/schemas/XmlItem'
+        description: XmlItem Body
+        required: true
+      responses:
+        200:
+          content: {}
+          description: successful operation
+      summary: creates an XmlItem
+      tags:
+      - fake
+      x-codegen-request-body-name: XmlItem
   /another-fake/dummy:
     patch:
       description: To test special tags and operation ID starting with number
@@ -1020,6 +1069,7 @@
       summary: To test special tags
       tags:
       - $another-fake?
+      x-codegen-request-body-name: body
   /fake/body-with-file-schema:
     put:
       description: For this test, the body for this request much reference a schema named `File`.
@@ -1036,6 +1086,7 @@
           description: Success
       tags:
       - fake
+      x-codegen-request-body-name: body
   /fake/{petId}/uploadImageWithRequiredFile:
     post:
       operationId: uploadFileWithRequiredFile
@@ -1078,6 +1129,40 @@
       - pet
 components:
   schemas:
+    Order:
+      example:
+        petId: 6
+        quantity: 1
+        id: 0
+        shipDate: 2000-01-23T04:56:07.000+00:00
+        complete: false
+        status: placed
+      properties:
+        id:
+          format: int64
+          type: integer
+        petId:
+          format: int64
+          type: integer
+        quantity:
+          format: int32
+          type: integer
+        shipDate:
+          format: date-time
+          type: string
+        status:
+          description: Order Status
+          enum:
+          - placed
+          - approved
+          - delivered
+          type: string
+        complete:
+          default: false
+          type: boolean
+      type: object
+      xml:
+        name: Order
     Category:
       example:
         name: default-name
@@ -1128,45 +1213,72 @@
       type: object
       xml:
         name: User
-    OuterNumber:
-      type: number
-    ArrayOfNumberOnly:
-      properties:
-        ArrayNumber:
-          items:
-            type: number
-          type: array
-      type: object
-    Capitalization:
+    Tag:
+      example:
+        name: name
+        id: 1
       properties:
-        smallCamel:
-          type: string
-        CapitalCamel:
-          type: string
-        small_Snake:
-          type: string
-        Capital_Snake:
-          type: string
-        SCA_ETH_Flow_Points:
-          type: string
-        ATT_NAME:
-          description: |
-            Name of the pet
+        id:
+          format: int64
+          type: integer
+        name:
           type: string
       type: object
-    MixedPropertiesAndAdditionalPropertiesClass:
+      xml:
+        name: Tag
+    Pet:
+      example:
+        photoUrls:
+        - photoUrls
+        - photoUrls
+        name: doggie
+        id: 0
+        category:
+          name: default-name
+          id: 6
+        tags:
+        - name: name
+          id: 1
+        - name: name
+          id: 1
+        status: available
       properties:
-        uuid:
-          format: uuid
+        id:
+          format: int64
+          type: integer
+          x-is-unique: true
+        category:
+          $ref: '#/components/schemas/Category'
+        name:
+          example: doggie
           type: string
-        dateTime:
-          format: date-time
+        photoUrls:
+          items:
+            type: string
+          type: array
+          xml:
+            name: photoUrl
+            wrapped: true
+        tags:
+          items:
+            $ref: '#/components/schemas/Tag'
+          type: array
+          xml:
+            name: tag
+            wrapped: true
+        status:
+          description: pet status in the store
+          enum:
+          - available
+          - pending
+          - sold
           type: string
-        map:
-          additionalProperties:
-            $ref: '#/components/schemas/Animal'
-          type: object
+      required:
+      - name
+      - photoUrls
       type: object
+      xml:
+        name: Pet
     ApiResponse:
       example:
         code: 0
@@ -1181,6 +1293,23 @@
         message:
           type: string
       type: object
+    $special[model.name]:
+      properties:
+        $special[property.name]:
+          format: int64
+          type: integer
+      type: object
+      xml:
+        name: $special[model.name]
+    Return:
+      description: Model for testing reserved words
+      properties:
+        return:
+          format: int32
+          type: integer
+      type: object
+      xml:
+        name: Return
     Name:
       description: Model for testing model name same as property name
       properties:
@@ -1201,23 +1330,6 @@
       type: object
       xml:
         name: Name
-    EnumClass:
-      default: -efg
-      enum:
-      - _abc
-      - -efg
-      - (xyz)
-      type: string
-    List:
-      properties:
-        123-list:
-          type: string
-      type: object
-    NumberOnly:
-      properties:
-        JustNumber:
-          type: number
-      type: object
     200_response:
       description: Model for testing model name starting with number
       properties:
@@ -1229,11 +1341,10 @@
       type: object
       xml:
         name: Name
-    Client:
-      example:
-        client: client
+    ClassModel:
+      description: Model for testing model with "_class" property
       properties:
-        client:
+        _class:
           type: string
       type: object
     Dog:
@@ -1243,6 +1354,95 @@
           breed:
             type: string
         type: object
+    Cat:
+      allOf:
+      - $ref: '#/components/schemas/Animal'
+      - properties:
+          declawed:
+            type: boolean
+        type: object
+    Animal:
+      discriminator:
+        propertyName: className
+      properties:
+        className:
+          type: string
+        color:
+          default: red
+          type: string
+      required:
+      - className
+      type: object
+    AnimalFarm:
+      items:
+        $ref: '#/components/schemas/Animal'
+      type: array
+    format_test:
+      properties:
+        integer:
+          maximum: 1E+2
+          minimum: 1E+1
+          type: integer
+        int32:
+          format: int32
+          maximum: 2E+2
+          minimum: 2E+1
+          type: integer
+        int64:
+          format: int64
+          type: integer
+        number:
+          maximum: 543.2
+          minimum: 32.1
+          type: number
+        float:
+          format: float
+          maximum: 987.6
+          minimum: 54.3
+          type: number
+        double:
+          format: double
+          maximum: 123.4
+          minimum: 67.8
+          type: number
+        string:
+          pattern: /[a-z]/i
+          type: string
+        byte:
+          format: byte
+          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
+          type: string
+        binary:
+          format: binary
+          type: string
+        date:
+          format: date
+          type: string
+        dateTime:
+          format: date-time
+          type: string
+        uuid:
+          example: 72f98069-206d-4f12-9f12-3d1e525a8e84
+          format: uuid
+          type: string
+        password:
+          format: password
+          maxLength: 64
+          minLength: 10
+          type: string
+      required:
+      - byte
+      - date
+      - number
+      - password
+      type: object
+    EnumClass:
+      default: -efg
+      enum:
+      - _abc
+      - -efg
+      - (xyz)
+      type: string
     Enum_Test:
       properties:
         enum_string:
@@ -1274,40 +1474,6 @@
       required:
       - enum_string_required
       type: object
-    Order:
-      example:
-        petId: 6
-        quantity: 1
-        id: 0
-        shipDate: 2000-01-23T04:56:07.000+00:00
-        complete: false
-        status: placed
-      properties:
-        id:
-          format: int64
-          type: integer
-        petId:
-          format: int64
-          type: integer
-        quantity:
-          format: int32
-          type: integer
-        shipDate:
-          format: date-time
-          type: string
-        status:
-          description: Order Status
-          enum:
-          - placed
-          - approved
-          - delivered
-          type: string
-        complete:
-          default: false
-          type: boolean
-      type: object
-      xml:
-        name: Order
     AdditionalPropertiesClass:
       properties:
         map_property:
@@ -1321,23 +1487,31 @@
             type: object
           type: object
       type: object
-    $special[model.name]:
+    MixedPropertiesAndAdditionalPropertiesClass:
       properties:
-        $special[property.name]:
-          format: int64
-          type: integer
+        uuid:
+          format: uuid
+          type: string
+        dateTime:
+          format: date-time
+          type: string
+        map:
+          additionalProperties:
+            $ref: '#/components/schemas/Animal'
+          type: object
       type: object
-      xml:
-        name: $special[model.name]
-    Return:
-      description: Model for testing reserved words
+    List:
       properties:
-        return:
-          format: int32
-          type: integer
+        123-list:
+          type: string
       type: object
-      xml:
-        name: Return
+    Client:
+      example:
+        client: client
+      properties:
+        client:
+          type: string
+      type: object
     ReadOnlyFirst:
       properties:
         bar:
@@ -1346,21 +1520,56 @@
         baz:
           type: string
       type: object
-    ArrayOfArrayOfNumberOnly:
+    hasOnlyReadOnly:
       properties:
-        ArrayArrayNumber:
-          items:
-            items:
-              type: number
-            type: array
-          type: array
+        bar:
+          readOnly: true
+          type: string
+        foo:
+          readOnly: true
+          type: string
       type: object
-    OuterEnum:
-      enum:
-      - placed
-      - approved
-      - delivered
-      type: string
+    Capitalization:
+      properties:
+        smallCamel:
+          type: string
+        CapitalCamel:
+          type: string
+        small_Snake:
+          type: string
+        Capital_Snake:
+          type: string
+        SCA_ETH_Flow_Points:
+          type: string
+        ATT_NAME:
+          description: |
+            Name of the pet
+          type: string
+      type: object
+    MapTest:
+      properties:
+        map_map_of_string:
+          additionalProperties:
+            additionalProperties:
+              type: string
+            type: object
+          type: object
+        map_of_enum_string:
+          additionalProperties:
+            enum:
+            - UPPER
+            - lower
+            type: string
+          type: object
+        direct_map:
+          additionalProperties:
+            type: boolean
+          type: object
+        indirect_map:
+          additionalProperties:
+            type: boolean
+          type: object
+      type: object
     ArrayTest:
       properties:
         array_of_string:
@@ -1381,78 +1590,27 @@
             type: array
           type: array
       type: object
-    OuterComposite:
-      example:
-        my_string: my_string
-        my_number: 0.80082819046101150206595775671303272247314453125
-        my_boolean: true
+    NumberOnly:
       properties:
-        my_number:
+        JustNumber:
           type: number
-        my_string:
-          type: string
-        my_boolean:
-          type: boolean
-          x-codegen-body-parameter-name: boolean_post_body
       type: object
-    format_test:
+    ArrayOfNumberOnly:
       properties:
-        integer:
-          maximum: 1E+2
-          minimum: 1E+1
-          type: integer
-        int32:
-          format: int32
-          maximum: 2E+2
-          minimum: 2E+1
-          type: integer
-        int64:
-          format: int64
-          type: integer
-        number:
-          maximum: 543.2
-          minimum: 32.1
-          type: number
-        float:
-          format: float
-          maximum: 987.6
-          minimum: 54.3
-          type: number
-        double:
-          format: double
-          maximum: 123.4
-          minimum: 67.8
-          type: number
-        string:
-          pattern: /[a-z]/i
-          type: string
-        byte:
-          format: byte
-          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
-          type: string
-        binary:
-          format: binary
-          type: string
-        date:
-          format: date
-          type: string
-        dateTime:
-          format: date-time
-          type: string
-        uuid:
-          format: uuid
-          type: string
-        password:
-          format: password
-          maxLength: 64
-          minLength: 10
-          type: string
-      required:
-      - byte
-      - date
-      - number
-      - password
+        ArrayNumber:
+          items:
+            type: number
+          type: array
       type: object
+    ArrayOfArrayOfNumberOnly:
+      properties:
+        ArrayArrayNumber:
+          items:
+            items:
+              type: number
+            type: array
+          type: array
+      type: object
     EnumArrays:
       properties:
         just_symbol:
@@ -1468,17 +1626,37 @@
             type: string
           type: array
       type: object
-    OuterString:
+    OuterEnum:
+      enum:
+      - placed
+      - approved
+      - delivered
       type: string
-    ClassModel:
-      description: Model for testing model with "_class" property
+    OuterComposite:
+      example:
+        my_string: my_string
+        my_number: 0.8008281904610115
+        my_boolean: true
       properties:
-        _class:
+        my_number:
+          type: number
+        my_string:
           type: string
+        my_boolean:
+          type: boolean
+          x-codegen-body-parameter-name: boolean_post_body
       type: object
+    OuterNumber:
+      type: number
+    OuterString:
+      type: string
     OuterBoolean:
       type: boolean
       x-codegen-body-parameter-name: boolean_post_body
+    StringBooleanMap:
+      additionalProperties:
+        type: boolean
+      type: object
     FileSchemaTestClass:
       example:
         file:
@@ -1494,70 +1672,6 @@
             $ref: '#/components/schemas/File'
           type: array
       type: object
-    Animal:
-      discriminator:
-        propertyName: className
-      properties:
-        className:
-          type: string
-        color:
-          default: red
-          type: string
-      required:
-      - className
-      type: object
-    StringBooleanMap:
-      additionalProperties:
-        type: boolean
-      type: object
-    Cat:
-      allOf:
-      - $ref: '#/components/schemas/Animal'
-      - properties:
-          declawed:
-            type: boolean
-        type: object
-    MapTest:
-      properties:
-        map_map_of_string:
-          additionalProperties:
-            additionalProperties:
-              type: string
-            type: object
-          type: object
-        map_of_enum_string:
-          additionalProperties:
-            enum:
-            - UPPER
-            - lower
-            type: string
-          type: object
-        direct_map:
-          additionalProperties:
-            type: boolean
-          type: object
-        indirect_map:
-          additionalProperties:
-            type: boolean
-          type: object
-      type: object
-    Tag:
-      example:
-        name: name
-        id: 1
-      properties:
-        id:
-          format: int64
-          type: integer
-        name:
-          type: string
-      type: object
-      xml:
-        name: Tag
-    AnimalFarm:
-      items:
-        $ref: '#/components/schemas/Animal'
-      type: array
     File:
       description: Must be named `File` for test.
       example:
@@ -1567,68 +1681,238 @@
           description: Test capitalization
           type: string
       type: object
-    Pet:
-      example:
-        photoUrls:
-        - photoUrls
-        - photoUrls
-        name: doggie
-        id: 0
-        category:
-          name: default-name
-          id: 6
-        tags:
-        - name: name
-          id: 1
-        - name: name
-          id: 1
-        status: available
+    TypeHolderDefault:
       properties:
-        id:
-          format: int64
+        string_item:
+          default: what
+          type: string
+        number_item:
+          type: number
+        integer_item:
           type: integer
-          x-is-unique: true
-        category:
-          $ref: '#/components/schemas/Category'
-        name:
-          example: doggie
+        bool_item:
+          default: true
+          type: boolean
+        array_item:
+          items:
+            type: integer
+          type: array
+      required:
+      - array_item
+      - bool_item
+      - integer_item
+      - number_item
+      - string_item
+      type: object
+    TypeHolderExample:
+      properties:
+        string_item:
+          example: what
           type: string
-        photoUrls:
+        number_item:
+          example: 1.234
+          type: number
+        integer_item:
+          example: -2
+          type: integer
+        bool_item:
+          example: true
+          type: boolean
+        array_item:
+          example:
+          - 0
+          - 1
+          - 2
+          - 3
           items:
-            type: string
+            type: integer
           type: array
+      required:
+      - array_item
+      - bool_item
+      - integer_item
+      - number_item
+      - string_item
+      type: object
+    XmlItem:
+      properties:
+        attribute_string:
+          example: string
+          type: string
           xml:
-            name: photoUrl
+            attribute: true
+        attribute_number:
+          example: 1.234
+          type: number
+          xml:
+            attribute: true
+        attribute_integer:
+          example: -2
+          type: integer
+          xml:
+            attribute: true
+        attribute_boolean:
+          example: true
+          type: boolean
+          xml:
+            attribute: true
+        wrapped_array:
+          items:
+            type: integer
+          type: array
+          xml:
             wrapped: true
-        tags:
+        name_string:
+          example: string
+          type: string
+          xml:
+            name: xml_name_string
+        name_number:
+          example: 1.234
+          type: number
+          xml:
+            name: xml_name_number
+        name_integer:
+          example: -2
+          type: integer
+          xml:
+            name: xml_name_integer
+        name_boolean:
+          example: true
+          type: boolean
+          xml:
+            name: xml_name_boolean
+        name_array:
           items:
-            $ref: '#/components/schemas/Tag'
+            type: integer
+            xml:
+              name: xml_name_array_item
           type: array
+        name_wrapped_array:
+          items:
+            type: integer
+            xml:
+              name: xml_name_wrapped_array_item
+          type: array
           xml:
-            name: tag
+            name: xml_name_wrapped_array
             wrapped: true
-        status:
-          description: pet status in the store
-          enum:
-          - available
-          - pending
-          - sold
+        prefix_string:
+          example: string
           type: string
-      required:
-      - name
-      - photoUrls
-      type: object
-      xml:
-        name: Pet
-    hasOnlyReadOnly:
-      properties:
-        bar:
-          readOnly: true
+          xml:
+            prefix: ab
+        prefix_number:
+          example: 1.234
+          type: number
+          xml:
+            prefix: cd
+        prefix_integer:
+          example: -2
+          type: integer
+          xml:
+            prefix: ef
+        prefix_boolean:
+          example: true
+          type: boolean
+          xml:
+            prefix: gh
+        prefix_array:
+          items:
+            type: integer
+            xml:
+              prefix: ij
+          type: array
+        prefix_wrapped_array:
+          items:
+            type: integer
+            xml:
+              prefix: mn
+          type: array
+          xml:
+            prefix: kl
+            wrapped: true
+        namespace_string:
+          example: string
           type: string
-        foo:
-          readOnly: true
+          xml:
+            namespace: http://a.com/schema
+        namespace_number:
+          example: 1.234
+          type: number
+          xml:
+            namespace: http://b.com/schema
+        namespace_integer:
+          example: -2
+          type: integer
+          xml:
+            namespace: http://c.com/schema
+        namespace_boolean:
+          example: true
+          type: boolean
+          xml:
+            namespace: http://d.com/schema
+        namespace_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://e.com/schema
+          type: array
+        namespace_wrapped_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://g.com/schema
+          type: array
+          xml:
+            namespace: http://f.com/schema
+            wrapped: true
+        prefix_ns_string:
+          example: string
           type: string
+          xml:
+            namespace: http://a.com/schema
+            prefix: a
+        prefix_ns_number:
+          example: 1.234
+          type: number
+          xml:
+            namespace: http://b.com/schema
+            prefix: b
+        prefix_ns_integer:
+          example: -2
+          type: integer
+          xml:
+            namespace: http://c.com/schema
+            prefix: c
+        prefix_ns_boolean:
+          example: true
+          type: boolean
+          xml:
+            namespace: http://d.com/schema
+            prefix: d
+        prefix_ns_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://e.com/schema
+              prefix: e
+          type: array
+        prefix_ns_wrapped_array:
+          items:
+            type: integer
+            xml:
+              namespace: http://g.com/schema
+              prefix: g
+          type: array
+          xml:
+            namespace: http://f.com/schema
+            prefix: f
+            wrapped: true
       type: object
+      xml:
+        namespace: http://a.com/schema
+        prefix: pre
   securitySchemes:
     petstore_auth:
       flows:
@@ -1638,9 +1922,6 @@
             write:pets: modify pets in your account
             read:pets: read your pets
       type: oauth2
-    http_basic_test:
-      scheme: basic
-      type: http
     api_key:
       in: header
       name: api_key
@@ -1649,3 +1930,6 @@
       in: query
       name: api_key_query
       type: apiKey
+    http_basic_test:
+      scheme: basic
+      type: http
diff --git a/tests/Instances.hs b/tests/Instances.hs
--- a/tests/Instances.hs
+++ b/tests/Instances.hs
@@ -101,11 +101,6 @@
       <$> arbitrary -- animalClassName :: Text
       <*> arbitrary -- animalColor :: Maybe Text
     
-instance Arbitrary AnimalFarm where
-  arbitrary =
-    
-    pure AnimalFarm
-     
 instance Arbitrary ApiResponse where
   arbitrary =
     ApiResponse
@@ -301,17 +296,30 @@
     SpecialModelName
       <$> arbitrary -- specialModelNameSpecialPropertyName :: Maybe Integer
     
-instance Arbitrary StringBooleanMap where
-  arbitrary =
-    
-    pure StringBooleanMap
-     
 instance Arbitrary Tag where
   arbitrary =
     Tag
       <$> arbitrary -- tagId :: Maybe Integer
       <*> arbitrary -- tagName :: Maybe Text
     
+instance Arbitrary TypeHolderDefault where
+  arbitrary =
+    TypeHolderDefault
+      <$> arbitrary -- typeHolderDefaultStringItem :: Text
+      <*> arbitrary -- typeHolderDefaultNumberItem :: Double
+      <*> arbitrary -- typeHolderDefaultIntegerItem :: Int
+      <*> arbitrary -- typeHolderDefaultBoolItem :: Bool
+      <*> arbitrary -- typeHolderDefaultArrayItem :: [Int]
+    
+instance Arbitrary TypeHolderExample where
+  arbitrary =
+    TypeHolderExample
+      <$> arbitrary -- typeHolderExampleStringItem :: Text
+      <*> arbitrary -- typeHolderExampleNumberItem :: Double
+      <*> arbitrary -- typeHolderExampleIntegerItem :: Int
+      <*> arbitrary -- typeHolderExampleBoolItem :: Bool
+      <*> arbitrary -- typeHolderExampleArrayItem :: [Int]
+    
 instance Arbitrary User where
   arbitrary =
     User
@@ -323,6 +331,39 @@
       <*> arbitrary -- userPassword :: Maybe Text
       <*> arbitrary -- userPhone :: Maybe Text
       <*> arbitrary -- userUserStatus :: Maybe Int
+    
+instance Arbitrary XmlItem where
+  arbitrary =
+    XmlItem
+      <$> arbitrary -- xmlItemAttributeString :: Maybe Text
+      <*> arbitrary -- xmlItemAttributeNumber :: Maybe Double
+      <*> arbitrary -- xmlItemAttributeInteger :: Maybe Int
+      <*> arbitrary -- xmlItemAttributeBoolean :: Maybe Bool
+      <*> arbitrary -- xmlItemWrappedArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemNameString :: Maybe Text
+      <*> arbitrary -- xmlItemNameNumber :: Maybe Double
+      <*> arbitrary -- xmlItemNameInteger :: Maybe Int
+      <*> arbitrary -- xmlItemNameBoolean :: Maybe Bool
+      <*> arbitrary -- xmlItemNameArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemNameWrappedArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemPrefixString :: Maybe Text
+      <*> arbitrary -- xmlItemPrefixNumber :: Maybe Double
+      <*> arbitrary -- xmlItemPrefixInteger :: Maybe Int
+      <*> arbitrary -- xmlItemPrefixBoolean :: Maybe Bool
+      <*> arbitrary -- xmlItemPrefixArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemPrefixWrappedArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemNamespaceString :: Maybe Text
+      <*> arbitrary -- xmlItemNamespaceNumber :: Maybe Double
+      <*> arbitrary -- xmlItemNamespaceInteger :: Maybe Int
+      <*> arbitrary -- xmlItemNamespaceBoolean :: Maybe Bool
+      <*> arbitrary -- xmlItemNamespaceArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemNamespaceWrappedArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemPrefixNsString :: Maybe Text
+      <*> arbitrary -- xmlItemPrefixNsNumber :: Maybe Double
+      <*> arbitrary -- xmlItemPrefixNsInteger :: Maybe Int
+      <*> arbitrary -- xmlItemPrefixNsBoolean :: Maybe Bool
+      <*> arbitrary -- xmlItemPrefixNsArray :: Maybe [Int]
+      <*> arbitrary -- xmlItemPrefixNsWrappedArray :: Maybe [Int]
     
 
 
diff --git a/tests/Test.hs b/tests/Test.hs
--- a/tests/Test.hs
+++ b/tests/Test.hs
@@ -22,7 +22,6 @@
       pure ()
       propMimeEq MimeJSON (Proxy :: Proxy AdditionalPropertiesClass)
       propMimeEq MimeJSON (Proxy :: Proxy Animal)
-      propMimeEq MimeJSON (Proxy :: Proxy AnimalFarm)
       propMimeEq MimeJSON (Proxy :: Proxy ApiResponse)
       propMimeEq MimeJSON (Proxy :: Proxy ArrayOfArrayOfNumberOnly)
       propMimeEq MimeJSON (Proxy :: Proxy ArrayOfNumberOnly)
@@ -53,7 +52,9 @@
       propMimeEq MimeJSON (Proxy :: Proxy Pet)
       propMimeEq MimeJSON (Proxy :: Proxy ReadOnlyFirst)
       propMimeEq MimeJSON (Proxy :: Proxy SpecialModelName)
-      propMimeEq MimeJSON (Proxy :: Proxy StringBooleanMap)
       propMimeEq MimeJSON (Proxy :: Proxy Tag)
+      propMimeEq MimeJSON (Proxy :: Proxy TypeHolderDefault)
+      propMimeEq MimeJSON (Proxy :: Proxy TypeHolderExample)
       propMimeEq MimeJSON (Proxy :: Proxy User)
+      propMimeEq MimeJSON (Proxy :: Proxy XmlItem)
       
