diff --git a/docs/user/cards.rst b/docs/user/cards.rst
index 9a7352f..bc48550 100644
--- a/docs/user/cards.rst
+++ b/docs/user/cards.rst
@@ -8,7 +8,7 @@ Webex supports `AdaptiveCards <https://www.adaptivecards.io/>`_ to allow
 new levels of interactivity for bots and integrations. You can read more about
 how cards and buttons work `in the official guide <https://developer.webex.com/docs/api/guides/cards>`_.
 
-In this guide I want to cover the abstraction built into the webexpythonsdk that
+In this guide we want to cover the abstraction built into the webexpythonsdk that
 lets you author adaptive cards in pure python without having to touch the
 underlying JSON of an adaptive card.
 
@@ -22,7 +22,7 @@ Lets dive into a simple example that sends a card to a room
     from webexpythonsdk import WebexAPI
     from webexpythonsdk.models.cards.card import AdaptiveCard
     from webexpythonsdk.models.cards.inputs import Text, Number
-    from webexpythonsdk.models.cards.components import TextBlock
+    from webexpythonsdk.models.cards.card_elements import TextBlock
     from webexpythonsdk.models.cards.actions import Submit
 
     greeting = TextBlock("Hey hello there! I am a adaptive card")
diff --git a/docs/user/migrate.rst b/docs/user/migrate.rst
index e8963e3..d4c3b61 100644
--- a/docs/user/migrate.rst
+++ b/docs/user/migrate.rst
@@ -8,7 +8,7 @@ Migration
 
 This *should* 🤞 be easy!
 
-``webexpythonsdk`` is designed to be a drop-in replacement for the ``webexteamssdk`` package. The SDK interface and data objects are largely unchanged with only a few minor name changes.
+The transition from `webexteamssdk` to `webexpythonsdk` is not entirely a "drop-in replacement" due to substantial changes in class structures and functionalities. This guide aims to clarify these changes and offer solutions to ease the migration process.
 
 Major changes that you should be aware of:
 
@@ -17,7 +17,6 @@ Major changes that you should be aware of:
 * The primary API object has changed from ``WebexTeamsAPI`` to ``WebexAPI``
 
 
-
 ---------------
 Migration Guide
 ---------------
@@ -39,7 +38,9 @@ The following table summarizes the name changes that need to be made to migrate
 
 *Note:* The old ``WEBEX_TEAMS_ACCESS_TOKEN`` environment variable should continue to work with the new package; however, you will receive a deprecation warning. It is recommended to update the environment variable name to ``WEBEX_ACCESS_TOKEN``.
 
-**Doing a quick search-and-replace in your codebase should be all you need to do to migrate.**
+
+
+**Doing a quick search-and-replace in your codebase will help when migrating.**
 
 Detailed Steps
 --------------
@@ -64,6 +65,80 @@ Detailed Steps
 
     **Primary API Object:** Replace all instances of ``WebexTeamsAPI`` with ``WebexAPI``.
 
+Key Changes For Adaptive Cards
+------------------------------
+
+Module and Class Changes
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following table outlines the changes in module and class names:
+
+.. list-table::
+   :widths: 25 25 50
+   :header-rows: 1
+
+   * - Old Module/Class
+     - New Module/Class
+     - Example Usage
+   * - `webexteamssdk.models.cards.components.TextBlock`
+     - `webexpythonsdk.models.cards.card_elements.TextBlock`
+     - `TextBlock(color=Colors.light)`
+   * - `webexteamssdk.models.cards.container.ColumnSet`
+     - `webexpythonsdk.models.cards.containers.ColumnSet`
+     - `ColumnSet(columns=[Column()])`
+   * - `webexteamssdk.models.cards.components.Image`
+     - `webexpythonsdk.models.cards.card_elements.Image`
+     - `Image(url="https://example.com/image.jpg")`
+   * - `webexteamssdk.models.cards.components.Choice`
+     - `webexpythonsdk.models.cards.inputs.Choice`
+     - `Choice(title="Option", value="option")`
+   * - `webexteamssdk.models.cards.options.BlockElementHeight`
+     - `webexpythonsdk.models.cards.options.BlockElementHeight`
+     - `BlockElementHeight(height="stretch")`
+   * - New Imports
+     - `webexpythonsdk.models.cards.actions.OpenUrl`, `Submit`, `ShowCard`
+     - `OpenUrl(url="https://example.com")`
+   * - New Imports
+     - `webexpythonsdk.models.cards.types.BackgroundImage`
+     - `BackgroundImage(url="https://example.com/image.jpg")`
+
+Enums and Case Sensitivity
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Attributes now require specific enums for values, which are case-sensitive. For example:
+
+- **Previous**: `TextBlock.color = "Light"`
+- **New**: `TextBlock.color = Colors.light`
+
+Refer to the `Adaptive Cards TextBlock documentation <https://adaptivecards.io/explorer/TextBlock.html>`_ for valid enum values.
+
+Compatibility Solutions
+-----------------------
+
+Wrapper Classes
+~~~~~~~~~~~~~~~
+
+To facilitate backward compatibility, consider using the following wrapper classes:
+
+.. code-block:: python
+
+   # Example wrapper for components.py
+   from webexpythonsdk.models.cards.card_elements import TextBlock, Image
+   from webexpythonsdk.models.cards.containers import Column, Fact
+
+   # Example wrapper for container.py
+   from webexpythonsdk.models.cards.containers import Container, ColumnSet, FactSet
+
+Module Flag for Compatibility
+-----------------------------
+
+A module flag can be introduced to bypass the `validate_input` function where backward compatibility is needed. Ensure this flag is set before executing legacy code.
+
+.. code-block:: python
+
+   # Example usage
+   webexpythonsdk.enable_backward_compatibility(True)
+
 ----------------
 For Contributors
 ----------------
@@ -95,6 +170,7 @@ Project changes that you should be aware of:
     +-------------------------------------+-------------------------------+
 
 
+
 *Copyright (c) 2016-2024 Cisco and/or its affiliates.*
 
 
diff --git a/src/webexpythonsdk/models/cards/cards.py b/src/webexpythonsdk/models/cards/cards.py
index 64f17fc..baa8807 100644
--- a/src/webexpythonsdk/models/cards/cards.py
+++ b/src/webexpythonsdk/models/cards/cards.py
@@ -61,6 +61,7 @@ def __init__(
         backgroundImage: object = None,
         minHeight: str = None,
         speak: str = None,
+        style: OPTIONS.ContainerStyle = None,
         lang: str = None,
         verticalContentAlignment: OPTIONS.VerticalContentAlignment = None,
     ):
@@ -94,6 +95,11 @@ def __init__(
             speak (str, Optional): Specifies what should be spoken for this
                 entire card. This is simple text or SSML fragment. **_Defaults
                 to None._**
+            style (ContainerStyle, Optional): Style hint for Container.
+                **_Defaults to None._**Allowed value(s):
+                ContainerStyle.DEFAULT, ContainerStyle.EMPHASIS,
+                ContainerStyle.GOOD, ContainerStyle.ATTENTION,
+                ContainerStyle.WARNING, or ContainerStyle.ACCENT
             lang (str, Optional): The 2-letter ISO-639-1 language used in the
                 card. Used to localize any date/time functions. **_Defaults to
                 None._**
@@ -184,6 +190,12 @@ def __init__(
             optional=True,
         )
 
+        validate_input(
+            style,
+            OPTIONS.ContainerStyle,
+            optional=True,
+        )
+
         check_type(
             lang,
             str,
@@ -210,6 +222,7 @@ def __init__(
         self.backgroundImage = backgroundImage
         self.minHeight = minHeight
         self.speak = speak
+        self.style = style
         self.lang = lang
         self.verticalContentAlignment = verticalContentAlignment
 
@@ -235,6 +248,7 @@ def __init__(
                 ),
                 "minHeight",
                 "speak",
+                "style",
                 "lang",
                 "verticalContentAlignment",
             ],
diff --git a/src/webexpythonsdk/models/cards/containers.py b/src/webexpythonsdk/models/cards/containers.py
index 3bf5659..a465a7d 100644
--- a/src/webexpythonsdk/models/cards/containers.py
+++ b/src/webexpythonsdk/models/cards/containers.py
@@ -51,6 +51,7 @@ def __init__(
         actions: list[object],
         fallback: object = None,
         height: OPTIONS.BlockElementHeight = None,
+        horizontalAlignment: OPTIONS.HorizontalAlignment = None,
         separator: bool = None,
         spacing: OPTIONS.Spacing = None,
         id: str = None,
@@ -77,6 +78,13 @@ def __init__(
             height (BlockElementHeight, Optional): Specifies the height of the
                 element. **_Defaults to None._** Allowed value(s):
                 BlockElementHeight.AUTO or BlockElementHeight.STRETCH
+            horizontalAlignment (HorizontalAlignment, Optional): Controls the
+                horizontal alignment of the ColumnSet. When not specified, the
+                value of horizontalAlignment is inherited from the parent
+                container. If no parent container has horizontalAlignment set,
+                it defaults to Left. Allowed value(s):
+                HorizontalAlignment.LEFT, HorizontalAlignment.CENTER, or
+                HorizontalAlignment.RIGHT
             separator (bool, Optional): When true, draw a separating line at
                 the top of the element. **_Defaults to None._**
             spacing (Spacing, Optional): Controls the amount of spacing
@@ -142,6 +150,12 @@ def __init__(
             optional=True,
         )
 
+        validate_input(
+            horizontalAlignment,
+            OPTIONS.HorizontalAlignment,
+            optional=True,
+        )
+
         check_type(
             separator,
             bool,
@@ -177,6 +191,7 @@ def __init__(
         self.actions = actions
         self.fallback = fallback
         self.height = height
+        self.horizontalAlignment = horizontalAlignment
         self.separator = separator
         self.spacing = spacing
         self.id = id
@@ -192,6 +207,7 @@ def __init__(
                 "type",
                 *([] if hasattr(fallback, "to_dict") else ["fallback"]),
                 "height",
+                "horizontalAlignment",
                 "separator",
                 "spacing",
                 "id",
@@ -221,6 +237,7 @@ def __init__(
         minHeight: str = None,
         fallback: object = None,
         height: OPTIONS.BlockElementHeight = None,
+        horizontalAlignment: OPTIONS.HorizontalAlignment = None,
         separator: bool = None,
         spacing: OPTIONS.Spacing = None,
         id: str = None,
@@ -275,6 +292,13 @@ def __init__(
             height (BlockElementHeight, Optional): Specifies the height of the
                 element. **_Defaults to None._** Allowed value(s):
                 BlockElementHeight.AUTO or BlockElementHeight.STRETCH
+            horizontalAlignment (HorizontalAlignment, Optional): Controls the
+                horizontal alignment of the ColumnSet. When not specified, the
+                value of horizontalAlignment is inherited from the parent
+                container. If no parent container has horizontalAlignment set,
+                it defaults to Left. Allowed value(s):
+                HorizontalAlignment.LEFT, HorizontalAlignment.CENTER, or
+                HorizontalAlignment.RIGHT
             separator (bool, Optional): When true, draw a separating line at
                 the top of the element. **_Defaults to None._**
             spacing (Spacing, Optional): Controls the amount of spacing
@@ -399,6 +423,12 @@ def __init__(
             optional=True,
         )
 
+        validate_input(
+            horizontalAlignment,
+            OPTIONS.HorizontalAlignment,
+            optional=True,
+        )
+
         check_type(
             separator,
             bool,
@@ -440,6 +470,7 @@ def __init__(
         self.minHeight = minHeight
         self.fallback = fallback
         self.height = height
+        self.horizontalAlignment = horizontalAlignment
         self.separator = separator
         self.spacing = spacing
         self.id = id
@@ -547,6 +578,13 @@ def __init__(
             height (BlockElementHeight, Optional): Specifies the height of the
                 element. **_Defaults to None._** Allowed value(s):
                 BlockElementHeight.AUTO or BlockElementHeight.STRETCH
+            horizontalAlignment (HorizontalAlignment, Optional): Controls the
+                horizontal alignment of the ColumnSet. When not specified, the
+                value of horizontalAlignment is inherited from the parent
+                container. If no parent container has horizontalAlignment set,
+                it defaults to Left. Allowed value(s):
+                HorizontalAlignment.LEFT, HorizontalAlignment.CENTER, or
+                HorizontalAlignment.RIGHT
             separator (bool, Optional): When true, draw a separating line at
                 the top of the element. **_Defaults to None._**
             spacing (Spacing, Optional): Controls the amount of spacing
@@ -702,6 +740,7 @@ def __init__(
                 "horizontalAlignment",
                 *([] if hasattr(fallback, "to_dict") else ["fallback"]),
                 "height",
+                "horizontalAlignment",
                 "separator",
                 "spacing",
                 "id",
@@ -726,6 +765,7 @@ def __init__(
         backgroundImage: object = None,
         bleed: bool = None,
         fallback: object = None,
+        horizontalAlignment: OPTIONS.HorizontalAlignment = None,
         minHeight: str = None,
         separator: bool = None,
         spacing: OPTIONS.Spacing = None,
@@ -761,6 +801,13 @@ def __init__(
                 Note: "drop" causes this element to be dropped immediately
                 when unknown elements are encountered. The unknown element
                 doesn't bubble up any higher.
+            horizontalAlignment (HorizontalAlignment, Optional): Controls the
+                horizontal alignment of the ColumnSet. When not specified, the
+                value of horizontalAlignment is inherited from the parent
+                container. If no parent container has horizontalAlignment set,
+                it defaults to Left. Allowed value(s):
+                HorizontalAlignment.LEFT, HorizontalAlignment.CENTER, or
+                HorizontalAlignment.RIGHT
             minHeight (str, Optional): Specifies the minimum height of the
                 container in pixels, like "80px". **_Defaults to None._**
             separator (bool, Optional): When true, draw a separating line at
@@ -861,6 +908,12 @@ def __init__(
                 optional=True,
             )
 
+        validate_input(
+            horizontalAlignment,
+            OPTIONS.HorizontalAlignment,
+            optional=True,
+        )
+
         check_type(
             minHeight,
             str,
@@ -934,6 +987,7 @@ def __init__(
         self.backgroundImage = backgroundImage
         self.bleed = bleed
         self.fallback = fallback
+        self.horizontalAlignment = horizontalAlignment
         self.minHeight = minHeight
         self.separator = separator
         self.spacing = spacing
@@ -965,6 +1019,7 @@ def __init__(
                 ),
                 "bleed",
                 *([] if hasattr(fallback, "to_dict") else ["fallback"]),
+                "horizontalAlignment",
                 "minHeight",
                 "separator",
                 "spacing",
@@ -1197,6 +1252,7 @@ def __init__(
         imageSize: OPTIONS.ImageSize = OPTIONS.ImageSize.MEDIUM,
         fallback: object = None,
         height: OPTIONS.BlockElementHeight = None,
+        horizontalAlignment: OPTIONS.HorizontalAlignment = None,
         separator: bool = None,
         spacing: OPTIONS.Spacing = None,
         id: str = None,
@@ -1230,6 +1286,13 @@ def __init__(
             height (BlockElementHeight, Optional): Specifies the height of the
                 element. **_Defaults to None._** Allowed value(s):
                 BlockElementHeight.AUTO or BlockElementHeight.STRETCH
+            horizontalAlignment (HorizontalAlignment, Optional): Controls the
+                horizontal alignment of the ColumnSet. When not specified, the
+                value of horizontalAlignment is inherited from the parent
+                container. If no parent container has horizontalAlignment set,
+                it defaults to Left. Allowed value(s):
+                HorizontalAlignment.LEFT, HorizontalAlignment.CENTER, or
+                HorizontalAlignment.RIGHT
             separator (bool, Optional): When true, draw a separating line at
                 the top of the element. **_Defaults to None._**
             spacing (Spacing, Optional): Controls the amount of spacing
@@ -1296,6 +1359,12 @@ def __init__(
             optional=True,
         )
 
+        validate_input(
+            horizontalAlignment,
+            OPTIONS.HorizontalAlignment,
+            optional=True,
+        )
+
         check_type(
             separator,
             bool,
@@ -1332,6 +1401,7 @@ def __init__(
         self.imageSize = imageSize
         self.fallback = fallback
         self.height = height
+        self.horizontalAlignment = horizontalAlignment
         self.separator = separator
         self.spacing = spacing
         self.id = id
@@ -1348,6 +1418,7 @@ def __init__(
                 "imageSize",
                 *([] if hasattr(fallback, "to_dict") else ["fallback"]),
                 "height",
+                "horizontalAlignment",
                 "separator",
                 "spacing",
                 "id",
