diff --git a/CHANGELOG.md b/CHANGELOG.md
index da0af54df5bcc64b59261381d7e770b6e651c0dd..95e44d1f6098e7b0406f61d7e224659d1998dce5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,54 @@
+0.1.0-alpha102
+=============
+* Fixed bugs:
+	* Fixed an issue where the categories tree was not displayed when adding a new category during product creation
+	* Fixed an issue where the Template field on the New Email Template page was labeled as required
+	* Fixed minor UI issues in Multiple Addresses Checkout for a desktop
+	* Fixed minor UI issues with Widgets on the storefront
+	* Fixed minor UI issues with pages printing view on the storefront
+	* Fixed minor UI issues in items Gift message on the Order View frontend page
+	* Fixed an issue in the Admin panel where no message was displayed after adding a product to cart with quantity exceeding the available quantity)
+* Framework improvements:
+	* To enhance the readability of tables for screen readers, added the <caption> tag and the “scope” attribute for tables
+	* Added customer module interfaces
+	* Created the ability to generate API documentation
+* Added the following functional tests:
+	* Create gift message in the Admin panel
+	* Delete term
+	* Product type switching when editing
+	* Re-authorize tokens for the Integration
+	* Revoke all access tokens for admin without tokens
+	* Update custom order status
+	* Update a product from a mini shopping cart
+* WebApi Framework improvements:
+	* Added Web API support to add/override matching identifier parameter in the body from URL
+* Documentation:
+	* Added README files with module description for the following modules:
+		* Authorizenet
+		* Centinel
+		* Customer
+		* CustomerImportExport
+		* Dhl
+		* Fedex
+		* OfflinePayments
+		* OfflineShipping
+		* Ogone
+		* PayPalRecurringPayment
+		* Payment
+		* Paypal
+		* ProductAlert
+		* RecurringPayment
+		* Sendfriend
+		* Shipping
+		* Ups
+		* Usps
+		* Wishlist
+* Container-Based Page Layout:
+    * Distributed the responsibility of View\Layout between three classes (PageLayout, PageConfig, GenericLayout)
+    * Refactored controller actions to use ResultInterface objects:
+        * Catalog
+        * Backend
+
 0.1.0-alpha101
 =============
  * Framework improvements:
diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json
index 5e226f33c31f087b1ebe91b83b442e9f722b188c..e4b264fd749caa176ad8c5bf65eed71a361ce721 100644
--- a/app/code/Magento/AdminNotification/composer.json
+++ b/app/code/Magento/AdminNotification/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_block.xml b/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_block.xml
index 1d70a00559fdd0b1d48fc77d0170d4e09b705c0c..89971c9e1d6ce72e7e733565c0e05bc9f9196cff 100644
--- a/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_block.xml
+++ b/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_block.xml
@@ -24,69 +24,71 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.notification.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.notification.container.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">notificationGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\AdminNotification\Model\Resource\Grid\Collection</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="default_sort" xsi:type="string">date_added</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.notification.container.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.notification.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.notification.container.grid" as="grid">
                 <arguments>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
+                    <argument name="id" xsi:type="string">notificationGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\AdminNotification\Model\Resource\Grid\Collection</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="default_sort" xsi:type="string">date_added</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="severity">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.notification.container.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Severity</argument>
-                        <argument name="index" xsi:type="string">severity</argument>
-                        <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Severity</argument>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="severity">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Severity</argument>
+                            <argument name="index" xsi:type="string">severity</argument>
+                            <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Severity</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_added">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Date Added</argument>
+                            <argument name="id" xsi:type="string">date_added</argument>
+                            <argument name="index" xsi:type="string">date_added</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Message</argument>
+                            <argument name="index" xsi:type="string">title</argument>
+                            <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Notice</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="actions">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Actions</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Actions</argument>
+                        </arguments>
+                    </block>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_added">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.block.notification.massactions" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Date Added</argument>
-                        <argument name="id" xsi:type="string">date_added</argument>
-                        <argument name="index" xsi:type="string">date_added</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        <argument name="massaction_id_field" xsi:type="string">notification_id</argument>
+                        <argument name="form_field_name" xsi:type="string">notification</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="mark_as_read" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Mark as Read</item>
+                                <item name="url" xsi:type="string">*/*/massMarkAsRead</item>
+                            </item>
+                            <item name="remove" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Remove</item>
+                                <item name="url" xsi:type="string">*/*/massRemove</item>
+                                <item name="confirm" xsi:type="string" translate="true">Are you sure?</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Message</argument>
-                        <argument name="index" xsi:type="string">title</argument>
-                        <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Notice</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="actions">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Actions</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="renderer" xsi:type="string">Magento\AdminNotification\Block\Grid\Renderer\Actions</argument>
-                    </arguments>
-                </block>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.block.notification.massactions" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">notification_id</argument>
-                    <argument name="form_field_name" xsi:type="string">notification</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="mark_as_read" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Mark as Read</item>
-                            <item name="url" xsi:type="string">*/*/massMarkAsRead</item>
-                        </item>
-                        <item name="remove" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Remove</item>
-                            <item name="url" xsi:type="string">*/*/massRemove</item>
-                            <item name="confirm" xsi:type="string" translate="true">Are you sure?</item>
-                        </item>
-                    </argument>
-                </arguments>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_index.xml b/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_index.xml
index c92a48d379ad4676b54256fa043d78f4031e4ffc..76afe98ae596af1477650c4506d981ac6e0377a9 100644
--- a/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_index.xml
+++ b/app/code/Magento/AdminNotification/view/adminhtml/layout/adminhtml_notification_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_notification_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\AdminNotification\Block\Inbox" name="adminhtml.notification.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\AdminNotification\Block\Inbox" name="adminhtml.notification.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml b/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
index b75b9c4d5eaef4ef0dea44f742d5e348c8651709..30a1215ccbf6d68d8ace8f3d71b8cee3b06d3f0e 100644
--- a/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
+++ b/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="notifications">
-        <block class="Magento\AdminNotification\Block\System\Messages" name="system_messages" as="system_messages" before="-" template="Magento_AdminNotification::system/messages.phtml"/>
-        <block class="Magento\AdminNotification\Block\System\Messages\UnreadMessagePopup" name="unread_system_messages" as="unread_system_messages" after="system_messages" template="Magento_AdminNotification::system/messages/popup.phtml"/>
-        <block class="Magento\AdminNotification\Block\Window" name="notification_window" as="notification_window" acl="Magento_AdminNotification::show_toolbar" template="notification/window.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="header">
-        <block class="Magento\AdminNotification\Block\ToolbarEntry" before="user" template="toolbar_entry.phtml" />
-    </referenceContainer>
     <head>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
+    <body>
+        <referenceContainer name="notifications">
+            <block class="Magento\AdminNotification\Block\System\Messages" name="system_messages" as="system_messages" before="-" template="Magento_AdminNotification::system/messages.phtml"/>
+            <block class="Magento\AdminNotification\Block\System\Messages\UnreadMessagePopup" name="unread_system_messages" as="unread_system_messages" after="system_messages" template="Magento_AdminNotification::system/messages/popup.phtml"/>
+            <block class="Magento\AdminNotification\Block\Window" name="notification_window" as="notification_window" acl="Magento_AdminNotification::show_toolbar" template="notification/window.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="header">
+            <block class="Magento\AdminNotification\Block\ToolbarEntry" before="user" template="toolbar_entry.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json
index 4a865d6835423377804d04eb137a086db037d5bf..3718bab0174bacfe74a8835a6e47d5decd896472 100644
--- a/app/code/Magento/Authorization/composer.json
+++ b/app/code/Magento/Authorization/composer.json
@@ -3,12 +3,12 @@
     "description": "Authorization module provides access to Magento ACL functionality.",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Authorizenet/README.md b/app/code/Magento/Authorizenet/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..380161d8b264e3a34fa46344d77e51b001e9a821
--- /dev/null
+++ b/app/code/Magento/Authorizenet/README.md
@@ -0,0 +1 @@
+The Magento_Authorizenet module implements the integration with the Authorize.Net payment gateway and makes the latter available as a payment method in Magento.
diff --git a/app/code/Magento/Authorizenet/composer.json b/app/code/Magento/Authorizenet/composer.json
index e24e4b0d690da40e817c3d08ddc0f0c619aba820..f44c2948e8c9cadde1a2cac37675b2f8478c83bb 100644
--- a/app/code/Magento/Authorizenet/composer.json
+++ b/app/code/Magento/Authorizenet/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-centinel": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-centinel": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_index.xml
index 05f4ef76f5fb5411c2c154698594284b87bbc7ab..ff065f4c67badaf8e379a8530e53bed233e0dc01 100644
--- a/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="authorizenet_page_head_components" template="Magento_Authorizenet::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="authorizenet_page_head_components" template="Magento_Authorizenet::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_review.xml b/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_review.xml
index a2b2572580553ee25e0e452df51edce020bb55ad..e8b018e61d62df31a9e38413df43f859faf59b15 100644
--- a/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_review.xml
+++ b/app/code/Magento/Authorizenet/view/frontend/layout/checkout_onepage_review.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.onepage.review.info.items.after">
-        <block class="Magento\Authorizenet\Block\Directpost\Form" name="payment.form.directpost" template="directpost/form.phtml">
-            <action method="setMethodInfo"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="checkout.onepage.review.info.items.after">
+            <block class="Magento\Authorizenet\Block\Directpost\Form" name="payment.form.directpost" template="directpost/form.phtml">
+                <action method="setMethodInfo"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Authorizenet/view/frontend/templates/info/cc.phtml b/app/code/Magento/Authorizenet/view/frontend/templates/info/cc.phtml
index 39d60fbfb87449b764fb2b9884e743d9b9ae9cc7..c2901a437c554e7d9dcb796abb5cede27081aec4 100644
--- a/app/code/Magento/Authorizenet/view/frontend/templates/info/cc.phtml
+++ b/app/code/Magento/Authorizenet/view/frontend/templates/info/cc.phtml
@@ -39,9 +39,10 @@
             <?php endif; ?>
             <dd class="content">
                 <table class="data table">
+                    <caption class="table-caption"><?php echo __('Credit Card %1', $key + 1); ?></caption>
                     <?php foreach ($card as $_label => $_value): ?>
                         <tr>
-                            <th><?php echo $this->escapeHtml($_label) ?></th>
+                            <th scope="row"><?php echo $this->escapeHtml($_label) ?></th>
                             <td><?php echo nl2br(implode($this->getValueAsArray($_value, true), "\n")) ?></td>
                         </tr>
                     <?php endforeach; ?>
diff --git a/app/code/Magento/Backend/App/AbstractAction.php b/app/code/Magento/Backend/App/AbstractAction.php
index 381771d00cf7c40e9a43f9e965a1dfd768f3f424..b6c3145dd7372d8507598ebfced9b5104ce73761 100644
--- a/app/code/Magento/Backend/App/AbstractAction.php
+++ b/app/code/Magento/Backend/App/AbstractAction.php
@@ -325,6 +325,7 @@ abstract class AbstractAction extends \Magento\Framework\App\Action\Action
     /**
      * Set redirect into response
      *
+     * @deprecated
      * @param   string $path
      * @param   array $arguments
      * @return \Magento\Framework\App\ResponseInterface
@@ -337,6 +338,9 @@ abstract class AbstractAction extends \Magento\Framework\App\Action\Action
     }
 
     /**
+     * Forward to action
+     *
+     * @deprecated
      * @param string $action
      * @param string|null $controller
      * @param string|null $module
diff --git a/app/code/Magento/Backend/Block/Widget/Button/Toolbar.php b/app/code/Magento/Backend/Block/Widget/Button/Toolbar.php
index 720e2637d355631e8fdb676ef0bd8386298df4f0..c1c769c0c09bd68bb5203333c1b9d79241a93c88 100644
--- a/app/code/Magento/Backend/Block/Widget/Button/Toolbar.php
+++ b/app/code/Magento/Backend/Block/Widget/Button/Toolbar.php
@@ -24,21 +24,10 @@
 
 namespace Magento\Backend\Block\Widget\Button;
 
+use Magento\Framework\View\LayoutInterface;
+
 class Toolbar implements ToolbarInterface
 {
-    /**
-     * @var \Magento\Framework\View\LayoutInterface
-     */
-    protected $layout;
-
-    /**
-     * @param \Magento\Framework\View\LayoutInterface $layout
-     */
-    public function __construct(\Magento\Framework\View\LayoutInterface $layout)
-    {
-        $this->layout = $layout;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -51,7 +40,7 @@ class Toolbar implements ToolbarInterface
             foreach ($buttons as $item) {
                 $containerName = $context->getNameInLayout() . '-' . $item->getButtonKey();
 
-                $container = $this->createContainer($containerName, $item);
+                $container = $this->createContainer($context->getLayout(), $containerName, $item);
 
                 if ($item->hasData('name')) {
                     $item->setData('element_name', $item->getName());
@@ -69,13 +58,14 @@ class Toolbar implements ToolbarInterface
     /**
      * Create button container
      *
+     * @param \Magento\Framework\View\LayoutInterface $layout
      * @param string $containerName
      * @param \Magento\Backend\Block\Widget\Button\Item $buttonItem
      * @return \Magento\Backend\Block\Widget\Button\Toolbar\Container
      */
-    protected function createContainer($containerName, $buttonItem)
+    protected function createContainer(LayoutInterface $layout, $containerName, $buttonItem)
     {
-        $container = $this->layout->createBlock(
+        $container = $layout->createBlock(
             '\Magento\Backend\Block\Widget\Button\Toolbar\Container',
             $containerName,
             ['data' => ['button_item' => $buttonItem]]
@@ -93,13 +83,13 @@ class Toolbar implements ToolbarInterface
     protected function getToolbar(\Magento\Framework\View\Element\AbstractBlock $context, $region)
     {
         $parent = null;
-
+        $layout = $context->getLayout();
         if (!$region || $region == 'header' || $region == 'footer') {
             $parent = $context;
         } elseif ($region == 'toolbar') {
-            $parent = $this->layout->getBlock('page.actions.toolbar');
+            $parent = $layout->getBlock('page.actions.toolbar');
         } else {
-            $parent = $this->layout->getBlock($region);
+            $parent = $layout->getBlock($region);
         }
 
         if ($parent) {
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php b/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
index eb016104a30e2cdbe709c1996abb5d4654773219..4b13b9865be61e112a04ec20c03281926c7bc02d 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Ajax/Translate.php
@@ -33,36 +33,45 @@ class Translate extends \Magento\Backend\App\Action
      */
     protected $inlineParser;
 
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
     /**
      * @param Action\Context $context
      * @param \Magento\Framework\Translate\Inline\ParserInterface $inlineParser
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
      */
     public function __construct(
         Action\Context $context,
-        \Magento\Framework\Translate\Inline\ParserInterface $inlineParser
+        \Magento\Framework\Translate\Inline\ParserInterface $inlineParser,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
     ) {
         parent::__construct($context);
-
+        $this->resultJsonFactory = $resultJsonFactory;
         $this->inlineParser = $inlineParser;
     }
 
     /**
      * Ajax action for inline translation
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
         $translate = (array)$this->getRequest()->getPost('translate');
 
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
         try {
             $this->inlineParser->processAjaxPost($translate);
-            $response = "{success:true}";
+            $response = ['success' => 'true'];
         } catch (\Exception $e) {
-            $response = "{error:true,message:'" . $e->getMessage() . "'}";
+            $response = ['error' => 'true', 'message' => $e->getMessage()];
         }
-        $this->getResponse()->representJson($response);
 
         $this->_actionFlag->set('', self::FLAG_NO_POST_DISPATCH, true);
+        return $resultJson->setData($response);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
index 5271dc47cfe9e157acdc916336bdaccaf1d81ca8..a79c121b8906cd85f34578930fa8f52420db9768 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedIframe.php
@@ -26,6 +26,23 @@ namespace Magento\Backend\Controller\Adminhtml\Auth;
 
 class DeniedIframe extends \Magento\Backend\Controller\Adminhtml\Auth
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRawFactory = $resultRawFactory;
+    }
+
     /**
      * Retrieve response for deniedIframeAction()
      *
@@ -33,18 +50,19 @@ class DeniedIframe extends \Magento\Backend\Controller\Adminhtml\Auth
      */
     protected function _getDeniedIframe()
     {
-        return '<script type="text/javascript">parent.window.location = \'' . $this->_objectManager->get(
-            'Magento\Backend\Helper\Data'
-        )->getHomePageUrl() . '\';</script>';
+        return '<script type="text/javascript">parent.window.location = \''
+            . $this->_helper->getHomePageUrl() . '\';</script>';
     }
 
     /**
      * Denied IFrame action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
-        $this->getResponse()->setBody($this->_getDeniedIframe());
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($this->_getDeniedIframe());
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
index 2dbaade6560715c44491ca8aacf2413026d816c0..8f8d2980c7db800e854d04d684ab7453f04a2a02 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/DeniedJson.php
@@ -26,30 +26,46 @@ namespace Magento\Backend\Controller\Adminhtml\Auth;
 
 class DeniedJson extends \Magento\Backend\Controller\Adminhtml\Auth
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context);
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * Retrieve response for deniedJsonAction()
      *
-     * @return string
+     * @return array
      */
     protected function _getDeniedJson()
     {
-        return $this->_objectManager->get(
-            'Magento\Core\Helper\Data'
-        )->jsonEncode(
-            array(
-                'ajaxExpired' => 1,
-                'ajaxRedirect' => $this->_objectManager->get('Magento\Backend\Helper\Data')->getHomePageUrl()
-            )
-        );
+        return [
+            'ajaxExpired' => 1,
+            'ajaxRedirect' => $this->_helper->getHomePageUrl()
+        ];
+
     }
 
     /**
      * Denied JSON action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
-        $this->getResponse()->representJson($this->_getDeniedJson());
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData($this->_getDeniedJson());
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
index 2360add53c7dc421382cd52761e06e0e0c803764..f44cdcf051ae8debe88d75b7eebea8bca6c06104 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Login.php
@@ -26,10 +26,37 @@ namespace Magento\Backend\Controller\Adminhtml\Auth;
 
 class Login extends \Magento\Backend\Controller\Adminhtml\Auth
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        parent::__construct($context);
+    }
+
     /**
      * Administrator login action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -37,10 +64,11 @@ class Login extends \Magento\Backend\Controller\Adminhtml\Auth
             if ($this->_auth->getAuthStorage()->isFirstPageAfterLogin()) {
                 $this->_auth->getAuthStorage()->setIsFirstPageAfterLogin(true);
             }
-            $this->_redirect($this->_backendUrl->getStartupPageUrl());
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            $resultRedirect->setPath($this->_backendUrl->getStartupPageUrl());
+            return $resultRedirect;
         }
-        $this->_view->loadLayout(false);
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
index dda6586027237f73289da47c272c9dd3a091045a..cc87cd5e5e2b8f68ba349d7fc774d244ffd201db 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php
@@ -26,15 +26,35 @@ namespace Magento\Backend\Controller\Adminhtml\Auth;
 
 class Logout extends \Magento\Backend\Controller\Adminhtml\Auth
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
     /**
      * Administrator logout action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $this->_auth->logout();
         $this->messageManager->addSuccess(__('You have logged out.'));
-        $this->getResponse()->setRedirect($this->_objectManager->get('Magento\Backend\Helper\Data')->getHomePageUrl());
+
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath($this->_helper->getHomePageUrl());
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache.php
index 8d1da09fc70d903ad4a80d5c6cec2fd04776326f..6e12fb648dcc7ec369576a57d2c100e4d6cb36ed 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache.php
@@ -43,22 +43,38 @@ class Cache extends Action
      */
     protected $_cacheFrontendPool;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
     /**
      * @param Action\Context $context
      * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
      * @param \Magento\Framework\App\Cache\StateInterface $cacheState
      * @param \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      */
     public function __construct(
         Action\Context $context,
         \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
         \Magento\Framework\App\Cache\StateInterface $cacheState,
-        \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool
+        \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
     ) {
         parent::__construct($context);
         $this->_cacheTypeList = $cacheTypeList;
         $this->_cacheState = $cacheState;
         $this->_cacheFrontendPool = $cacheFrontendPool;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultPageFactory = $resultPageFactory;
     }
 
     /**
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
index 8ef510942fccfba2d9f756853c7178ae0b7ea06d..3dec3c5a9cb14c76270c87d2d1a3e2ad05f81cbd 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php
@@ -31,7 +31,7 @@ class CleanImages extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Clean JS/css files cache
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -44,6 +44,8 @@ class CleanImages extends \Magento\Backend\Controller\Adminhtml\Cache
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('An error occurred while clearing the image cache.'));
         }
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
index dc52d6b9e198d674494b3af2608a56502a22c33f..571553d886cf66c4d8873f4db70ee5317bab9025 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php
@@ -31,7 +31,7 @@ class CleanMedia extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Clean JS/css files cache
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -44,6 +44,8 @@ class CleanMedia extends \Magento\Backend\Controller\Adminhtml\Cache
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('An error occurred while clearing the JavaScript/CSS cache.'));
         }
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
index 19e394bee806fc84376e798ab1a2477860efe89b..15191b06c162dd75b228fc1c2b9fbc38a13a3d76 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php
@@ -29,7 +29,7 @@ class FlushAll extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Flush cache storage
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -39,6 +39,8 @@ class FlushAll extends \Magento\Backend\Controller\Adminhtml\Cache
             $cacheFrontend->getBackend()->clean();
         }
         $this->messageManager->addSuccess(__("You flushed the cache storage."));
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
index dded0cc2acee781f738ce72c0da763d694b20c68..573965e7c46447f02f42188667d239114e276054 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php
@@ -30,7 +30,7 @@ class FlushSystem extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Flush all magento cache
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -40,6 +40,8 @@ class FlushSystem extends \Magento\Backend\Controller\Adminhtml\Cache
         }
         $this->_eventManager->dispatch('adminhtml_cache_flush_system');
         $this->messageManager->addSuccess(__("The Magento cache storage has been flushed."));
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
index 117534aec60011a90c635a56b7bd7a5ecaf03cf4..e2389e3efa1e3fbfb0a801a2d1956fbb75c0c192 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/Index.php
@@ -29,14 +29,15 @@ class Index extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Display cache management grid
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Cache Management'));
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Backend::system_cache');
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_cache');
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
index ff2246e7712948333b04b24d4d90a3988292c567..208a66ae8186f535f79057e10bc295cf376af173 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php
@@ -31,7 +31,7 @@ class MassDisable extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Mass action for cache disabling
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -58,6 +58,8 @@ class MassDisable extends \Magento\Backend\Controller\Adminhtml\Cache
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('An error occurred while disabling cache.'));
         }
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
index fc52886e3bb8fca9ec92cf6c828aa789846d7dda..8ba37d149680c27d48b44fb094ab1aba4d8a092d 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php
@@ -31,7 +31,7 @@ class MassEnable extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Mass action for cache enabling
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -57,6 +57,8 @@ class MassEnable extends \Magento\Backend\Controller\Adminhtml\Cache
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('An error occurred while enabling cache.'));
         }
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
index 033aa1bd346e0e0145e04e02705274d287670416..178138edb19bb0e053344c9c15d4a3ea609bcf86 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php
@@ -31,7 +31,7 @@ class MassRefresh extends \Magento\Backend\Controller\Adminhtml\Cache
     /**
      * Mass action for cache refresh
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -55,6 +55,8 @@ class MassRefresh extends \Magento\Backend\Controller\Adminhtml\Cache
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('An error occurred while refreshing cache.'));
         }
-        $this->_redirect('adminhtml/*');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
index e5a50b3497fef909555ff35739b1c81682cf12f0..3cfa2b4bb1378b4d930c18332b55dd9f6a33ecca 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
@@ -27,7 +27,32 @@ namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 class AjaxBlock extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
     /**
-     * @return void
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
@@ -39,11 +64,12 @@ class AjaxBlock extends \Magento\Backend\Controller\Adminhtml\Dashboard
             ucwords(str_replace('_', ' ', $blockTab))
         );
         if (in_array($blockTab, array('tab_orders', 'tab_amounts', 'totals'))) {
-            $output = $this->_view->getLayout()->createBlock(
-                'Magento\\Backend\\Block\\Dashboard\\' . $blockClassSuffix
-            )->toHtml();
+            $output = $this->layoutFactory->create()
+                ->createBlock('Magento\\Backend\\Block\\Dashboard\\' . $blockClassSuffix)
+                ->toHtml();
         }
-        $this->getResponse()->setBody($output);
-        return;
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($output);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
index 3da4cce967f6aad2f512f76ef2e2e73d27111b9f..5a92491c58e54dc37ba43aecb5013168223111d3 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersMost.php
@@ -26,14 +26,30 @@ namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 
 class CustomersMost extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Gets the list of most active customers
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
index 410d88e3fad29da00989a1dd66f5199b70c9a0c9..0142ad7facd59c6a0b52a613b8aba12aeca01147 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/CustomersNewest.php
@@ -26,14 +26,30 @@ namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 
 class CustomersNewest extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Gets latest customers list
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
index 54b10dd4f51c1c1b6e7673c643cdd9cf573e4a9c..7bbd3aacf302539b8af2bd0a93d1fea048803b9e 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Index.php
@@ -27,15 +27,33 @@ namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 class Index extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Dashboard'));
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Backend::dashboard');
-        $this->_addBreadcrumb(__('Dashboard'), __('Dashboard'));
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::dashboard');
+        $resultPage->addBreadcrumb(__('Dashboard'), __('Dashboard'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
index 571a06326db94bec76770d63472b0f152db6c6a0..3e3a2efa3bb53037887677347cfa6b6bb6304768 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/ProductsViewed.php
@@ -26,14 +26,30 @@ namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 
 class ProductsViewed extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Gets most viewed products list
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
index bf7bee63c0a284a942b6097002fda72fb6d7397b..851e5fc747ee5a982b48db440b64c3b139b32142 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/Tunnel.php
@@ -24,14 +24,34 @@
  */
 namespace Magento\Backend\Controller\Adminhtml\Dashboard;
 
+use Magento\Backend\App\Action;
+use Magento\Framework\Controller\Result;
+
 class Tunnel extends \Magento\Backend\Controller\Adminhtml\Dashboard
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @param Action\Context $context
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     */
+    public function __construct(
+        Action\Context $context,
+        Result\RawFactory $resultRawFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRawFactory = $resultRawFactory;
+    }
+
     /**
      * Forward request for a graph image to the web-service
      *
      * This is done in order to include the image to a HTTPS-page regardless of web-service settings
      *
-     * @return void
+     * @return  \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
@@ -39,6 +59,8 @@ class Tunnel extends \Magento\Backend\Controller\Adminhtml\Dashboard
         $httpCode = 400;
         $gaData = $this->_request->getParam('ga');
         $gaHash = $this->_request->getParam('h');
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
         if ($gaData && $gaHash) {
             /** @var $helper \Magento\Backend\Helper\Dashboard\Data */
             $helper = $this->_objectManager->get('Magento\Backend\Helper\Dashboard\Data');
@@ -61,13 +83,9 @@ class Tunnel extends \Magento\Backend\Controller\Adminhtml\Dashboard
 
                         $headers = $response->getHeaders();
 
-                        $this->_response->setHeader(
-                            'Content-type',
-                            $headers['Content-type']
-                        )->setBody(
-                            $response->getBody()
-                        );
-                        return;
+                        $resultRaw->setHeader('Content-type', $headers['Content-type'])
+                            ->setContents($response->getBody());
+                        return $resultRaw;
                     } catch (\Exception $e) {
                         $this->_objectManager->get('Magento\Framework\Logger')->logException($e);
                         $error = __('see error log for details');
@@ -76,13 +94,9 @@ class Tunnel extends \Magento\Backend\Controller\Adminhtml\Dashboard
                 }
             }
         }
-        $this->_response->setBody(
-            __('Service unavailable: %1', $error)
-        )->setHeader(
-            'Content-Type',
-            'text/plain; charset=UTF-8'
-        )->setHttpResponseCode(
-            $httpCode
-        );
+        $resultRaw->setHeader('Content-Type', 'text/plain; charset=UTF-8')
+            ->setHttpResponseCode($httpCode)
+            ->setContents(__('Service unavailable: %1', $error));
+        return $resultRaw;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Denied.php b/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
index 4a2da63ff01ab0b3782650c5f6d1163397083ecb..504ac6b435a1ab27e587863a3a221a0a92895d05 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Denied.php
@@ -27,16 +27,45 @@ namespace Magento\Backend\Controller\Adminhtml;
 class Denied extends \Magento\Backend\App\Action
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
-        $this->getResponse()->setHeader('HTTP/1.1', '403 Forbidden');
         if (!$this->_auth->isLoggedIn()) {
-            $this->_redirect('*/auth/login');
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            $resultRedirect->setHeader('HTTP/1.1', '403 Forbidden');
+            return $resultRedirect->setPath('*/auth/login');
         }
-        $this->_view->loadLayout(array('default', 'adminhtml_denied'));
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setHeader('HTTP/1.1', '403 Forbidden');
+        $resultPage->addHandle('adminhtml_denied');
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
index 8a60d9f3114075211667427b771e19c5731be21d..33b410249a22dca9c6ad8c7abf9b749e5e3ca5fb 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/ChangeLocale.php
@@ -26,13 +26,34 @@ namespace Magento\Backend\Controller\Adminhtml\Index;
 
 class ChangeLocale extends \Magento\Backend\Controller\Adminhtml\Index
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        parent::__construct($context);
+    }
+
     /**
      * Change locale action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
-        $this->getResponse()->setRedirect($this->_redirect->getRefererUrl());
+        $redirectResult = $this->resultRedirectFactory->create();
+        $redirectResult->setRefererUrl();
+        return $redirectResult;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
index 41e78bbc8233672bd33445ae1c985a260e6d57af..82b34bbe95427d16a893bf6668e52420b21524af 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/GlobalSearch.php
@@ -26,6 +26,11 @@ namespace Magento\Backend\Controller\Adminhtml\Index;
 
 class GlobalSearch extends \Magento\Backend\Controller\Adminhtml\Index
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
     /**
      * Search modules list
      *
@@ -35,18 +40,23 @@ class GlobalSearch extends \Magento\Backend\Controller\Adminhtml\Index
 
     /**
      * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
      * @param array $searchModules
      */
-    public function __construct(\Magento\Backend\App\Action\Context $context, array $searchModules = array())
-    {
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        array $searchModules = array()
+    ) {
         $this->_searchModules = $searchModules;
         parent::__construct($context);
+        $this->resultJsonFactory = $resultJsonFactory;
     }
 
     /**
      * Global Search Action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -96,8 +106,8 @@ class GlobalSearch extends \Magento\Backend\Controller\Adminhtml\Index
             }
         }
 
-        $this->getResponse()->representJson(
-            $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode($items)
-        );
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData($items);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
index 7483782b35732716712fe04d0628a84c25215c3d..fb0b8023d46e990dec17c34c9ab46dd94215d34e 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Index/Index.php
@@ -26,14 +26,33 @@ namespace Magento\Backend\Controller\Adminhtml\Index;
 
 class Index extends \Magento\Backend\Controller\Adminhtml\Index
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
     /**
      * Admin area entry point
      * Always redirects to the startup page url
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
-        $this->_redirect($this->_backendUrl->getStartupPageUrl());
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath($this->_backendUrl->getStartupPageUrl());
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
index ee7a23763e31aac3e5cab68772bd0c846db8d0f5..80bec85f132c3dc28a26e364c1c637eab593016b 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Noroute/Index.php
@@ -26,16 +26,35 @@ namespace Magento\Backend\Controller\Adminhtml\Noroute;
 
 class Index extends \Magento\Backend\App\Action
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Noroute action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->getResponse()->setHeader('HTTP/1.1', '404 Not Found');
-        $this->getResponse()->setHeader('Status', '404 File not found');
-        $this->_view->loadLayout(array('default', 'adminhtml_noroute'));
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setHeader('HTTP/1.1', '404 Not Found');
+        $resultPage->setHeader('Status', '404 File not found');
+        $resultPage->addHandle('adminhtml_noroute');
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
index 8c0c58d2d7c2c7cb0e06047038d7cd50788c6996..e455e44f9d048c0dcc10f4a38ed62ebd7281fc1a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Index.php
@@ -27,13 +27,29 @@ namespace Magento\Backend\Controller\Adminhtml\System\Account;
 class Index extends \Magento\Backend\Controller\Adminhtml\System\Account
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('My Account'));
 
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
index 1d5f788a1a486ef874fcd6db8c80a25498fe3f6b..303f2a0dc54bea1d57fcb385658e2969ae9f07ff 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php
@@ -26,10 +26,27 @@ namespace Magento\Backend\Controller\Adminhtml\System\Account;
 
 class Save extends \Magento\Backend\Controller\Adminhtml\System\Account
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
     /**
      * Saving edited user information
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -86,6 +103,8 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Account
         } catch (\Exception $e) {
             $this->messageManager->addError(__('An error occurred while saving account.'));
         }
-        $this->getResponse()->setRedirect($this->getUrl("*/*/"));
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath("*/*/");
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Edit.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Edit.php
index f6d54e520c9fca7a11494477d269889d81ed289a..a0db2f37937c908bd143c938aafeef13c85a4763 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Edit.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Edit.php
@@ -26,6 +26,37 @@ namespace Magento\Backend\Controller\Adminhtml\System\Config;
 
 class Edit extends AbstractScopeConfig
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\Config\Structure $configStructure
+     * @param \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker
+     * @param \Magento\Backend\Model\Config $backendConfig
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\Config\Structure $configStructure,
+        \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker,
+        \Magento\Backend\Model\Config $backendConfig,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $configStructure, $sectionChecker, $backendConfig);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Edit configuration section
      *
@@ -42,16 +73,16 @@ class Edit extends AbstractScopeConfig
         /** @var $section \Magento\Backend\Model\Config\Structure\Element\Section */
         $section = $this->_configStructure->getElement($current);
         if ($current && !$section->isVisible($website, $store)) {
-            return $this->_redirect('adminhtml/*/', array('website' => $website, 'store' => $store));
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/', ['website' => $website, 'store' => $store]);
         }
 
-        $this->_view->loadLayout();
-
-        $this->_setActiveMenu('Magento_Backend::system_config');
-        $this->_view->getLayout()->getBlock('menu')->setAdditionalCacheKeyInfo(array($current));
-
-        $this->_addBreadcrumb(__('System'), __('System'), $this->getUrl('*\/system'));
-
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_config');
+        $resultPage->getLayout()->getBlock('menu')->setAdditionalCacheKeyInfo([$current]);
+        $resultPage->addBreadcrumb(__('System'), __('System'), $this->getUrl('*\/system'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Index.php
index 1b5d451e51cdcc22ed21f99d0c15626de640e1ed..0e73fdc16ce89a4d39bb428ae4f0f680e8abff0a 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Index.php
@@ -26,13 +26,38 @@ namespace Magento\Backend\Controller\Adminhtml\System\Config;
 
 class Index extends AbstractScopeConfig
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\Config\Structure $configStructure
+     * @param \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker
+     * @param \Magento\Backend\Model\Config $backendConfig
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\Config\Structure $configStructure,
+        \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker,
+        \Magento\Backend\Model\Config $backendConfig,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+    ) {
+        parent::__construct($context, $configStructure, $sectionChecker, $backendConfig);
+        $this->resultForwardFactory = $resultForwardFactory;
+    }
+
     /**
      * Index action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Save.php
index a0cffac49122b43ee65725e23a548d8e9f9090a4..1d9355459cadc1197d530bd693b1d9eb1fb69d00 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/Save.php
@@ -50,6 +50,11 @@ class Save extends AbstractConfig
      */
     protected $string;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
     /**
      * @param \Magento\Backend\App\Action\Context $context
      * @param \Magento\Backend\Model\Config\Structure $configStructure
@@ -57,6 +62,7 @@ class Save extends AbstractConfig
      * @param \Magento\Backend\Model\Config\Factory $configFactory
      * @param \Magento\Framework\Cache\FrontendInterface $cache
      * @param \Magento\Framework\Stdlib\String $string
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
@@ -64,12 +70,14 @@ class Save extends AbstractConfig
         \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker,
         \Magento\Backend\Model\Config\Factory $configFactory,
         \Magento\Framework\Cache\FrontendInterface $cache,
-        \Magento\Framework\Stdlib\String $string
+        \Magento\Framework\Stdlib\String $string,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
     ) {
         parent::__construct($context, $configStructure, $sectionChecker);
         $this->_configFactory = $configFactory;
         $this->_cache = $cache;
         $this->string = $string;
+        $this->resultRedirectFactory = $resultRedirectFactory;
     }
 
     /**
@@ -157,7 +165,7 @@ class Save extends AbstractConfig
     /**
      * Save configuration
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -192,6 +200,11 @@ class Save extends AbstractConfig
         }
 
         $this->_saveState($this->getRequest()->getPost('config_state'));
-        $this->_redirect('adminhtml/system_config/edit', array('_current' => array('section', 'website', 'store')));
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath(
+            'adminhtml/system_config/edit',
+            ['_current' => ['section', 'website', 'store']]
+        );
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/State.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/State.php
index ed7a44aff92f9eab806518f9a32e368ce0381d95..a75066b293da6b5b57e0fa52dda1142270792a51 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/State.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/State.php
@@ -26,24 +26,45 @@ namespace Magento\Backend\Controller\Adminhtml\System\Config;
 
 class State extends AbstractScopeConfig
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\Config\Structure $configStructure
+     * @param \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker
+     * @param \Magento\Backend\Model\Config $backendConfig
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRawFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\Config\Structure $configStructure,
+        \Magento\Backend\Controller\Adminhtml\System\ConfigSectionChecker $sectionChecker,
+        \Magento\Backend\Model\Config $backendConfig,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRawFactory
+    ) {
+        parent::__construct($context, $configStructure, $sectionChecker, $backendConfig);
+        $this->resultRawFactory = $resultRawFactory;
+    }
+
     /**
      * Save fieldset state through AJAX
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
-        if ($this->getRequest()->getParam(
-            'isAjax'
-        ) && $this->getRequest()->getParam(
-            'container'
-        ) != '' && $this->getRequest()->getParam(
-            'value'
-        ) != ''
+        if ($this->getRequest()->getParam('isAjax')
+            && $this->getRequest()->getParam('container')!= ''
+            && $this->getRequest()->getParam('value') != ''
         ) {
             $configState = array($this->getRequest()->getParam('container') => $this->getRequest()->getParam('value'));
             $this->_saveState($configState);
-            $this->getResponse()->setBody('success');
+            /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+            $resultRaw = $this->resultRawFactory->create();
+            return $resultRaw->setContents('success');
         }
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/System/Storage/Status.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/System/Storage/Status.php
index 1dd2083c8e273e40ede22e4a57c01b4937b90288..f8a647128a8538b33d94e1ac3263106d5614e585 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Config/System/Storage/Status.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Config/System/Storage/Status.php
@@ -26,10 +26,27 @@ namespace Magento\Backend\Controller\Adminhtml\System\Config\System\Storage;
 
 class Status extends \Magento\Backend\Controller\Adminhtml\System\Config\System\Storage
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context);
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * Retrieve synchronize process state and it's parameters in json format
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -111,7 +128,8 @@ class Status extends \Magento\Backend\Controller\Adminhtml\System\Config\System\
             $state = \Magento\Core\Model\File\Storage\Flag::STATE_INACTIVE;
         }
         $result['state'] = $state;
-        $result = $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode($result);
-        $this->_response->representJson($result);
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData($result);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design.php
index a2bdea502fd77d5bf62210830b0b321eb26d0c08..8f0ea01c57cd900af128e734502a7e6d9661bcf3 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design.php
@@ -39,19 +39,51 @@ class Design extends Action
      */
     protected $dateFilter;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
     /**
      * @param \Magento\Backend\App\Action\Context $context
      * @param \Magento\Framework\Registry $coreRegistry
      * @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         \Magento\Framework\Registry $coreRegistry,
-        \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
+        \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
     ) {
         $this->_coreRegistry = $coreRegistry;
         $this->dateFilter = $dateFilter;
         parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultForwardFactory = $resultForwardFactory;
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultLayoutFactory = $resultLayoutFactory;
     }
 
     /**
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
index 611118991f2dab5ae7948cff23694f3c5c88c7e5..64daee0b4b80c948f7576c37cfeb273abbf57ae2 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Design;
 class Delete extends \Magento\Backend\Controller\Adminhtml\System\Design
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -44,6 +44,8 @@ class Delete extends \Magento\Backend\Controller\Adminhtml\System\Design
                 $this->messageManager->addException($e, __("Cannot delete the design change."));
             }
         }
-        $this->getResponse()->setRedirect($this->getUrl('adminhtml/*/'));
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('adminhtml/*/');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
index e434d543c56057e188c4ca05609383a99944395e..319aa3830999959cebbc304df9b69f6ca65bb8c1 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Edit.php
@@ -27,14 +27,15 @@ namespace Magento\Backend\Controller\Adminhtml\System\Design;
 class Edit extends \Magento\Backend\Controller\Adminhtml\System\Design
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Store Design'));
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Backend::system_design_schedule');
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_design_schedule');
 
         $id = (int)$this->getRequest()->getParam('id');
         $design = $this->_objectManager->create('Magento\Framework\App\DesignInterface');
@@ -47,11 +48,11 @@ class Edit extends \Magento\Backend\Controller\Adminhtml\System\Design
 
         $this->_coreRegistry->register('design', $design);
 
-        $this->_addContent($this->_view->getLayout()->createBlock('Magento\Backend\Block\System\Design\Edit'));
-        $this->_addLeft(
-            $this->_view->getLayout()->createBlock('Magento\Backend\Block\System\Design\Edit\Tabs', 'design_tabs')
+        $resultPage->addContent($resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Design\Edit'));
+        $resultPage->addLeft(
+            $resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Design\Edit\Tabs', 'design_tabs')
         );
 
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
index 121cbdf223bba9f9d18a2044f27d58f2e2960885..50ced32ca220a41687a19db91d947c79bcf73679 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Grid.php
@@ -27,11 +27,10 @@ namespace Magento\Backend\Controller\Adminhtml\System\Design;
 class Grid extends \Magento\Backend\Controller\Adminhtml\System\Design
 {
     /**
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
-        $this->_view->loadLayout(false);
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
index 97cb56eb785f48d03f00d5c882cc9d43d8e892dc..05f2cbe41b0967a556ff7add52cf3b82b5197ac6 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Index.php
@@ -27,13 +27,14 @@ namespace Magento\Backend\Controller\Adminhtml\System\Design;
 class Index extends \Magento\Backend\Controller\Adminhtml\System\Design
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Store Design'));
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Backend::system_design_schedule');
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_design_schedule');
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
index 6a70112da9ea15ef986bb4609cbb5ce705099d4e..f72724aff55d0fb8e14fe82b61ec6326c3dd3f53 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/NewAction.php
@@ -27,10 +27,12 @@ namespace Magento\Backend\Controller\Adminhtml\System\Design;
 class NewAction extends \Magento\Backend\Controller\Adminhtml\System\Design
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
index c96ba5ddf40999dc1df959715b591be8e9e087ca..9e072cee54ea7ac266c23d83825e797e1bde030f 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
@@ -44,11 +44,14 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Design
     }
 
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $data = $this->getRequest()->getPost();
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+
         if ($data) {
             $data['design'] = $this->_filterPostData($data['design']);
             $id = (int)$this->getRequest()->getParam('id');
@@ -69,11 +72,10 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Design
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
                 $this->_objectManager->get('Magento\Backend\Model\Session')->setDesignData($data);
-                $this->_redirect('adminhtml/*/edit', array('id' => $design->getId()));
-                return;
+                return $resultRedirect->setPath('adminhtml/*/', ['id' => $design->getId()]);
             }
         }
 
-        $this->_redirect('adminhtml/*/');
+        return $resultRedirect->setPath('adminhtml/*/');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
index c44c9c102bed6a31c0430957df2a7779824632c8..db1ee31139c7975e1f6fda971d07e3f96b29306c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Index.php
@@ -27,13 +27,31 @@ namespace Magento\Backend\Controller\Adminhtml\System;
 class Index extends \Magento\Backend\Controller\Adminhtml\System
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Adminhtml::system');
-        $this->_addBreadcrumb(__('System'), __('System'));
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Adminhtml::system');
+        $resultPage->addBreadcrumb(__('System'), __('System'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
index 1416a260cd0083981ee7ee50abb7fb016f2c1c4f..6295ade86f10fe97da9ea670bd8e487257ec96d7 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
@@ -46,40 +46,58 @@ class Store extends Action
      */
     protected $filterManager;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
     /**
      * @param \Magento\Backend\App\Action\Context $context
      * @param \Magento\Framework\Registry $coreRegistry
      * @param \Magento\Framework\Filter\FilterManager $filterManager
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         \Magento\Framework\Registry $coreRegistry,
-        \Magento\Framework\Filter\FilterManager $filterManager
+        \Magento\Framework\Filter\FilterManager $filterManager,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
     ) {
         $this->_coreRegistry = $coreRegistry;
         $this->filterManager = $filterManager;
         parent::__construct($context);
+        $this->resultForwardFactory = $resultForwardFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultPageFactory = $resultPageFactory;
     }
 
     /**
      * Init actions
      *
-     * @return $this
+     * @return \Magento\Backend\Model\View\Result\Page
      */
-    protected function _initAction()
+    protected function createPage()
     {
-        // load layout, set active menu and breadcrumbs
-        $this->_view->loadLayout();
-        $this->_setActiveMenu(
-            'Magento_Backend::system_store'
-        )->_addBreadcrumb(
-            __('System'),
-            __('System')
-        )->_addBreadcrumb(
-            __('Manage Stores'),
-            __('Manage Stores')
-        );
-        return $this;
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_store')
+            ->addBreadcrumb(__('System'), __('System'))
+            ->addBreadcrumb(__('Manage Stores'), __('Manage Stores'));
+        return $resultPage;
     }
 
     /**
@@ -93,14 +111,12 @@ class Store extends Action
     /**
      * Backup database
      *
-     * @param string $failPath redirect path if backup failed
-     * @param array $arguments
-     * @return $this|void
+     * @return bool
      */
-    protected function _backupDatabase($failPath, $arguments = array())
+    protected function _backupDatabase()
     {
         if (!$this->getRequest()->getParam('create_backup')) {
-            return $this;
+            return true;
         }
         try {
             /** @var \Magento\Backup\Model\Db $backupDb */
@@ -116,17 +132,15 @@ class Store extends Action
             $this->messageManager->addSuccess(__('The database was backed up.'));
         } catch (\Magento\Framework\Model\Exception $e) {
             $this->messageManager->addError($e->getMessage());
-            $this->_redirect($failPath, $arguments);
-            return;
+            return false;
         } catch (\Exception $e) {
             $this->messageManager->addException(
                 $e,
                 __('We couldn\'t create a backup right now. Please try again later.')
             );
-            $this->_redirect($failPath, $arguments);
-            return;
+            return false;
         }
-        return $this;
+        return true;
     }
 
     /**
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
index 2e969699f46be927e0a56492094441be34691135..af5b9b95e6014283da68943f48fb5a97e66cff26 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class DeleteGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -36,33 +36,28 @@ class DeleteGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
         $itemId = $this->getRequest()->getParam('item_id', null);
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Group')->load($itemId))) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This store cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editGroup', array('group_id' => $itemId));
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $itemId]);
         }
 
         $this->_addDeletionNotice('store');
 
-        $this->_initAction()->_addBreadcrumb(
-            __('Delete Store'),
-            __('Delete Store')
-        )->_addContent(
-            $this->_view->getLayout()->createBlock(
-                'Magento\Backend\Block\System\Store\Delete'
-            )->setFormActionUrl(
-                $this->getUrl('adminhtml/*/deleteGroupPost')
-            )->setBackUrl(
-                $this->getUrl('adminhtml/*/editGroup', array('group_id' => $itemId))
-            )->setStoreTypeTitle(
-                __('Store')
-            )->setDataObject(
-                $model
-            )
-        );
-        $this->_view->renderLayout();
+        $resultPage = $this->createPage();
+        $resultPage->addBreadcrumb(__('Delete Store'), __('Delete Store'))
+            ->addContent(
+                $resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Store\Delete')
+                    ->setFormActionUrl($this->getUrl('adminhtml/*/deleteGroupPost'))
+                    ->setBackUrl($this->getUrl('adminhtml/*/editGroup', ['group_id' => $itemId]))
+                    ->setStoreTypeTitle(__('Store'))
+                    ->setDataObject($model)
+            );
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
index 5995c756ec45c2e169366ad4367db0e8f631a8fe..fc3c7b25b932ea2059e14dc62cb219aff7c411a0 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php
@@ -27,35 +27,37 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class DeleteGroupPost extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $itemId = $this->getRequest()->getParam('item_id');
 
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
+
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Group')->load($itemId))) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This store cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editGroup', array('group_id' => $model->getId()));
-            return;
+            return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $model->getId()]);
         }
 
-        $this->_backupDatabase('*/*/editGroup', array('group_id' => $itemId));
+        if (!$this->_backupDatabase()) {
+            return $redirectResult->setPath('*/*/editGroup', ['group_id' => $itemId]);
+        }
 
         try {
             $model->delete();
             $this->messageManager->addSuccess(__('The store has been deleted.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         } catch (\Magento\Framework\Model\Exception $e) {
             $this->messageManager->addError($e->getMessage());
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('Unable to delete store. Please, try again later.'));
         }
-        $this->_redirect('adminhtml/*/editGroup', array('group_id' => $itemId));
+        return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $itemId]);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
index ee1c4e3243038e99a8eaabe20a7e76abc8022110..5d62cb11af7bb20cba5efd3d4ff1bdd09247deea 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class DeleteStore extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -37,32 +37,28 @@ class DeleteStore extends \Magento\Backend\Controller\Adminhtml\System\Store
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Store')->load($itemId))) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again.'));
             $this->_redirect('adminhtml/*/');
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This store view cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editStore', array('store_id' => $itemId));
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $itemId]);
         }
 
         $this->_addDeletionNotice('store view');
 
-        $this->_initAction()->_addBreadcrumb(
-            __('Delete Store View'),
-            __('Delete Store View')
-        )->_addContent(
-            $this->_view->getLayout()->createBlock(
-                'Magento\Backend\Block\System\Store\Delete'
-            )->setFormActionUrl(
-                $this->getUrl('adminhtml/*/deleteStorePost')
-            )->setBackUrl(
-                $this->getUrl('adminhtml/*/editStore', array('store_id' => $itemId))
-            )->setStoreTypeTitle(
-                __('Store View')
-            )->setDataObject(
-                $model
-            )
-        );
-        $this->_view->renderLayout();
+        $resultPage = $this->createPage();
+        $resultPage->addBreadcrumb(__('Delete Store View'), __('Delete Store View'))
+            ->addContent(
+                $resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Store\Delete')
+                    ->setFormActionUrl($this->getUrl('adminhtml/*/deleteStorePost'))
+                    ->setBackUrl($this->getUrl('adminhtml/*/editStore', ['store_id' => $itemId]))
+                    ->setStoreTypeTitle(__('Store View'))
+                    ->setDataObject($model)
+            );
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
index 1fd7a689724c13ba7b24b996b1a4b22ec81e736b..4cdaa0d1a220f8c0f744289a2529f3e5e81add0e 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php
@@ -29,24 +29,26 @@ class DeleteStorePost extends \Magento\Backend\Controller\Adminhtml\System\Store
     /**
      * Delete store view post action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $itemId = $this->getRequest()->getParam('item_id');
 
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Store')->load($itemId))) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This store view cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editStore', array('store_id' => $model->getId()));
-            return;
+            return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $model->getId()]);
         }
 
-        $this->_backupDatabase('*/*/editStore', array('store_id' => $itemId));
+        if (!$this->_backupDatabase()) {
+            return $redirectResult->setPath('*/*/editStore', ['store_id' => $itemId]);
+        }
 
         try {
             $model->delete();
@@ -54,13 +56,12 @@ class DeleteStorePost extends \Magento\Backend\Controller\Adminhtml\System\Store
             $this->_eventManager->dispatch('store_delete', array('store' => $model));
 
             $this->messageManager->addSuccess(__('The store view has been deleted.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         } catch (\Magento\Framework\Model\Exception $e) {
             $this->messageManager->addError($e->getMessage());
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('Unable to delete store view. Please, try again later.'));
         }
-        $this->_redirect('adminhtml/*/editStore', array('store_id' => $itemId));
+        return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $itemId]);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
index 9a99a2925e0982eaca32621ad5863617384b076d..79f1824504f3824185c7004bc20ac3549ca689f5 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class DeleteWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -36,33 +36,27 @@ class DeleteWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
         $itemId = $this->getRequest()->getParam('item_id', null);
         if (!($model = $this->_objectManager->create('Magento\Store\Model\Website')->load($itemId))) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This website cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editWebsite', array('website_id' => $itemId));
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+            $redirectResult = $this->resultRedirectFactory->create();
+            return $redirectResult->setPath('adminhtml/*/editWebsite', ['website_id' => $itemId]);
         }
 
         $this->_addDeletionNotice('website');
 
-        $this->_initAction()->_addBreadcrumb(
-            __('Delete Web Site'),
-            __('Delete Web Site')
-        )->_addContent(
-            $this->_view->getLayout()->createBlock(
-                'Magento\Backend\Block\System\Store\Delete'
-            )->setFormActionUrl(
-                $this->getUrl('adminhtml/*/deleteWebsitePost')
-            )->setBackUrl(
-                $this->getUrl('adminhtml/*/editWebsite', array('website_id' => $itemId))
-            )->setStoreTypeTitle(
-                __('Web Site')
-            )->setDataObject(
-                $model
-            )
-        );
-        $this->_view->renderLayout();
+        $resultPage = $this->createPage();
+        $resultPage->addBreadcrumb(__('Delete Web Site'), __('Delete Web Site'))
+            ->addContent(
+                $resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Store\Delete')
+                    ->setFormActionUrl($this->getUrl('adminhtml/*/deleteWebsitePost'))
+                    ->setBackUrl($this->getUrl('adminhtml/*/editWebsite', ['website_id' => $itemId]))
+                    ->setStoreTypeTitle(__('Web Site'))->setDataObject($model)
+            );
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
index be99235d5effa540008eac84a123c134a7fc16f8..3c9ce69f83daa97e54139f2d46786172469d063c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class DeleteWebsitePost extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -35,29 +35,31 @@ class DeleteWebsitePost extends \Magento\Backend\Controller\Adminhtml\System\Sto
         $model = $this->_objectManager->create('Magento\Store\Model\Website');
         $model->load($itemId);
 
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
+
         if (!$model) {
             $this->messageManager->addError(__('Unable to proceed. Please, try again'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         }
         if (!$model->isCanDelete()) {
             $this->messageManager->addError(__('This website cannot be deleted.'));
-            $this->_redirect('adminhtml/*/editWebsite', array('website_id' => $model->getId()));
-            return;
+            return $redirectResult->setPath('adminhtml/*/editWebsite', ['website_id' => $model->getId()]);
         }
 
-        $this->_backupDatabase('*/*/editWebsite', array('website_id' => $itemId));
+        if (!$this->_backupDatabase()) {
+            return $redirectResult->setPath('*/*/editWebsite', ['website_id' => $itemId]);
+        }
 
         try {
             $model->delete();
             $this->messageManager->addSuccess(__('The website has been deleted.'));
-            $this->_redirect('adminhtml/*/');
-            return;
+            return $redirectResult->setPath('adminhtml/*/');
         } catch (\Magento\Framework\Model\Exception $e) {
             $this->messageManager->addError($e->getMessage());
         } catch (\Exception $e) {
             $this->messageManager->addException($e, __('Unable to delete website. Please, try again later.'));
         }
-        $this->_redirect('adminhtml/*/editWebsite', array('website_id' => $itemId));
+        return $redirectResult->setPath('*/*/editWebsite', ['website_id' => $itemId]);
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
index 1d0e0e9d72033a12e289ccba8c3b99be805e716b..bb846b7794e0a23e4144e82e21f9b94756338e4c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditGroup.php
@@ -27,11 +27,13 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class EditGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
         $this->_coreRegistry->register('store_type', 'group');
-        $this->_forward('editStore');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('editStore');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
index 43b5e9e33e100982dd6b8ed2c42e222a5f3b6cab..a1d0ad765789692de819b5edfcad82bde07148e8 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class EditStore extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -87,13 +87,14 @@ class EditStore extends \Magento\Backend\Controller\Adminhtml\System\Store
                 $this->messageManager->addNotice($codeBase);
             }
 
-            $this->_initAction()->_addContent(
-                $this->_view->getLayout()->createBlock('Magento\Backend\Block\System\Store\Edit')
-            );
-            $this->_view->renderLayout();
+            $resultPage = $this->createPage();
+            $resultPage->addContent($resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Store\Edit'));
+            return $resultPage;
         } else {
             $this->messageManager->addError($notExists);
-            $this->_redirect('adminhtml/*/');
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('adminhtml/*/');
         }
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
index fa375b2df52935b68059f6a95c9581cc7ba3da15..99e0157d23775c56bea380508f39a3ab36e0fde0 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditWebsite.php
@@ -27,11 +27,13 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class EditWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
         $this->_coreRegistry->register('store_type', 'website');
-        $this->_forward('editStore');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('editStore');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
index f446c0228501c13f7bb30b0bb1bc4c99793014c6..b2f2998ad78e74ee3b7c8454413f1216785b1372 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Index.php
@@ -27,12 +27,11 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class Index extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Stores'));
-        $this->_initAction();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
index 093fe0799bee898712a94da50e96be9236babdc5..63fd62ff33bcc4af38ccebc9fd79d8ab6cd778cd 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewGroup.php
@@ -27,11 +27,13 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class NewGroup extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
         $this->_coreRegistry->register('store_type', 'group');
-        $this->_forward('newStore');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('newStore');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
index 15e460caad4727c12cda5200dbf52422ac8191c1..582698885decf49dfb1984500f8b9e226571d2f7 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewStore.php
@@ -27,7 +27,7 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class NewStore extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
@@ -35,6 +35,8 @@ class NewStore extends \Magento\Backend\Controller\Adminhtml\System\Store
             $this->_coreRegistry->register('store_type', 'store');
         }
         $this->_coreRegistry->register('store_action', 'add');
-        $this->_forward('editStore');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('editStore');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
index d091c7cf092d329058a2d5d2a456eb3f45981f21..e5b285764c8e72b21942c14d68a44d085895aea9 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/NewWebsite.php
@@ -27,11 +27,13 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store;
 class NewWebsite extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
         $this->_coreRegistry->register('store_type', 'website');
-        $this->_forward('newStore');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('newStore');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
index c379532f889bcefa38b90640459a60247d87819e..96ae959dce68b8ad41c3b5bd048565078a7bd164 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php
@@ -24,17 +24,21 @@
  */
 namespace Magento\Backend\Controller\Adminhtml\System\Store;
 
+use Magento\Backend\App\Action;
+
 class Save extends \Magento\Backend\Controller\Adminhtml\System\Store
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
         if ($this->getRequest()->isPost() && ($postData = $this->getRequest()->getPost())) {
             if (empty($postData['store_type']) || empty($postData['store_action'])) {
-                $this->_redirect('adminhtml/*/');
-                return;
+                $redirectResult->setPath('adminhtml/*/');
+                return $redirectResult;
             }
 
             try {
@@ -99,11 +103,11 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Store
                         $this->messageManager->addSuccess(__('The store view has been saved'));
                         break;
                     default:
-                        $this->_redirect('adminhtml/*/');
-                        return;
+                        $redirectResult->setPath('adminhtml/*/');
+                        return $redirectResult;
                 }
-                $this->_redirect('adminhtml/*/');
-                return;
+                $redirectResult->setPath('adminhtml/*/');
+                return $redirectResult;
             } catch (\Magento\Framework\Model\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
                 $this->_getSession()->setPostData($postData);
@@ -114,9 +118,10 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Store
                 );
                 $this->_getSession()->setPostData($postData);
             }
-            $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*')));
-            return;
+            $redirectResult->setUrl($this->_redirect->getRedirectUrl($this->getUrl('*')));
+            return $redirectResult;
         }
-        $this->_redirect('adminhtml/*/');
+        $redirectResult->setPath('adminhtml/*/');
+        return $redirectResult;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable.php
index 66401200364624967b9934df3fe452c2f0e0cf36..fa8007ec432fa13cc466f92beffa9433f82b8f52 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable.php
@@ -37,33 +37,72 @@ class Variable extends Action
      *
      * @var \Magento\Framework\Registry
      */
-    protected $_coreRegistry = null;
+    protected $_coreRegistry;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
 
     /**
      * @param \Magento\Backend\App\Action\Context $context
      * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
      */
-    public function __construct(\Magento\Backend\App\Action\Context $context, \Magento\Framework\Registry $coreRegistry)
-    {
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
         $this->_coreRegistry = $coreRegistry;
         parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultForwardFactory = $resultForwardFactory;
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->resultPageFactory = $resultPageFactory;
+        $this->layoutFactory = $layoutFactory;
     }
 
     /**
      * Initialize Layout and set breadcrumbs
      *
-     * @return $this
+     * @return \Magento\Backend\Model\View\Result\Page
      */
-    protected function _initLayout()
+    protected function createPage()
     {
-        $this->_view->loadLayout();
-        $this->_setActiveMenu(
-            'Magento_Backend::system_variable'
-        )->_addBreadcrumb(
-            __('Custom Variables'),
-            __('Custom Variables')
-        );
-        return $this;
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Backend::system_variable')
+            ->addBreadcrumb(__('Custom Variables'), __('Custom Variables'));
+        return $resultPage;
     }
 
     /**
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Delete.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Delete.php
index 444ae5234735b8cb51d5a4e630ad2e25b28a330c..057ce46e5bcb56ab5551ac18b8efbb5e0d6013f2 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Delete.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Delete.php
@@ -29,22 +29,22 @@ class Delete extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * Delete Action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $variable = $this->_initVariable();
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
         if ($variable->getId()) {
             try {
                 $variable->delete();
                 $this->messageManager->addSuccess(__('You deleted the custom variable.'));
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
-                $this->_redirect('adminhtml/*/edit', array('_current' => true));
-                return;
+                return $resultRedirect->setPath('adminhtml/*/edit', ['_current' => true]);
             }
         }
-        $this->_redirect('adminhtml/*/', array());
-        return;
+        return $resultRedirect->setPath('adminhtml/*/');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Edit.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Edit.php
index e6f2f64279a8bdfed582f74d7b1e30646f8c3db8..9efad80413370073dc512f4d47d7ff0d24e10f90 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Edit.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Edit.php
@@ -29,7 +29,7 @@ class Edit extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * Edit Action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
@@ -37,15 +37,15 @@ class Edit extends \Magento\Backend\Controller\Adminhtml\System\Variable
 
         $this->_title->add($variable->getId() ? $variable->getCode() : __('New Custom Variable'));
 
-        $this->_initLayout()->_addContent(
-            $this->_view->getLayout()->createBlock('Magento\Backend\Block\System\Variable\Edit')
-        )->_addJs(
-            $this->_view->getLayout()->createBlock(
-                'Magento\Framework\View\Element\Template',
-                '',
-                array('data' => array('template' => 'Magento_Backend::system/variable/js.phtml'))
-            )
-        );
-        $this->_view->renderLayout();
+        $resultPage = $this->createPage();
+        $resultPage->addContent($resultPage->getLayout()->createBlock('Magento\Backend\Block\System\Variable\Edit'))
+            ->addJs(
+                $resultPage->getLayout()->createBlock(
+                    'Magento\Framework\View\Element\Template',
+                    '',
+                    ['data' => ['template' => 'Magento_Backend::system/variable/js.phtml']]
+                )
+            );
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Index.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Index.php
index 25942e3ff388c2b595fdc086331998a3e0e210eb..b785ebc1ea890427ef7769825c9d1f7dc8c90014 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Index.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Index.php
@@ -29,13 +29,12 @@ class Index extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * Index Action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Custom Variables'));
 
-        $this->_initLayout();
-        $this->_view->renderLayout();
+        return $this->createPage();
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/NewAction.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/NewAction.php
index 640d0042d2a44888a45bb16d2753a8a051454f06..047443123ed64df21bde26209dd2d778ca215e48 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/NewAction.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/NewAction.php
@@ -29,10 +29,12 @@ class NewAction extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * New Action (forward to edit action)
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Save.php
index 843511c4cf642826be64dcc74bd7a20b7309e777..e36eceb4148e75cd68b4969a75dc6f5f53481545 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Save.php
@@ -29,13 +29,15 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * Save Action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $variable = $this->_initVariable();
         $data = $this->getRequest()->getPost('variable');
         $back = $this->getRequest()->getParam('back', false);
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
         if ($data) {
             $data['variable_id'] = $variable->getId();
             $variable->setData($data);
@@ -43,21 +45,19 @@ class Save extends \Magento\Backend\Controller\Adminhtml\System\Variable
                 $variable->save();
                 $this->messageManager->addSuccess(__('You saved the custom variable.'));
                 if ($back) {
-                    $this->_redirect(
+                    $resultRedirect->setPath(
                         'adminhtml/*/edit',
-                        array('_current' => true, 'variable_id' => $variable->getId())
+                        ['_current' => true, 'variable_id' => $variable->getId()]
                     );
                 } else {
-                    $this->_redirect('adminhtml/*/', array());
+                    $resultRedirect->setPath('adminhtml/*/');
                 }
-                return;
+                return $resultRedirect;
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
-                $this->_redirect('adminhtml/*/edit', array('_current' => true));
-                return;
+                return $resultRedirect->setPath('adminhtml/*/edit', ['_current' => true]);
             }
         }
-        $this->_redirect('adminhtml/*/', array());
-        return;
+        return $resultRedirect->setPath('adminhtml/*/');
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Validate.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Validate.php
index 61515a7dc1a349db9440b59860ffa79bb3240749..3a8e592362cdf9aedd02ffb44309a6b7756cfb81 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Validate.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/Validate.php
@@ -29,7 +29,7 @@ class Validate extends \Magento\Backend\Controller\Adminhtml\System\Variable
     /**
      * Validate Action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -39,10 +39,13 @@ class Validate extends \Magento\Backend\Controller\Adminhtml\System\Variable
         $result = $variable->validate();
         if ($result !== true && is_string($result)) {
             $this->messageManager->addError($result);
-            $this->_view->getLayout()->initMessages();
+            $layout = $this->layoutFactory->create();
+            $layout->initMessages();
             $response->setError(true);
-            $response->setHtmlMessage($this->_view->getLayout()->getMessagesBlock()->getGroupedHtml());
+            $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml());
         }
-        $this->getResponse()->representJson($response->toJson());
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData($response->toArray());
     }
 }
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/WysiwygPlugin.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
index 69498fb1847a4b1f3a1ab2a6a044abb80df3b744..4fc43775a044817dd154e385a1c24511b603e06d 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Variable/WysiwygPlugin.php
@@ -29,7 +29,7 @@ class WysiwygPlugin extends \Magento\Backend\Controller\Adminhtml\System\Variabl
     /**
      * WYSIWYG Plugin Action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -39,7 +39,8 @@ class WysiwygPlugin extends \Magento\Backend\Controller\Adminhtml\System\Variabl
         )->toOptionArray(
             true
         );
-        $variables = array($storeContactVariabls, $customVariables);
-        $this->getResponse()->representJson(\Zend_Json::encode($variables));
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData([$storeContactVariabls, $customVariables]);
     }
 }
diff --git a/app/code/Magento/Backend/Model/View.php b/app/code/Magento/Backend/Model/View.php
index 4151a520c2e764bcb8f0894b162a9ea526ecf65f..36edb08211b6d238a0fe052275974c5ca6a21819 100644
--- a/app/code/Magento/Backend/Model/View.php
+++ b/app/code/Magento/Backend/Model/View.php
@@ -38,7 +38,7 @@ class View extends \Magento\Framework\App\View
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
      * @param \Magento\Framework\View\Result\PageFactory $pageFactory
      * @param \Magento\Framework\App\ActionFlag $actionFlag
-     * @param Layout\Filter\Acl $aclFilter
+     * @param View\Layout\Filter\Acl $aclFilter
      */
     public function __construct(
         \Magento\Framework\View\LayoutInterface $layout,
@@ -48,7 +48,7 @@ class View extends \Magento\Framework\App\View
         \Magento\Framework\Event\ManagerInterface $eventManager,
         \Magento\Framework\View\Result\PageFactory $pageFactory,
         \Magento\Framework\App\ActionFlag $actionFlag,
-        Layout\Filter\Acl $aclFilter
+        View\Layout\Filter\Acl $aclFilter
     ) {
         $this->_aclFilter = $aclFilter;
         parent::__construct($layout, $request, $response, $configScope, $eventManager, $pageFactory, $actionFlag);
diff --git a/app/code/Magento/Backend/Model/View/Layout/Builder.php b/app/code/Magento/Backend/Model/View/Layout/Builder.php
new file mode 100644
index 0000000000000000000000000000000000000000..4ef601f6d7f3ffe538be13ecf23bf7cd75f4bf46
--- /dev/null
+++ b/app/code/Magento/Backend/Model/View/Layout/Builder.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Model\View\Layout;
+
+use Magento\Framework\App;
+use Magento\Framework\View;
+use Magento\Framework\Event;
+
+class Builder extends \Magento\Framework\View\Layout\Builder
+{
+    /**
+     * @var Filter\Acl
+     */
+    protected $aclFilter;
+
+    /**
+     * @param View\LayoutInterface $layout
+     * @param App\Request\Http $request
+     * @param Event\ManagerInterface $eventManager
+     * @param Filter\Acl $aclFilter
+     */
+    public function __construct(
+        View\LayoutInterface $layout,
+        App\Request\Http $request,
+        Event\ManagerInterface $eventManager,
+        Filter\Acl $aclFilter
+    ) {
+        parent::__construct($layout, $request, $eventManager);
+        $this->aclFilter = $aclFilter;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function beforeGenerateBlock()
+    {
+        $this->aclFilter->filterAclNodes($this->layout->getNode());
+        return $this;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function afterGenerateBlock()
+    {
+        $this->layout->initMessages();
+        return $this;
+    }
+}
diff --git a/app/code/Magento/Backend/Model/Layout/Filter/Acl.php b/app/code/Magento/Backend/Model/View/Layout/Filter/Acl.php
similarity index 97%
rename from app/code/Magento/Backend/Model/Layout/Filter/Acl.php
rename to app/code/Magento/Backend/Model/View/Layout/Filter/Acl.php
index adc785fe25f575b1d6f348e36c0ca3d16f1fcee3..feea4cddbdf25b984971c18fe196d2f952d8b16c 100644
--- a/app/code/Magento/Backend/Model/Layout/Filter/Acl.php
+++ b/app/code/Magento/Backend/Model/View/Layout/Filter/Acl.php
@@ -19,11 +19,11 @@
  * Do not edit or add to this file if you wish to upgrade Magento to newer
  * versions in the future. If you wish to customize Magento for your
  * needs please refer to http://www.magentocommerce.com for more information.
- * 
+ *
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Backend\Model\Layout\Filter;
+namespace Magento\Backend\Model\View\Layout\Filter;
 
 class Acl
 {
diff --git a/app/code/Magento/Backend/Model/View/Page/Builder.php b/app/code/Magento/Backend/Model/View/Page/Builder.php
new file mode 100644
index 0000000000000000000000000000000000000000..a56dae42673423dde102e4b9963075c38faaf1a5
--- /dev/null
+++ b/app/code/Magento/Backend/Model/View/Page/Builder.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Model\View\Page;
+
+use Magento\Framework\App;
+use Magento\Framework\View;
+use Magento\Framework\Event;
+use Magento\Backend\Model\View\Layout;
+
+class Builder extends View\Page\Builder
+{
+    /**
+     * @var Layout\Filter\Acl $aclFilter
+     */
+    protected $aclFilter;
+
+    /**
+     * @param View\LayoutInterface $layout
+     * @param App\Request\Http $request
+     * @param Event\ManagerInterface $eventManager
+     * @param View\Page\Config $pageConfig
+     * @param View\Page\Layout\Reader $pageLayoutReader
+     * @param Layout\Filter\Acl $aclFilter
+     */
+    public function __construct(
+        View\LayoutInterface $layout,
+        App\Request\Http $request,
+        Event\ManagerInterface $eventManager,
+        View\Page\Config $pageConfig,
+        View\Page\Layout\Reader $pageLayoutReader,
+        Layout\Filter\Acl $aclFilter
+    ) {
+        parent::__construct($layout, $request, $eventManager, $pageConfig, $pageLayoutReader);
+        $this->aclFilter = $aclFilter;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function beforeGenerateBlock()
+    {
+        $this->aclFilter->filterAclNodes($this->layout->getNode());
+        return $this;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function afterGenerateBlock()
+    {
+        $this->layout->initMessages();
+        return $this;
+    }
+}
diff --git a/app/code/Magento/Backend/Model/View/Result/Forward.php b/app/code/Magento/Backend/Model/View/Result/Forward.php
new file mode 100644
index 0000000000000000000000000000000000000000..1b78fb9bec678b416085c65c16f97814738736a2
--- /dev/null
+++ b/app/code/Magento/Backend/Model/View/Result/Forward.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Model\View\Result;
+
+use Magento\Framework\App\RequestInterface;
+use Magento\Backend\Model\Session;
+use Magento\Framework\App\ActionFlag;
+use Magento\Backend\App\AbstractAction;
+
+class Forward extends \Magento\Framework\Controller\Result\Forward
+{
+    /**
+     * @var \Magento\Backend\Model\Session
+     */
+    protected $session;
+
+    /**
+     * @var \Magento\Framework\App\ActionFlag
+     */
+    protected $actionFlag;
+
+    /**
+     * @param RequestInterface $request
+     * @param Session $session
+     * @param ActionFlag $actionFlag
+     */
+    public function __construct(RequestInterface $request, Session $session, ActionFlag $actionFlag)
+    {
+        $this->session = $session;
+        $this->actionFlag = $actionFlag;
+        parent::__construct($request);
+    }
+
+    /**
+     * @param string $action
+     * @return $this
+     */
+    public function forward($action)
+    {
+        $this->session->setIsUrlNotice($this->actionFlag->get('', AbstractAction::FLAG_IS_URLS_CHECKED));
+        return parent::forward($action);
+    }
+}
diff --git a/app/code/Magento/Backend/Model/View/Result/Page.php b/app/code/Magento/Backend/Model/View/Result/Page.php
new file mode 100644
index 0000000000000000000000000000000000000000..586529b33f77ef552940d7dab53ea3b2d3fd3c59
--- /dev/null
+++ b/app/code/Magento/Backend/Model/View/Result/Page.php
@@ -0,0 +1,155 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Model\View\Result;
+
+use Magento\Framework\Translate;
+use Magento\Framework\View;
+use Magento\Framework\App;
+
+class Page extends View\Result\Page
+{
+    /**
+     * @var \Magento\Framework\App\Action\Title
+     */
+    protected $title;
+
+    /**
+     * Constructor
+     *
+     * @param View\Element\Template\Context $context
+     * @param View\LayoutFactory $layoutFactory
+     * @param View\Layout\Reader\Pool $layoutReaderPool
+     * @param Translate\InlineInterface $translateInline
+     * @param View\Page\Config\RendererFactory $pageConfigRendererFactory
+     * @param View\Page\Layout\Reader $pageLayoutReader
+     * @param View\Layout\BuilderFactory $layoutBuilderFactory
+     * @param string $template
+     * @param App\Action\Title $title
+     */
+    public function __construct(
+        View\Element\Template\Context $context,
+        View\LayoutFactory $layoutFactory,
+        View\Layout\Reader\Pool $layoutReaderPool,
+        Translate\InlineInterface $translateInline,
+        View\Layout\BuilderFactory $layoutBuilderFactory,
+        View\Page\Config\RendererFactory $pageConfigRendererFactory,
+        View\Page\Layout\Reader $pageLayoutReader,
+        $template,
+        App\Action\Title $title
+    ) {
+        parent::__construct(
+            $context,
+            $layoutFactory,
+            $layoutReaderPool,
+            $translateInline,
+            $layoutBuilderFactory,
+            $pageConfigRendererFactory,
+            $pageLayoutReader,
+            $template
+        );
+        $this->title = $title;
+    }
+
+    /**
+     * Define active menu item in menu block
+     *
+     * @param string $itemId current active menu item
+     * @return $this
+     */
+    public function setActiveMenu($itemId)
+    {
+        /** @var $menuBlock \Magento\Backend\Block\Menu */
+        $menuBlock = $this->layout->getBlock('menu');
+        $menuBlock->setActive($itemId);
+        $parents = $menuBlock->getMenuModel()->getParentItems($itemId);
+        $parents = array_reverse($parents);
+        foreach ($parents as $item) {
+            /** @var $item \Magento\Backend\Model\Menu\Item */
+            $this->title->add($item->getTitle(), true);
+        }
+        return $this;
+    }
+
+    /**
+     * Add link to breadcrumb block
+     *
+     * @param string $label
+     * @param string $title
+     * @param string|null $link
+     * @return $this
+     */
+    public function addBreadcrumb($label, $title, $link = null)
+    {
+        $this->layout->getBlock('breadcrumbs')->addLink($label, $title, $link);
+        return $this;
+    }
+
+    /**
+     * Add content to content section
+     *
+     * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @return $this
+     */
+    public function addContent(View\Element\AbstractBlock $block)
+    {
+        return $this->moveBlockToContainer($block, 'content');
+    }
+
+    /**
+     * Add block to left container
+     *
+     * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @return $this
+     */
+    public function addLeft(View\Element\AbstractBlock $block)
+    {
+        return $this->moveBlockToContainer($block, 'left');
+    }
+
+    /**
+     * Add javascript to head
+     *
+     * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @return $this
+     */
+    public function addJs(View\Element\AbstractBlock $block)
+    {
+        return $this->moveBlockToContainer($block, 'js');
+    }
+
+    /**
+     * Set specified block as an anonymous child to specified container
+     *
+     * The block will be moved to the container from previous parent after all other elements
+     *
+     * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @param string $containerName
+     * @return $this
+     */
+    protected function moveBlockToContainer(View\Element\AbstractBlock $block, $containerName)
+    {
+        $this->layout->setChild($containerName, $block->getNameInLayout(), '');
+        return $this;
+    }
+}
diff --git a/app/code/Magento/Backend/Model/View/Result/Redirect.php b/app/code/Magento/Backend/Model/View/Result/Redirect.php
new file mode 100644
index 0000000000000000000000000000000000000000..2ea91b153a936a8051f3ce1157fcccb1c718c4e8
--- /dev/null
+++ b/app/code/Magento/Backend/Model/View/Result/Redirect.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Model\View\Result;
+
+use Magento\Framework\App;
+use Magento\Backend\Model\Session;
+use Magento\Backend\Model\UrlInterface;
+use Magento\Framework\App\ActionFlag;
+use Magento\Backend\App\AbstractAction;
+
+class Redirect extends \Magento\Framework\Controller\Result\Redirect
+{
+    /**
+     * @var \Magento\Backend\Model\Session
+     */
+    protected $session;
+
+    /**
+     * @var \Magento\Framework\App\ActionFlag
+     */
+    protected $actionFlag;
+
+    /**
+     * Constructor
+     *
+     * @param App\Response\RedirectInterface $redirect
+     * @param \Magento\Backend\Model\UrlInterface $urlBuilder
+     * @param Session $session
+     * @param ActionFlag $actionFlag
+     */
+    public function __construct(
+        App\Response\RedirectInterface $redirect,
+        \Magento\Backend\Model\UrlInterface $urlBuilder,
+        Session $session,
+        ActionFlag $actionFlag
+    ) {
+        $this->session = $session;
+        $this->actionFlag = $actionFlag;
+        parent::__construct($redirect, $urlBuilder);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function render(App\ResponseInterface $response)
+    {
+        $this->session->setIsUrlNotice($this->actionFlag->get('', AbstractAction::FLAG_IS_URLS_CHECKED));
+        return parent::render($response);
+    }
+}
diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json
index efb4d4cfa3634dbd6d41481cf294c7063d1503bc..7fcea80adbc41d4b9069336fa637cbc7d7b22367 100644
--- a/app/code/Magento/Backend/composer.json
+++ b/app/code/Magento/Backend/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-reports": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-user": "0.1.0-alpha101",
-        "magento/module-backup": "0.1.0-alpha101",
-        "magento/module-email": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-translation": "0.1.0-alpha101",
-        "magento/module-require-js": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-reports": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-user": "0.1.0-alpha102",
+        "magento/module-backup": "0.1.0-alpha102",
+        "magento/module-email": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-translation": "0.1.0-alpha102",
+        "magento/module-require-js": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Backend/etc/adminhtml/di.xml b/app/code/Magento/Backend/etc/adminhtml/di.xml
index 77a925ea493703bb3e10fbb91876176d6b35257f..260504af39ff3937d957772fc6cf5c8b3fecae9f 100644
--- a/app/code/Magento/Backend/etc/adminhtml/di.xml
+++ b/app/code/Magento/Backend/etc/adminhtml/di.xml
@@ -99,4 +99,23 @@
             <argument name="sessionName" xsi:type="const">Magento\Backend\Model\Session\AdminConfig::SESSION_NAME_ADMIN</argument>
         </arguments>
     </type>
+    <type name="Magento\Framework\View\Result\PageFactory">
+        <arguments>
+            <argument name="instanceName" xsi:type="string">Magento\Backend\Model\View\Result\Page</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Framework\View\Layout\BuilderFactory">
+        <arguments>
+            <argument name="typeMap" xsi:type="array">
+                <item name="page" xsi:type="array">
+                    <item name="type" xsi:type="const">Magento\Framework\View\Layout\BuilderFactory::TYPE_PAGE</item>
+                    <item name="class" xsi:type="string">Magento\Backend\Model\View\Page\Builder</item>
+                </item>
+                <item name="layout" xsi:type="array">
+                    <item name="type" xsi:type="const">Magento\Framework\View\Layout\BuilderFactory::TYPE_LAYOUT</item>
+                    <item name="class" xsi:type="string">Magento\Backend\Model\View\Layout\Builder</item>
+                </item>
+            </argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_auth_login.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_auth_login.xml
index 3f9472326c031664edcbf004146f2916c435e335..0e2c361d2ee71e2a13417e2f7caca6166831a774 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_auth_login.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_auth_login.xml
@@ -23,14 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="empty" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="main.content">
-        <block class="Magento\Backend\Block\Template" name="content" template="admin/login.phtml">
-            <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright"/>
-            <container name="form.additional.info" label="Form Additional Info"/>
-            <container name="form.buttons" label="Form Buttons">
-                <block class="Magento\Backend\Block\Template" name="adminhtml_auth_login_buttons" template="admin/login_buttons.phtml"/>
-            </container>
-        </block>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="empty" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="main.content">
+            <block class="Magento\Backend\Block\Template" name="content" template="admin/login.phtml">
+                <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright"/>
+                <container name="form.additional.info" label="Form Additional Info"/>
+                <container name="form.buttons" label="Form Buttons">
+                    <block class="Magento\Backend\Block\Template" name="adminhtml_auth_login_buttons" template="admin/login_buttons.phtml"/>
+                </container>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_block.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_block.xml
index 9eaa8698a7bb36a2c8b1065a161847eed96de5ae..2a408b1c73480ab4439aecfb0ffbc6042667285e 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_block.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_block.xml
@@ -24,88 +24,90 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.cache.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.cache.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">cache_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Backend\Model\Cache\Resource\Grid\Collection</argument>
-                <argument name="pager_visibility" xsi:type="string">0</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.cache.massaction" as="grid.massaction">
+    <body>
+        <referenceBlock name="adminhtml.cache.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.cache.grid" as="grid">
                 <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">id</argument>
-                    <argument name="form_field_name" xsi:type="string">types</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="enable" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Enable</item>
-                            <item name="url" xsi:type="string">adminhtml/*/massEnable</item>
-                        </item>
-                        <item name="disable" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Disable</item>
-                            <item name="url" xsi:type="string">adminhtml/*/massDisable</item>
-                        </item>
-                        <item name="refresh" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Refresh</item>
-                            <item name="url" xsi:type="string">adminhtml/*/massRefresh</item>
-                            <item name="selected" xsi:type="string">1</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">cache_grid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Backend\Model\Cache\Resource\Grid\Collection</argument>
+                    <argument name="pager_visibility" xsi:type="string">0</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.cache.grid.columnSet" as="grid.columnSet">
-                <arguments>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="cache_type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Cache Type</argument>
-                        <argument name="index" xsi:type="string">cache_type</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="width" xsi:type="string">180</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="description">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Description</argument>
-                        <argument name="index" xsi:type="string">description</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="tags">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Tags</argument>
-                        <argument name="index" xsi:type="string">tags</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="width" xsi:type="string">180</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Cache\Grid\Column\Statuses" as="status">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.cache.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="index" xsi:type="string">status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="width" xsi:type="string">120</argument>
-                        <argument name="align" xsi:type="string">left</argument>
+                        <argument name="massaction_id_field" xsi:type="string">id</argument>
+                        <argument name="form_field_name" xsi:type="string">types</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
                         <argument name="options" xsi:type="array">
-                            <item name="disabled" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">Disabled</item>
+                            <item name="enable" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Enable</item>
+                                <item name="url" xsi:type="string">adminhtml/*/massEnable</item>
                             </item>
-                            <item name="enabled" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Enabled</item>
+                            <item name="disable" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Disable</item>
+                                <item name="url" xsi:type="string">adminhtml/*/massDisable</item>
+                            </item>
+                            <item name="refresh" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Refresh</item>
+                                <item name="url" xsi:type="string">adminhtml/*/massRefresh</item>
+                                <item name="selected" xsi:type="string">1</item>
                             </item>
                         </argument>
                     </arguments>
                 </block>
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.cache.grid.columnSet" as="grid.columnSet">
+                    <arguments>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
+                    </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="cache_type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Cache Type</argument>
+                            <argument name="index" xsi:type="string">cache_type</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="width" xsi:type="string">180</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="description">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Description</argument>
+                            <argument name="index" xsi:type="string">description</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="tags">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Tags</argument>
+                            <argument name="index" xsi:type="string">tags</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="width" xsi:type="string">180</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Cache\Grid\Column\Statuses" as="status">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="index" xsi:type="string">status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="width" xsi:type="string">120</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="disabled" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">Disabled</item>
+                                </item>
+                                <item name="enabled" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Enabled</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
+                </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_index.xml
index 721dfac9347c7439ac5d35ead2ed56a198fb1da3..072403869a625871a6ddd6f6b066c685afc27282 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_cache_index.xml
@@ -26,8 +26,10 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_cache_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Cache" name="adminhtml.cache.container"/>
-        <block class="Magento\Backend\Block\Cache\Additional" name="cache.additional" template="Magento_Backend::system/cache/additional.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Cache" name="adminhtml.cache.container"/>
+            <block class="Magento\Backend\Block\Cache\Additional" name="cache.additional" template="Magento_Backend::system/cache/additional.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml
index b5d1a8f6c232c365d52c941ada57c9fd997eb933..4237b69e97bd33c97b840a1463968faf7b946d5e 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml
@@ -24,18 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="store_switcher"
-               as="store_switcher"
-               template="Magento_Backend::store/switcher.phtml">
-            <action method="setUseConfirm">
-                <argument name="params" xsi:type="string">0</argument>
-            </action>
-        </block>
-    </referenceContainer>
-
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Dashboard" name="dashboard" />
-    </referenceContainer>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" as="store_switcher" template="Magento_Backend::store/switcher.phtml">
+                <action method="setUseConfirm">
+                    <argument name="params" xsi:type="string">0</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Dashboard" name="dashboard"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_denied.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_denied.xml
index 6553279dd24a0e81812ac2c11613015e85a32273..cecbcd22da325228486dd41176728a8b2df05e8b 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_denied.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_denied.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Denied" name="content.denied" template="admin/access_denied.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Denied" name="content.denied" template="admin/access_denied.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_noroute.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_noroute.xml
index d100395eaaadad5366496ee1e355b8d2952ac87b..2a9f55ee4c37138c7efd049265f12bd1441cdb43 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_noroute.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_noroute.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Text" name="content.noRoute">
-            <action method="setText">
-                <argument translate="true" name="text" xsi:type="string"><![CDATA[<h1 class="page-heading">404 Error</h1><p>Page not found.</p>]]></argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Text" name="content.noRoute">
+                <action method="setText">
+                    <argument translate="true" name="text" xsi:type="string"><![CDATA[<h1 class="page-heading">404 Error</h1><p>Page not found.</p>]]></argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_account_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_account_index.xml
index 647f7d49d75d02b0a855a700b008bd460ae5c3dc..edd298c4db373a687621587f76cbfbf6213374de 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_account_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_account_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\System\Account\Edit" name="adminhtml.system.account.edit"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\System\Account\Edit" name="adminhtml.system.account.edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_config_edit.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_config_edit.xml
index f1ef18c0001393b89d49c916724023fc2077d662..f4ab5f301b1cb34c9714985c828ced31f9ca5396 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_config_edit.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_config_edit.xml
@@ -23,28 +23,28 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" template="Magento_Backend::system/config/js.phtml"/>
-        <block class="Magento\Backend\Block\Template" template="Magento_Backend::system/shipping/applicable_country.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="adminhtml.system.config.switcher"
-               template="Magento_Backend::store/switcher.phtml">
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">0</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">Default Config</argument>
-                <argument name="show_manage_stores_link" xsi:type="string">1</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Backend\Block\System\Config\Tabs" name="adminhtml.system.config.tabs" before="-"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block name="system.config.edit" class="Magento\Backend\Block\System\Config\Edit"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" template="Magento_Backend::system/config/js.phtml"/>
+            <block class="Magento\Backend\Block\Template" template="Magento_Backend::system/shipping/applicable_country.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="adminhtml.system.config.switcher" template="Magento_Backend::store/switcher.phtml">
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">0</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">Default Config</argument>
+                    <argument name="show_manage_stores_link" xsi:type="string">1</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Backend\Block\System\Config\Tabs" name="adminhtml.system.config.tabs" before="-"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block name="system.config.edit" class="Magento\Backend\Block\System\Config\Edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_edit.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_edit.xml
index 5178a0ed969322d2514d09e7e5bc185d2d2ba027..a303c668db97703f37d00293cf7ebffcc503e331 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_edit.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_edit.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" />
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_grid_block.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_grid_block.xml
index 83a1c645e761c1a41d496b6ae2ac852bbcfaaa31..12e427814125b45eff823f255c603c27ff616957 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_grid_block.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_grid_block.xml
@@ -24,63 +24,65 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.system.design.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.design.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">designGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Design\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.design.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.system.design.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.design.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">designGrid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">adminhtml/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Design\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.design.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store</argument>
-                        <argument name="width" xsi:type="string">100px</argument>
-                        <argument name="type" xsi:type="string">store</argument>
-                        <argument name="store_view" xsi:type="string">1</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="package">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Design</argument>
-                        <argument name="width" xsi:type="string">150px</argument>
-                        <argument name="index" xsi:type="string">design</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_from">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Date From</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="width" xsi:type="string">100px</argument>
-                        <argument name="type" xsi:type="string">date</argument>
-                        <argument name="index" xsi:type="string">date_from</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_to">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Date To</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="width" xsi:type="string">100px</argument>
-                        <argument name="type" xsi:type="string">date</argument>
-                        <argument name="index" xsi:type="string">date_to</argument>
+                        <argument name="id" xsi:type="string">designGrid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">adminhtml/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store</argument>
+                            <argument name="width" xsi:type="string">100px</argument>
+                            <argument name="type" xsi:type="string">store</argument>
+                            <argument name="store_view" xsi:type="string">1</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="package">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Design</argument>
+                            <argument name="width" xsi:type="string">150px</argument>
+                            <argument name="index" xsi:type="string">design</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_from">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Date From</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="width" xsi:type="string">100px</argument>
+                            <argument name="type" xsi:type="string">date</argument>
+                            <argument name="index" xsi:type="string">date_from</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="date_to">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Date To</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="width" xsi:type="string">100px</argument>
+                            <argument name="type" xsi:type="string">date</argument>
+                            <argument name="index" xsi:type="string">date_to</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_index.xml
index d488a6b9b6fa8eebb31077aa789c089c5bc0401a..4d341a11e88ac38488d6679d3a0a5dcf3760bb42 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_design_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_system_design_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\System\Design" name="adminhtml.system.design.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\System\Design" name="adminhtml.system.design.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_grid_block.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_grid_block.xml
index 25677d50a2a15e8b191adc1c928ef3b5ef605044..c1ec0818d0f08a4ff0c5be8ee933dcf2870b66d2 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_grid_block.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_grid_block.xml
@@ -24,45 +24,47 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.system.store.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.store.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">storeGrid</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Store\Model\Resource\Website\Grid\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.store.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.system.store.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.store.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">storeGrid</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Store\Model\Resource\Website\Grid\Collection</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="website_title">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.store.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Web Site</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="filter_index" xsi:type="string">main_table.name</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Website</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="group_title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="index" xsi:type="string">group_title</argument>
-                        <argument name="filter_index" xsi:type="string">group_table.name</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Group</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="store_title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store View</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="index" xsi:type="string">store_title</argument>
-                        <argument name="filter_index" xsi:type="string">store_table.name</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Store</argument>
+                        <argument name="id" xsi:type="string">storeGrid</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="website_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Web Site</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="filter_index" xsi:type="string">main_table.name</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Website</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="group_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="index" xsi:type="string">group_title</argument>
+                            <argument name="filter_index" xsi:type="string">group_table.name</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Group</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="store_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store View</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="index" xsi:type="string">store_title</argument>
+                            <argument name="filter_index" xsi:type="string">store_table.name</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Backend\Block\System\Store\Grid\Render\Store</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_index.xml
index e742f386a7913e88f3840fcc67468570cf6008f9..93dddcae8d2598d466ba6acba6bfad4854303681 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_store_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_system_store_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\System\Store\Store" name="adminhtml.system.store.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\System\Store\Store" name="adminhtml.system.store.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_edit.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_edit.xml
index ec5df7a0bef5d3b99089283f9877bbf90e72f807..9e127b99d3e022aa5239da0bf7f3a5f9f6468e8d 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_edit.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_edit.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0"?>
-<!--
-/**
+<?xml version="1.0"?>
+<!--
+/**
  * Magento
  *
  * NOTICE OF LICENSE
@@ -17,14 +17,16 @@
  *
  * Do not edit or add to this file if you wish to upgrade Magento to newer
  * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" />
-    </referenceContainer>
-</page>
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher"/>
+        </referenceContainer>
+    </body>
+</page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_grid_block.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_grid_block.xml
index 1c6f65c7583c835061847612fbc70b93b4e78a44..4b2ffdb6e35057697fffb1a5add394e5ec169e79 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_grid_block.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_grid_block.xml
@@ -24,44 +24,46 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.system.variable.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.variable.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">customVariablesGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Variable\Collection</argument>
-                <argument name="default_sort" xsi:type="string">variable_id</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.variable.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.system.variable.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.variable.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">adminhtml/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="variable_id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">customVariablesGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Variable\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">variable_id</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="variable_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.variable.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Variable ID</argument>
-                        <argument name="index" xsi:type="string">variable_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Variable Code</argument>
-                        <argument name="index" xsi:type="string">code</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="index" xsi:type="string">name</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">adminhtml/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="variable_id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="variable_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Variable ID</argument>
+                            <argument name="index" xsi:type="string">variable_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Variable Code</argument>
+                            <argument name="index" xsi:type="string">code</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_index.xml b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_index.xml
index c0974bb0d58113b24fe0399c47668c87228aae96..1e1563be736fada195c45713c1bce20ad5e884cf 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_index.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/adminhtml_system_variable_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_system_variable_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\System\Variable" name="adminhtml.system.variable.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\System\Variable" name="adminhtml.system.variable.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/default.xml b/app/code/Magento/Backend/view/adminhtml/layout/default.xml
index 384a98560b8718d28c9761a67e0698737e4f9e1b..2916133e1079d7e49a19d618514ee630499114a6 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/default.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/default.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Magento Admin</title>
         <link src="prototype/prototype.js"/>
@@ -49,77 +49,66 @@
         <link src="Magento_Rule::rules.js"/>
     </head>
     <body>
-        <attribute name="id" value="html-body" />
-    </body>
-    <block name="require.js" class="Magento\Backend\Block\Page\RequireJs" template="Magento_Backend::page/js/require_js.phtml" />
-    <referenceContainer name="global.notices">
-        <block class="Magento\Backend\Block\Page\Notices" name="global_notices" as="global_notices" template="page/notices.phtml"/>
-    </referenceContainer>
-
-    <referenceContainer name="header">
-        <block class="Magento\Backend\Block\Page\Header" name="logo" before="-">
-            <arguments>
-                <argument name="show_part" xsi:type="string">logo</argument>
-                <argument name="edition" translate="true" xsi:type="string">Community Edition</argument>
-            </arguments>
-        </block>
-        <block class="Magento\Backend\Block\GlobalSearch" as="search" after="logo" acl="Magento_Adminhtml::global_search"/>
-        <block class="Magento\Backend\Block\Page\Header" name="user" after="-">
-            <arguments>
-                <argument name="show_part" xsi:type="string">user</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-
-    <referenceContainer name="page.menu">
-        <block class="Magento\Backend\Block\Menu" name="menu" as="menu" template="Magento_Backend::menu.phtml"/>
-    </referenceContainer>
-
-    <referenceContainer name="page.breadcrumbs">
-        <block class="Magento\Backend\Block\Widget\Breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
-    </referenceContainer>
-
-    <referenceContainer name="page.formkey">
-        <block class="Magento\Backend\Block\Admin\Formkey" name="formkey" as="formkey" template="Magento_Backend::admin/formkey.phtml"/>
-    </referenceContainer>
-
-    <referenceContainer name="page.js.translate">
-        <block class="Magento\Framework\View\Element\Template" name="js_translate" as="js_translate" template="Magento_Backend::page/js/translate.phtml"/>
-    </referenceContainer>
-
-    <referenceContainer name="main.top">
-        <block class="Magento\Theme\Block\Html\Title" name="page-title" template="title.phtml"/>
-    </referenceContainer>
-
-    <referenceContainer name="page.messages">
-        <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
-    </referenceContainer>
-
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Framework\View\Element\Template" name="page.actions.toolbar" template="Magento_Backend::pageactions.phtml" after="-"/>
-    </referenceContainer>
-
-    <referenceContainer name="footer">
-        <block class="Magento\Backend\Block\Page\Locale" name="locale.switcher" template="Magento_Backend::page/locale.phtml"/>
-        <container name="legal" htmlTag="div" htmlClass="footer-legal">
-            <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright"/>
-            <block class="Magento\Backend\Block\Page\Footer" name="version" as="version">
+        <attribute name="id" value="html-body"/>
+        <block name="require.js" class="Magento\Backend\Block\Page\RequireJs" template="Magento_Backend::page/js/require_js.phtml"/>
+        <referenceContainer name="global.notices">
+            <block class="Magento\Backend\Block\Page\Notices" name="global_notices" as="global_notices" template="page/notices.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="header">
+            <block class="Magento\Backend\Block\Page\Header" name="logo" before="-">
                 <arguments>
-                    <argument name="bugreport_url" xsi:type="string">http://www.magentocommerce.com/bug-tracking</argument>
+                    <argument name="show_part" xsi:type="string">logo</argument>
+                    <argument name="edition" translate="true" xsi:type="string">Community Edition</argument>
                 </arguments>
             </block>
-        </container>
-    </referenceContainer>
-
-    <referenceContainer name="backend.page">
-        <block class="Magento\Framework\View\Element\Template" name="page.loader" template="Magento_Backend::admin/loader.phtml" after="-"/>
-    </referenceContainer>
-
-    <referenceContainer name="after.body.start">
-        <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/>
-        <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/>
-        <block class="Magento\Framework\View\Element\Template" name="head.scripts" template="Magento_Backend::page/js/head_scripts.phtml"/>
-        <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Backend::page/js/components.phtml"/>
-        <block class="Magento\Framework\View\Element\Html\Calendar" name="head.calendar" as="calendar" template="Magento_Backend::page/js/calendar.phtml"/>
-    </referenceContainer>
+            <block class="Magento\Backend\Block\GlobalSearch" as="search" after="logo" acl="Magento_Adminhtml::global_search"/>
+            <block class="Magento\Backend\Block\Page\Header" name="user" after="-">
+                <arguments>
+                    <argument name="show_part" xsi:type="string">user</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="page.menu">
+            <block class="Magento\Backend\Block\Menu" name="menu" as="menu" template="Magento_Backend::menu.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="page.breadcrumbs">
+            <block class="Magento\Backend\Block\Widget\Breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
+        </referenceContainer>
+        <referenceContainer name="page.formkey">
+            <block class="Magento\Backend\Block\Admin\Formkey" name="formkey" as="formkey" template="Magento_Backend::admin/formkey.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="page.js.translate">
+            <block class="Magento\Framework\View\Element\Template" name="js_translate" as="js_translate" template="Magento_Backend::page/js/translate.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="main.top">
+            <block class="Magento\Theme\Block\Html\Title" name="page-title" template="title.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="page.messages">
+            <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
+        </referenceContainer>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Framework\View\Element\Template" name="page.actions.toolbar" template="Magento_Backend::pageactions.phtml" after="-"/>
+        </referenceContainer>
+        <referenceContainer name="footer">
+            <block class="Magento\Backend\Block\Page\Locale" name="locale.switcher" template="Magento_Backend::page/locale.phtml"/>
+            <container name="legal" htmlTag="div" htmlClass="footer-legal">
+                <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright"/>
+                <block class="Magento\Backend\Block\Page\Footer" name="version" as="version">
+                    <arguments>
+                        <argument name="bugreport_url" xsi:type="string">http://www.magentocommerce.com/bug-tracking</argument>
+                    </arguments>
+                </block>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="backend.page">
+            <block class="Magento\Framework\View\Element\Template" name="page.loader" template="Magento_Backend::admin/loader.phtml" after="-"/>
+        </referenceContainer>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/>
+            <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/>
+            <block class="Magento\Framework\View\Element\Template" name="head.scripts" template="Magento_Backend::page/js/head_scripts.phtml"/>
+            <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Backend::page/js/components.phtml"/>
+            <block class="Magento\Framework\View\Element\Html\Calendar" name="head.calendar" as="calendar" template="Magento_Backend::page/js/calendar.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/editor.xml b/app/code/Magento/Backend/view/adminhtml/layout/editor.xml
index 88db1184bae2dc46c7c1b596548cb32f2dc0a6e0..39dd2a895b9b595c7cb6960903ca5553a97549a6 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/editor.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/editor.xml
@@ -29,4 +29,5 @@
         <css src="prototype/windows/themes/default.css"/>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
+    <body/>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/empty.xml b/app/code/Magento/Backend/view/adminhtml/layout/empty.xml
index 26a37c355cf5104b43512b95828981d82d17808f..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/empty.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/empty.xml
@@ -23,5 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/formkey.xml b/app/code/Magento/Backend/view/adminhtml/layout/formkey.xml
index 66ffc279f9b789ccdf1991cab6f3ddb181b2cd3a..1f5e0dadc5299009a1b4db713dd0e720a829b40e 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/formkey.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/formkey.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Backend\Block\Admin\Formkey" name="formkey" as="formkey" template="Magento_Backend::admin/formkey.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Admin\Formkey" name="formkey" as="formkey" template="Magento_Backend::admin/formkey.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/overlay_popup.xml b/app/code/Magento/Backend/view/adminhtml/layout/overlay_popup.xml
index 75dfecb85aae1615bacb9ce9a28984fc7c9470d5..ce714e9e8af16766e724275574dc3f75f607a044 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/overlay_popup.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/overlay_popup.xml
@@ -25,9 +25,11 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="popup"/>
-    <referenceBlock name="backend.page">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">admin/overlay_popup.phtml</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="backend.page">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">admin/overlay_popup.phtml</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backend/view/adminhtml/layout/popup.xml b/app/code/Magento/Backend/view/adminhtml/layout/popup.xml
index 9247f50f0d58c0dc6ca4b1f8392353bc6f162db3..4a895da3a8f7a4b8c17a8b9589ae06ff491faef9 100644
--- a/app/code/Magento/Backend/view/adminhtml/layout/popup.xml
+++ b/app/code/Magento/Backend/view/adminhtml/layout/popup.xml
@@ -24,6 +24,8 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="header"/>
-    <remove name="menu"/>
+    <body>
+        <remove name="header"/>
+        <remove name="menu"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json
index 8f5754f8e07bbf5befe093d8cb05281770022405..f134ec476bc469409e22b180cf5c9300e658af7b 100644
--- a/app/code/Magento/Backup/composer.json
+++ b/app/code/Magento/Backup/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Backup/view/adminhtml/layout/backup_index_block.xml b/app/code/Magento/Backup/view/adminhtml/layout/backup_index_block.xml
index 75ce88120e747bde996b8da4c881aa0990988fcc..d25918f13b0b3453da1f935124c9b6f93003cc96 100644
--- a/app/code/Magento/Backup/view/adminhtml/layout/backup_index_block.xml
+++ b/app/code/Magento/Backup/view/adminhtml/layout/backup_index_block.xml
@@ -24,95 +24,97 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.system.backup.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.backup.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">backupsGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Backup\Model\Fs\Collection</argument>
-                <argument name="default_sort" xsi:type="string">time</argument>
-                <argument name="default_dir" xsi:type="string">desc</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.system.backup.grid.massaction" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">id</argument>
-                    <argument name="form_field_name" xsi:type="string">ids</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="delete" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Delete</item>
-                            <item name="url" xsi:type="string">backup/*/massDelete</item>
-                            <item name="confirm" xsi:type="string" translate="true">Are you sure you want to delete the selected backup(s)?</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.system.backup.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.backup.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">backupsGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Backup\Model\Fs\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">time</argument>
+                    <argument name="default_dir" xsi:type="string">desc</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="time">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Time</argument>
-                        <argument name="index" xsi:type="string">date_object</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="display_name">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.system.backup.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="index" xsi:type="string">display_name</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="size">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Size(bytes)</argument>
-                        <argument name="index" xsi:type="string">size</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Type</argument>
-                        <argument name="index" xsi:type="string">type</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backup\Model\Grid\Options"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="download">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Download</argument>
-                        <argument name="index" xsi:type="string">type</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Backup\Block\Adminhtml\Grid\Column\Renderer\Download</argument>
+                        <argument name="massaction_id_field" xsi:type="string">id</argument>
+                        <argument name="form_field_name" xsi:type="string">ids</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="delete" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Delete</item>
+                                <item name="url" xsi:type="string">backup/*/massDelete</item>
+                                <item name="confirm" xsi:type="string" translate="true">Are you sure you want to delete the selected backup(s)?</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backup\Block\Adminhtml\Grid\Column\Rollback" as="action">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="index" xsi:type="string">type</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="rollback_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">Rollback</item>
-                                <item name="href" xsi:type="string">#</item>
-                                <item name="onclick" xsi:type="string">return backup.rollback('$type', '$time')</item>
-                            </item>
-                        </argument>
+                        <argument name="id" xsi:type="string">backupsGrid</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="time">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Time</argument>
+                            <argument name="index" xsi:type="string">date_object</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="display_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="index" xsi:type="string">display_name</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="size">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Size(bytes)</argument>
+                            <argument name="index" xsi:type="string">size</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Type</argument>
+                            <argument name="index" xsi:type="string">type</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backup\Model\Grid\Options"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="download">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Download</argument>
+                            <argument name="index" xsi:type="string">type</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Backup\Block\Adminhtml\Grid\Column\Renderer\Download</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backup\Block\Adminhtml\Grid\Column\Rollback" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="index" xsi:type="string">type</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="rollback_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">Rollback</item>
+                                    <item name="href" xsi:type="string">#</item>
+                                    <item name="onclick" xsi:type="string">return backup.rollback('$type', '$time')</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Backup/view/adminhtml/layout/backup_index_index.xml b/app/code/Magento/Backup/view/adminhtml/layout/backup_index_index.xml
index 3e66d54fab02e83d74d912032a8b6d5c5d7a7288..79c14b594e431dc92e0a8feb7b0b4c05cac1935e 100644
--- a/app/code/Magento/Backup/view/adminhtml/layout/backup_index_index.xml
+++ b/app/code/Magento/Backup/view/adminhtml/layout/backup_index_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="backup_index_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backup\Block\Adminhtml\Backup" name="adminhtml.system.backup.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backup\Block\Adminhtml\Backup" name="adminhtml.system.backup.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json
index d0e94cec88da3d85be1da591f43c0fde95b2e456..99a9eadd3bb553afd21e79d277537f5ab9dbac71 100644
--- a/app/code/Magento/Bundle/composer.json
+++ b/app/code/Magento/Bundle/composer.json
@@ -3,24 +3,24 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-catalog-rule": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-gift-message": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-webapi": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-catalog-rule": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-gift-message": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-webapi": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_new.xml b/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_new.xml
index e13942eeac5e07fcd50e0e204dc966956f95c32f..b62dbfcc87e63f4aaac0d6040c86d5855b4c57d7 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_new.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/shipment/create/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/shipment/create/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_view.xml b/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_view.xml
index 368eaa906126863ac3ad6e966b98d07b5962235c..7c2c30a21d073ab32692f8d696372e8ee38b1a76 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_view.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/adminhtml_order_shipment_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="shipment_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/shipment/view/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="shipment_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/shipment/view/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_bundle.xml b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_bundle.xml
index 5a0e35e659420e418713c681d23fbcba09adafd5..4fa8918b6f1a000b9c931b98b3409e1de1502e71 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_bundle.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_bundle.xml
@@ -27,10 +27,12 @@
     <head>
         <css src="Magento_Bundle::css/bundle-product.css"/>
     </head>
-    <referenceBlock name="product_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">bundle</argument>
-            <argument name="block" xsi:type="string">Magento\Bundle\Block\Adminhtml\Catalog\Product\Edit\Tab\Bundle</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">bundle</argument>
+                <argument name="block" xsi:type="string">Magento\Bundle\Block\Adminhtml\Catalog\Product\Edit\Tab\Bundle</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_new.xml
index 20d9502c432a1ac3fd6a9927378ea134970da76a..aa79ebcb911ea5a604b3cf90363d2c856f67d819 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\Framework\View\Element\Template" template="Magento_Bundle::product/stock/disabler.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\Framework\View\Element\Template" template="Magento_Bundle::product/stock/disabler.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_view_type_bundle.xml b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_view_type_bundle.xml
index 9d52b379852d97141a7fdb4a67821eb6a1a1ffa7..76f4376887385132cf742045eef0174f332908a5 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_view_type_bundle.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/catalog_product_view_type_bundle.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.composite.fieldset">
-        <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Bundle" before="product.composite.fieldset.options" name="product.composite.fieldset.bundle" template="product/composite/fieldset/options/bundle.phtml">
-            <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Select" name="product.info.bundle.options.select" as="select"/>
-            <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Multi" name="product.info.bundle.options.multi" as="multi"/>
-            <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Radio" name="product.info.bundle.options.radio" as="radio"/>
-            <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.composite.fieldset">
+            <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Bundle" before="product.composite.fieldset.options" name="product.composite.fieldset.bundle" template="product/composite/fieldset/options/bundle.phtml">
+                <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Select" name="product.info.bundle.options.select" as="select"/>
+                <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Multi" name="product.info.bundle.options.multi" as="multi"/>
+                <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Radio" name="product.info.bundle.options.radio" as="radio"/>
+                <block class="Magento\Bundle\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Options\Type\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/customer_index_wishlist.xml b/app/code/Magento/Bundle/view/adminhtml/layout/customer_index_wishlist.xml
index b7feb584e76b1b7a26185578a7013e9e72b0ed05..019d77d9521f25131ae33e2c795c9852e77b6c84 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/customer_index_wishlist.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/customer_index_wishlist.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer.wishlist.edit.tab">
-        <arguments>
-            <argument name="product_configuration_helpers" xsi:type="array">
-                <item name="bundle" xsi:type="string">Magento\Bundle\Helper\Catalog\Product\Configuration</item>
-            </argument>
-        </arguments>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer.wishlist.edit.tab">
+            <arguments>
+                <argument name="product_configuration_helpers" xsi:type="array">
+                    <item name="bundle" xsi:type="string">Magento\Bundle\Helper\Catalog\Product\Configuration</item>
+                </argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_new.xml
index 744574b9303c8efdcd8092f36683dce8ea463ea7..c68bdc91903e6a7e3bf9fe2abe23eebb85b01138 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_new.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/create/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/create/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
index 744574b9303c8efdcd8092f36683dce8ea463ea7..c68bdc91903e6a7e3bf9fe2abe23eebb85b01138 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/create/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/create/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_view.xml
index ea161eb768a2ab7548a61876333cf268f9684c80..e344fef4a59eb505521e9b8d23266a7a75716b44 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_view.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_creditmemo_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/view/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/creditmemo/view/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_new.xml
index 707953eda0d6ed4d8c3a891e2096725c5f6da441..1af91200f17928f3d82e39cfec76d1db321e0ce7 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/create/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/create/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_updateqty.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_updateqty.xml
index 707953eda0d6ed4d8c3a891e2096725c5f6da441..1af91200f17928f3d82e39cfec76d1db321e0ce7 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_updateqty.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/create/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/create/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_view.xml
index 00acf1b136a1fb09cb760286d82d21dcf5d77e76..6967e37de79203baba4dfc843e3dde0089ea9974 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_view.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_invoice_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/view/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer" as="bundle" template="sales/invoice/view/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_view.xml
index df0273413e313a0fbbc1a6a506de655287e8aabc..5c9bb8cfbf8c9d25beae50fad0a5d5de9b38b4e7 100644
--- a/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/Bundle/view/adminhtml/layout/sales_order_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\View\Items\Renderer" as="bundle" template="sales/order/view/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Bundle\Block\Adminhtml\Sales\Order\View\Items\Renderer" as="bundle" template="sales/order/view/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/base/layout/catalog_product_prices.xml b/app/code/Magento/Bundle/view/base/layout/catalog_product_prices.xml
index 17e6d8e1c1df56a9fa5719de8274c7b4257bec6b..134b7b3dd8b41ada2d828053df622e5e3f3d0618 100644
--- a/app/code/Magento/Bundle/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/Bundle/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <referenceBlock name="render.product.prices">
         <arguments>
             <argument name="bundle" xsi:type="array">
@@ -42,4 +42,4 @@
             </argument>
         </arguments>
     </referenceBlock>
-</page>
+</layout>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_bundle.xml b/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_bundle.xml
index 2ea0c9e26c582e420c9affa6ea04b93726d46a8b..5704e1868b85d6699939ccc79ebca381d0761246 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_bundle.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_bundle.xml
@@ -26,56 +26,56 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-bundle"/>
-    </body>
-    <referenceBlock name="product.info">
-        <block class="Magento\Catalog\Block\Product\View" name="bundle.summary" as="form_top" template="Magento_Bundle::catalog/product/view/summary.phtml">
-            <block class="Magento\Catalog\Pricing\Render" name="product.price.render.bundle.customization">
-                <arguments>
-                    <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                    <argument name="price_type_code" xsi:type="string">configured_price</argument>
-                    <argument name="zone" xsi:type="string">item_view</argument>
-                </arguments>
+        <referenceBlock name="product.info">
+            <block class="Magento\Catalog\Block\Product\View" name="bundle.summary" as="form_top" template="Magento_Bundle::catalog/product/view/summary.phtml">
+                <block class="Magento\Catalog\Pricing\Render" name="product.price.render.bundle.customization">
+                    <arguments>
+                        <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                        <argument name="price_type_code" xsi:type="string">configured_price</argument>
+                        <argument name="zone" xsi:type="string">item_view</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.bundle" as="addtocart" template="product/view/addtocart.phtml">
+                    <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons"/>
+                </block>
+                <block class="Magento\Catalog\Block\Product\View" name="product.info.addto.bundle" as="addto" template="product/view/addto.phtml"/>
             </block>
-            <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.bundle" as="addtocart" template="product/view/addtocart.phtml">
-                <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons"/>
+        </referenceBlock>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\Catalog\Block\Product\View" name="bundle.product.view.options.notice" template="Magento_Bundle::catalog/product/view/options/notice.phtml"/>
+            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle.options" as="type_bundle_options" template="catalog/product/view/type/bundle/options.phtml" before="-">
+                <container name="product.info.bundle.options.top" as="product_info_bundle_options_top">
+                    <block class="Magento\Catalog\Block\Product\View" name="bundle.back.button" as="backButton" before="-" template="Magento_Bundle::catalog/product/view/backbutton.phtml"/>
+                </container>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Select" name="product.info.bundle.options.select" as="select"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Multi" name="product.info.bundle.options.multi" as="multi"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Radio" name="product.info.bundle.options.radio" as="radio"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
             </block>
-            <block class="Magento\Catalog\Block\Product\View" name="product.info.addto.bundle" as="addto" template="product/view/addto.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\Catalog\Block\Product\View" name="bundle.product.view.options.notice" template="Magento_Bundle::catalog/product/view/options/notice.phtml"/>
-        <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle.options" as="type_bundle_options" template="catalog/product/view/type/bundle/options.phtml" before="-">
-            <container name="product.info.bundle.options.top" as="product_info_bundle_options_top">
-                <block class="Magento\Catalog\Block\Product\View" name="bundle.back.button" as="backButton" before="-" template="Magento_Bundle::catalog/product/view/backbutton.phtml"/>
-            </container>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Select" name="product.info.bundle.options.select" as="select"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Multi" name="product.info.bundle.options.multi" as="multi"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Radio" name="product.info.bundle.options.radio" as="radio"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
-        </block>
-    </referenceBlock>
-    <move element="product.price.tier" destination="product.info.options.wrapper.bottom" before="-" />
-    <referenceBlock name="product.info.options.wrapper.bottom">
-        <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.qtyincrements" before="-" template="qtyincrements.phtml"/>
-        <action method="unsetChild">
-            <argument name="block" xsi:type="string">product.info.addtocart</argument>
-        </action>
-        <action method="setHideRequiredNotice">
-            <argument name="flag" xsi:type="string">1</argument>
-        </action>
-        <action method="unsetChild">
-            <argument name="block" xsi:type="string">product.info.addto</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+        </referenceBlock>
+        <move element="product.price.tier" destination="product.info.options.wrapper.bottom" before="-" />
+        <referenceBlock name="product.info.options.wrapper.bottom">
+            <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.qtyincrements" before="-" template="qtyincrements.phtml"/>
+            <action method="unsetChild">
+                <argument name="block" xsi:type="string">product.info.addtocart</argument>
+            </action>
+            <action method="setHideRequiredNotice">
+                <argument name="flag" xsi:type="string">1</argument>
+            </action>
+            <action method="unsetChild">
+                <argument name="block" xsi:type="string">product.info.addto</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
+            <container name="product.info.bundle.extra" after="product.info.bundle" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.main">
+            <block class="Magento\Catalog\Block\Product\View" name="customize.button" as="customize_button" template="Magento_Bundle::catalog/product/view/customize.phtml" after="product.info.price" />
+        </referenceContainer>
         <move element="product.info" destination="bundle.options.container" before="-"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
-        <container name="product.info.bundle.extra" after="product.info.bundle" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.main">
-        <block class="Magento\Catalog\Block\Product\View" name="customize.button" as="customize_button" template="Magento_Bundle::catalog/product/view/customize.phtml" after="product.info.price" />
-    </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_simple.xml b/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_simple.xml
index c45d3a1bfe66d97f2fb2fc154a154b69ea3c157f..021d779958d7ef8a448afabf50681a16d4a08d9f 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_simple.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/catalog_product_view_type_simple.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.info.upsell">
-        <action method="setItemLimit">
-            <argument name="type" xsi:type="string">bundle</argument>
-            <argument name="limit" xsi:type="string">4</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.info.upsell">
+            <action method="setItemLimit">
+                <argument name="type" xsi:type="string">bundle</argument>
+                <argument name="limit" xsi:type="string">4</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_configure_type_bundle.xml b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_configure_type_bundle.xml
index c14c78e1631ffdde1d86ca02306d048995813b7e..c46d35b59e619d3bc7490bad0071d428aaf954e2 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_configure_type_bundle.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_configure_type_bundle.xml
@@ -25,12 +25,14 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view_type_bundle"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="bundle_cart_configure_head_components" template="Magento_Checkout::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="product.info.addtocart.bundle">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="bundle_cart_configure_head_components" template="Magento_Checkout::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="product.info.addtocart.bundle">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
index 852baa81048482d11083d160e9c9ee8fb41e9496..a1486e829871fe40107cd56599778d67d5b632d0 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/item/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/item/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
index e5fd17e9a08536b0ceef3428d827a04435a5d461..0481482c8b76dd6b71b40d62c44e6e0e9fec785a 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.sidebar.item.renderers">
-        <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/sidebar/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.sidebar.item.renderers">
+            <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/sidebar/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/checkout_onepage_review_item_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/checkout_onepage_review_item_renderers.xml
index e1f9c6408d04382b66ec15728d9a252709ecc63e..4550460345236bdeb42191f0ec655123b8ae52d6 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/checkout_onepage_review_item_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/checkout_onepage_review_item_renderers.xml
@@ -24,6 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.onepage.review.item.renderers">
-        <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::onepage/review/item.phtml"/>    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.onepage.review.item.renderers">
+            <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::onepage/review/item.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/default.xml b/app/code/Magento/Bundle/view/frontend/layout/default.xml
index bbf146b0a16636b4fe5d23245cf4151fff97ca13..a9b7e44ac6c37dfffb726767e6c7e67b86c8f09a 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/default.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/default.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="bundle_checkout_page_head_components" template="Magento_Bundle::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="bundle_checkout_page_head_components" template="Magento_Bundle::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_creditmemo_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
index c9ca45b4870bb8a0c40873ebea00149a06c88ef3..0cbc413d7e1463d071d4bd8509d648c9d54a5846 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.creditmemo.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/creditmemo/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.creditmemo.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/creditmemo/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_invoice_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_invoice_renderers.xml
index 562d098a428448b3b5330bc7dca26f785c17e070..9da404a95fb4114c2bb2d4a962283cd9c08b9c0a 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_invoice_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.invoice.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/invoice/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.invoice.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/invoice/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_renderers.xml
index 9b24e58d13359e8bbafc91437892fd69a1391d84..4bcd613ba07e6c04775a39fd5afad9f90cda4b6d 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/order/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/order/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_shipment_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_shipment_renderers.xml
index a74b7956a15925f8691638061d7ffd0e079a7410..5a0878992330aae765ed4991e8404645f0c47fa1 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_shipment_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_email_order_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.shipment.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/shipment/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.shipment.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="email/order/items/shipment/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_creditmemo_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_creditmemo_renderers.xml
index 9e77fa0f6cd61430efe56ae5c039ab28d8ef798d..bf6be5d7d4bcb4e33a15336224037bba518c3b56 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.creditmemo.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/creditmemo/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.creditmemo.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/creditmemo/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_invoice_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_invoice_renderers.xml
index 9a62079c5d07e34d746e09c8427faf27f978111b..9163b227634e58530fd656c3cf25dc3934ca6eb5 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_invoice_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.invoice.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/invoice/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.invoice.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/invoice/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_item_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_item_renderers.xml
index d40576349c4213a244aa2691a267aaffe97ba3ca..d5bab5ada9b21736934446fd8ab73776f23b9852 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_item_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.items.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.items.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_creditmemo_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
index 323809695701c4ee3614c75165cbd703155fc462..b6838d681479050cff3b3826ce1dbcec35ecc098 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.creditmemo.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/creditmemo/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.creditmemo.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/creditmemo/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_invoice_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_invoice_renderers.xml
index 70aa2dd64a50ab88a25e5a0810da520e80bf030f..187082d9edb5398e31f28ffab2dfd8e827683d9e 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_invoice_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.invoice.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/invoice/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.invoice.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/invoice/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_renderers.xml
index cd50ebb403de88ba68f8c65bf0366132309ca92b..947d7ec971df9fce06c8abd9bfef23e03742c0e0 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_shipment_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_shipment_renderers.xml
index 6176e3417d4bb197db27abe74bb580c46ad557c2..b32fb83ff02107bdbbaaa28815483fda9f48f148 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_shipment_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_print_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.shipment.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/shipment/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.shipment.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/shipment/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/layout/sales_order_shipment_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/sales_order_shipment_renderers.xml
index fcf55a14d640e443538fa71ad8a83e28ce9ed430..09090d43ba3569364b232becf599c1e5be5358c8 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/sales_order_shipment_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/sales_order_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.shipment.renderers">
-        <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/shipment/items/renderer.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.shipment.renderers">
+            <block class="Magento\Bundle\Block\Sales\Order\Items\Renderer" as="bundle" template="sales/order/shipment/items/renderer.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Bundle/view/frontend/templates/sales/order/creditmemo/items/renderer.phtml b/app/code/Magento/Bundle/view/frontend/templates/sales/order/creditmemo/items/renderer.phtml
index 528866f9e92494acdb2b0fdab75625397a05ec72..0ca71cbb3b0494feaa9f39dd0874aab034c90d47 100644
--- a/app/code/Magento/Bundle/view/frontend/templates/sales/order/creditmemo/items/renderer.phtml
+++ b/app/code/Magento/Bundle/view/frontend/templates/sales/order/creditmemo/items/renderer.phtml
@@ -49,7 +49,7 @@
             <?php $_prevOptionId = $attributes['option_id'] ?>
         <?php endif; ?>
     <?php endif; ?>
-<tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getOrderItem()->getParentItem()): ?>item-options<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
+<tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getOrderItem()->getParentItem()): ?>item-options-container<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
     <?php if (!$_item->getOrderItem()->getParentItem()): ?>
         <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
             <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
@@ -96,11 +96,11 @@
 </tr>
 <?php endforeach; ?>
 
-<?php if ($_showlastRow): ?>
+<?php if ($_showlastRow && (($_options = $this->getItemOptions()) || $this->escapeHtml($_item->getDescription()))): ?>
     <tr>
         <td class="col options" colspan="7">
             <?php if($_options = $this->getItemOptions()): ?>
-                <dl class="item options">
+                <dl class="item-options">
                     <?php foreach ($_options as $_option) : ?>
                         <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                         <?php if (!$this->getPrintStatus()): ?>
@@ -123,15 +123,6 @@
                 </dl>
             <?php endif; ?>
             <?php echo $this->escapeHtml($_item->getDescription()) ?>
-            <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $parentItem) && $parentItem->getGiftMessageId()): ?>
-                <a href="#"
-                   id="order-item-gift-message-link-<?php echo $parentItem->getId() ?>"
-                   class="action show"
-                   aria-controls="order-item-gift-message-<?php echo $parentItem->getId()?>"
-                   data-item-id="<?php echo $parentItem->getId() ?>">
-                    <?php echo __('Gift Message') ?>
-                </a>
-            <?php endif; ?>
         </td>
     </tr>
 <?php endif; ?>
diff --git a/app/code/Magento/Bundle/view/frontend/templates/sales/order/invoice/items/renderer.phtml b/app/code/Magento/Bundle/view/frontend/templates/sales/order/invoice/items/renderer.phtml
index 8ce1ef4cb7c7f1ba1c20a9b9a609e006bee917d5..8ce7230ed9fc8d8913a979c09026ea02d4b7503b 100644
--- a/app/code/Magento/Bundle/view/frontend/templates/sales/order/invoice/items/renderer.phtml
+++ b/app/code/Magento/Bundle/view/frontend/templates/sales/order/invoice/items/renderer.phtml
@@ -48,7 +48,7 @@
             <?php $_prevOptionId = $attributes['option_id'] ?>
         <?php endif; ?>
     <?php endif; ?>
-    <tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getOrderItem()->getParentItem()): ?>item-options<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getOrderItem()->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
+    <tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getOrderItem()->getParentItem()): ?>item-options-container<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getOrderItem()->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
     <?php if (!$_item->getOrderItem()->getParentItem()): ?>
         <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
             <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
@@ -81,11 +81,11 @@
     </tr>
 <?php endforeach; ?>
 
-<?php if ($_showlastRow): ?>
+<?php if ($_showlastRow && (($_options = $this->getItemOptions()) || $this->escapeHtml($_item->getDescription()))): ?>
     <tr>
         <td class="col options" colspan="5">
             <?php if($_options = $this->getItemOptions()): ?>
-                <dl class="item options">
+                <dl class="item-options">
                     <?php foreach ($_options as $_option) : ?>
                         <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                         <?php if (!$this->getPrintStatus()): ?>
@@ -108,15 +108,6 @@
                 </dl>
             <?php endif; ?>
             <?php echo $this->escapeHtml($_item->getDescription()) ?>
-            <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $parentItem) && $parentItem->getGiftMessageId()): ?>
-                <a href="#"
-                   id="order-item-gift-message-link-<?php echo $parentItem->getId() ?>"
-                   class="action show"
-                   aria-controls="order-item-gift-message-<?php echo $parentItem->getId()?>"
-                   data-item-id="<?php echo $parentItem->getId() ?>">
-                    <?php echo __('Gift Message') ?>
-                </a>
-            <?php endif; ?>
         </td>
     </tr>
 <?php endif; ?>
diff --git a/app/code/Magento/Bundle/view/frontend/templates/sales/order/items/renderer.phtml b/app/code/Magento/Bundle/view/frontend/templates/sales/order/items/renderer.phtml
index 2ad9953d90dadcd4d2c25c72184c8ed6ac21767b..3bc90b5d7008a696f2b14e36d00728874fe0c139 100644
--- a/app/code/Magento/Bundle/view/frontend/templates/sales/order/items/renderer.phtml
+++ b/app/code/Magento/Bundle/view/frontend/templates/sales/order/items/renderer.phtml
@@ -48,7 +48,7 @@
             <?php $_prevOptionId = $attributes['option_id'] ?>
         <?php endif; ?>
     <?php endif; ?>
-<tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getParentItem()): ?>item-options<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
+<tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getParentItem()): ?>item-options-container<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
     <?php if (!$_item->getParentItem()): ?>
         <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
             <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
@@ -119,11 +119,12 @@
     </td>
 </tr>
 <?php endforeach; ?>
-<?php if ($_showlastRow): ?>
+
+<?php if ($_showlastRow && (($_options = $this->getItemOptions()) || $this->escapeHtml($_item->getDescription()))): ?>
 <tr>
-    <td class="col options" colspan="5" >
+    <td class="col options" colspan="5">
         <?php if($_options = $this->getItemOptions()): ?>
-            <dl class="item options">
+            <dl class="item-options">
                 <?php foreach ($_options as $_option) : ?>
                     <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                     <?php if (!$this->getPrintStatus()): ?>
@@ -146,15 +147,6 @@
             </dl>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $parentItem) && $parentItem->getGiftMessageId()): ?>
-            <a href="#"
-               id="order-item-gift-message-link-<?php echo $parentItem->getId() ?>"
-               class="action show"
-               aria-controls="order-item-gift-message-<?php echo $parentItem->getId()?>"
-               data-item-id="<?php echo $parentItem->getId()?>">
-                <?php echo __('Gift Message') ?>
-            </a>
-        <?php endif; ?>
     </td>
 </tr>
 <?php endif; ?>
diff --git a/app/code/Magento/Bundle/view/frontend/templates/sales/order/shipment/items/renderer.phtml b/app/code/Magento/Bundle/view/frontend/templates/sales/order/shipment/items/renderer.phtml
index 5e3fc45b43d7ebe0278b7cb73b5563c9763dc4c2..e1210e5a4f2f2bb969d43ac773470e057f5beba6 100644
--- a/app/code/Magento/Bundle/view/frontend/templates/sales/order/shipment/items/renderer.phtml
+++ b/app/code/Magento/Bundle/view/frontend/templates/sales/order/shipment/items/renderer.phtml
@@ -47,7 +47,7 @@
             <?php $_prevOptionId = $attributes['option_id'] ?>
         <?php endif; ?>
     <?php endif; ?>
-    <tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getParentItem()): ?>item-options<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
+    <tr id="order-item-row-<?php echo $_item->getId() ?>" class="<?php if ($_item->getParentItem()): ?>item-options-container<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?php echo $attributes['option_label'] ?>"<?php endif; ?>>
         <?php if (!$_item->getParentItem()): ?>
             <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
                 <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
@@ -72,11 +72,11 @@
     </tr>
 <?php endforeach; ?>
 
-<?php if ($_showlastRow): ?>
+<?php if ($_showlastRow && (($_options = $this->getItemOptions()) || $this->escapeHtml($_item->getDescription()))): ?>
     <tr>
         <td class="col options" colspan="3">
             <?php if($_options = $this->getItemOptions()): ?>
-                <dl class="item options">
+                <dl class="item-options">
                     <?php foreach ($_options as $_option) : ?>
                         <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                         <?php if (!$this->getPrintStatus()): ?>
@@ -99,15 +99,6 @@
                 </dl>
             <?php endif; ?>
             <?php echo $this->escapeHtml($_item->getDescription()) ?>
-            <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $parentItem) && $parentItem->getGiftMessageId()): ?>
-                <a href="#"
-                   id="order-item-gift-message-link-<?php echo $parentItem->getId() ?>"
-                   class="action show"
-                   aria-controls="order-item-gift-message-<?php echo $parentItem->getId()?>"
-                   data-item-id="<?php echo $parentItem->getId() ?>">
-                    <?php echo __('Gift Message') ?>
-                </a>
-            <?php endif; ?>
         </td>
     </tr>
 <?php endif; ?>
diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json
index e31b4b16776c3c59268415b1fc44ccb903d11254..0185b91bd91072b3fbbd533c8f24cf5826e84bbe 100644
--- a/app/code/Magento/Captcha/composer.json
+++ b/app/code/Magento/Captcha/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_forgotpassword.xml b/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_forgotpassword.xml
index 995142f9691f8cfc33a2267bd26d9c78ac897058..ce84bd4e4dbc3883088862c22e101f4a8b1f1a53 100644
--- a/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_forgotpassword.xml
+++ b/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_forgotpassword.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">backend_forgotpassword</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">226</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">backend_forgotpassword</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">226</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_login.xml b/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_login.xml
index fccbd63f7ad176dc7c1065324aaa24f0e4891e07..7b43146151ab35d583410a789b6e2759abd516c1 100644
--- a/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_login.xml
+++ b/app/code/Magento/Captcha/view/adminhtml/layout/adminhtml_auth_login.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">backend_login</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">226</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">backend_login</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">226</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Captcha/view/frontend/layout/checkout_onepage_index.xml
index cfd9481f01616168301249716888c5f6c36726d3..af2dc20ea7a04f05406ce5ef402eddd0ceb55c35 100644
--- a/app/code/Magento/Captcha/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Captcha/view/frontend/layout/checkout_onepage_index.xml
@@ -24,44 +24,46 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.login.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">user_login</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="form.billing.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha.guest.checkout">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">guest_checkout</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-        <block class="Magento\Captcha\Block\Captcha" name="captcha.register.during.checkout">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">register_during_checkout</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="form.login.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">user_login</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="form.billing.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha.guest.checkout">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">guest_checkout</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+            <block class="Magento\Captcha\Block\Captcha" name="captcha.register.during.checkout">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">register_during_checkout</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/frontend/layout/contact_index_index.xml b/app/code/Magento/Captcha/view/frontend/layout/contact_index_index.xml
index 619402350c2133b63bc6174369fb7bb7f29bd65a..2131f17208aa1ae5909a07cdb640012a11f74a33 100644
--- a/app/code/Magento/Captcha/view/frontend/layout/contact_index_index.xml
+++ b/app/code/Magento/Captcha/view/frontend/layout/contact_index_index.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">contact_us</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">contact_us</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/frontend/layout/customer_account_create.xml b/app/code/Magento/Captcha/view/frontend/layout/customer_account_create.xml
index 9fa9242cc43d4d33f8241e665c59db953ea20a27..3158947360e040df98acf1cf17671663f21e0550 100644
--- a/app/code/Magento/Captcha/view/frontend/layout/customer_account_create.xml
+++ b/app/code/Magento/Captcha/view/frontend/layout/customer_account_create.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">user_create</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">user_create</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/frontend/layout/customer_account_forgotpassword.xml b/app/code/Magento/Captcha/view/frontend/layout/customer_account_forgotpassword.xml
index 2b86c38f869d0b26cc00908c2ba8e7f4fbd0f798..a71f2020e85e02abdae220a33d5ffb1ac7fc1575 100644
--- a/app/code/Magento/Captcha/view/frontend/layout/customer_account_forgotpassword.xml
+++ b/app/code/Magento/Captcha/view/frontend/layout/customer_account_forgotpassword.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">user_forgotpassword</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">user_forgotpassword</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Captcha/view/frontend/layout/customer_account_login.xml b/app/code/Magento/Captcha/view/frontend/layout/customer_account_login.xml
index f1a823a1ea837c5312aaf144db3b8da7620bba58..a961fa2791ae7fc7f0db367dd40373ca745870e8 100644
--- a/app/code/Magento/Captcha/view/frontend/layout/customer_account_login.xml
+++ b/app/code/Magento/Captcha/view/frontend/layout/customer_account_login.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
-            <action method="setFormId">
-                <argument name="formId" xsi:type="string">user_login</argument>
-            </action>
-            <action method="setImgWidth">
-                <argument name="width" xsi:type="string">230</argument>
-            </action>
-            <action method="setImgHeight">
-                <argument name="width" xsi:type="string">50</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Captcha\Block\Captcha" name="captcha" after="-">
+                <action method="setFormId">
+                    <argument name="formId" xsi:type="string">user_login</argument>
+                </action>
+                <action method="setImgWidth">
+                    <argument name="width" xsi:type="string">230</argument>
+                </action>
+                <action method="setImgHeight">
+                    <argument name="width" xsi:type="string">50</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="captcha_page_head_components" template="Magento_Captcha::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit.php
index 342bdba301b0245d78cd27b73958338b920cdb2a..e8ed2705c2d673c29687790bea11ba60137d659b 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit.php
@@ -25,8 +25,6 @@ namespace Magento\Catalog\Block\Adminhtml\Category;
 
 /**
  * Category container block
- *
- * @author      Magento Core Team <core@magentocommerce.com>
  */
 class Edit extends \Magento\Backend\Block\Widget\Form\Container
 {
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php
index 7508103f431e1f2b2efb5a499147b4d89a75d1ae..ec8b5c80d1ad47e8eb6c41f22c341bc16bf322da 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php
@@ -25,8 +25,6 @@
 
 /**
  * Categories tree block
- *
- * @author     Magento Core Team <core@magentocommerce.com>
  */
 namespace Magento\Catalog\Block\Adminhtml\Category;
 
diff --git a/app/code/Magento/Catalog/Block/Breadcrumbs.php b/app/code/Magento/Catalog/Block/Breadcrumbs.php
index 87b4e3f84cba7a3bbe2b568d95fad38bb444e45a..60c261bba3b7629aa49c17337758de922fffa2ee 100644
--- a/app/code/Magento/Catalog/Block/Breadcrumbs.php
+++ b/app/code/Magento/Catalog/Block/Breadcrumbs.php
@@ -24,8 +24,6 @@
 
 /**
  * Catalog breadcrumbs
- *
- * @author      Magento Core Team <core@magentocommerce.com>
  */
 namespace Magento\Catalog\Block;
 
diff --git a/app/code/Magento/Catalog/Block/Product/View/AbstractView.php b/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
index f9bfbb3882112987b34eca9f50a4a6fed02c743d..5cce953b9bea9f16f501cf06e8d9e0387c4b561e 100644
--- a/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
+++ b/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
@@ -61,7 +61,7 @@ abstract class AbstractView extends \Magento\Catalog\Block\Product\AbstractProdu
     public function getProduct()
     {
         $product = parent::getProduct();
-        if (is_null($product->getTypeInstance()->getStoreFilter($product))) {
+        if ($product && is_null($product->getTypeInstance()->getStoreFilter($product))) {
             $product->getTypeInstance()->setStoreFilter($this->_storeManager->getStore(), $product);
         }
         return $product;
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category.php
index 9c0a81bba6bf5e86e08db8ffb721061199de6e51..aa15a2b6e36874d1d122d98914cc0d3c1fc00a61 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category.php
@@ -28,12 +28,30 @@ namespace Magento\Catalog\Controller\Adminhtml;
  */
 class Category extends \Magento\Backend\App\Action
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+
+    }
+
     /**
      * Initialize requested category and put it into registry.
      * Root category can be returned, if inappropriate store/category is specified
      *
      * @param bool $getRootInstead
-     * @return \Magento\Catalog\Model\Category
+     * @return \Magento\Catalog\Model\Category|false
      */
     protected function _initCategory($getRootInstead = false)
     {
@@ -57,7 +75,6 @@ class Category extends \Magento\Backend\App\Action
                     if ($getRootInstead) {
                         $category->load($rootId);
                     } else {
-                        $this->_redirect('catalog/*/', array('_current' => true, 'id' => null));
                         return false;
                     }
                 }
@@ -70,11 +87,8 @@ class Category extends \Magento\Backend\App\Action
         }
         $this->_objectManager->get('Magento\Framework\Registry')->register('category', $category);
         $this->_objectManager->get('Magento\Framework\Registry')->register('current_category', $category);
-        $this->_objectManager->get(
-            'Magento\Cms\Model\Wysiwyg\Config'
-        )->setStoreId(
-            $this->getRequest()->getParam('store')
-        );
+        $this->_objectManager->get('Magento\Cms\Model\Wysiwyg\Config')
+            ->setStoreId($this->getRequest()->getParam('store'));
         return $category;
     }
 
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
index 59dcbb4211e978b5cecc5846d86baeca202692d6..05c030cdf95dd9cfb29326cd17b7f0330ab423dc 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Add.php
@@ -26,14 +26,35 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Add extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultForwardFactory = $resultForwardFactory;
+    }
+
     /**
      * Add new category form
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
         $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->unsActiveTabId();
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
index f0b55d088e567c2d2dc9481e3a5c9b55cad3c9c2..5d13ece0283c946fbbab49f35aae4e6ca2de61f3 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/CategoriesJson.php
@@ -26,10 +26,37 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Get tree node (Ajax version)
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -42,15 +69,17 @@ class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category
         if ($categoryId) {
             $this->getRequest()->setParam('id', $categoryId);
 
-            if (!($category = $this->_initCategory())) {
-                return;
+            $category = $this->_initCategory();
+            if (!$category) {
+                /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+                $resultRedirect = $this->resultRedirectFactory->create();
+                return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
             }
-            $this->getResponse()->representJson(
-                $this->_view->getLayout()->createBlock(
-                    'Magento\Catalog\Block\Adminhtml\Category\Tree'
-                )->getTreeJson(
-                    $category
-                )
+            /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+            $resultJson = $this->resultJsonFactory->create();
+            return $resultJson->setData(
+                $this->layoutFactory->create()->createBlock('Magento\Catalog\Block\Adminhtml\Category\Tree')
+                    ->getTreeJson($category)
             );
         }
     }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
index 46afd2d586f2532eaf685d93b49146d1e2539bda..8dffed42962c6bf1ea65cbf7ba2654b54a3ab22d 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
@@ -29,10 +29,13 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
     /**
      * Delete category action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+
         $categoryId = (int)$this->getRequest()->getParam('id');
         if ($categoryId) {
             try {
@@ -45,14 +48,12 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
                 $this->messageManager->addSuccess(__('You deleted the category.'));
             } catch (\Magento\Framework\Model\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
-                $this->getResponse()->setRedirect($this->getUrl('catalog/*/edit', array('_current' => true)));
-                return;
+                return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
             } catch (\Exception $e) {
                 $this->messageManager->addError(__('Something went wrong while trying to delete the category.'));
-                $this->getResponse()->setRedirect($this->getUrl('catalog/*/edit', array('_current' => true)));
-                return;
+                return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
             }
         }
-        $this->getResponse()->setRedirect($this->getUrl('catalog/*/', array('_current' => true, 'id' => null)));
+        return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
index 6f5e2e20a677798428979a8a3e4e14b58520ce8c..cd0cde6da691981e1f09d22c861beb8e0ecd387b 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
@@ -26,10 +26,38 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * Edit category page
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -44,7 +72,9 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
 
         $category = $this->_initCategory(true);
         if (!$category) {
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
         }
 
         $this->_title->add($categoryId ? $category->getName() : __('Categories'));
@@ -57,6 +87,9 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
             $category->addData($data['general']);
         }
 
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+
         /**
          * Build response for ajax request
          */
@@ -82,42 +115,31 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
                 }
             }
 
-            $this->_view->loadLayout();
-
-            $eventResponse = new \Magento\Framework\Object(
-                array(
-                    'content' => $this->_view->getLayout()->getBlock(
-                        'category.edit'
-                    )->getFormHtml() . $this->_view->getLayout()->getBlock(
-                        'category.tree'
-                    )->getBreadcrumbsJavascript(
-                        $breadcrumbsPath,
-                        'editingCategoryBreadcrumbs'
-                    ),
-                    'messages' => $this->_view->getLayout()->getMessagesBlock()->getGroupedHtml()
-                )
-            );
+            $eventResponse = new \Magento\Framework\Object([
+                'content' => $resultPage->getLayout()->getBlock('category.edit')->getFormHtml()
+                    . $resultPage->getLayout()->getBlock('category.tree')
+                        ->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'),
+                'messages' => $resultPage->getLayout()->getMessagesBlock()->getGroupedHtml()
+            ]);
             $this->_eventManager->dispatch(
                 'category_prepare_ajax_response',
                 array('response' => $eventResponse, 'controller' => $this)
             );
-            $this->getResponse()->setHeader('Content-type', 'application/json', true);
-            $this->getResponse()->representJson(
-                $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode($eventResponse->getData())
-            );
-            return;
+            /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+            $resultJson = $this->resultJsonFactory->create();
+            $resultJson->setHeader('Content-type', 'application/json', true);
+            $resultJson->setData($eventResponse->getData());
+            return $resultJson;
         }
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Catalog::catalog_categories');
-
-        $this->_addBreadcrumb(__('Manage Catalog Categories'), __('Manage Categories'));
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_categories');
+        $resultPage->addBreadcrumb(__('Manage Catalog Categories'), __('Manage Categories'));
 
-        $block = $this->_view->getLayout()->getBlock('catalog.wysiwyg.js');
+        $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
         if ($block) {
             $block->setStoreId($storeId);
         }
 
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
index d816d429a7901c5a68e2c031b3e85352c68cbc7c..a4e5cea335ee1971fc1418d50da640bcde1fa1c6 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Grid.php
@@ -26,20 +26,51 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Grid extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Grid Action
      * Display list of products related to current category
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
         $category = $this->_initCategory(true);
         if (!$category) {
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
         }
-        $this->getResponse()->setBody(
-            $this->_view->getLayout()->createBlock(
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents(
+            $this->layoutFactory->create()->createBlock(
                 'Magento\Catalog\Block\Adminhtml\Category\Tab\Product',
                 'category.product.grid'
             )->toHtml()
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
index 7f6d8a0a128e735c88d7b7061d8920bed029561f..a239186a321e10c0a187fc7e1a4cc5e945e02793 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Index.php
@@ -26,13 +26,34 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Index extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultForwardFactory = $resultForwardFactory;
+    }
+
     /**
      * Catalog categories index action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
index 35e97e141795ce07d107328ec1f43dd032b4aff9..b9e3bda8e78766545d0afab6105c8a0ffe82ed83 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Move.php
@@ -26,17 +26,37 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Move extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultRawFactory = $resultRawFactory;
+    }
+
     /**
      * Move category action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
         $category = $this->_initCategory();
         if (!$category) {
-            $this->getResponse()->setBody(__('There was a category move error.'));
-            return;
+            return $resultRaw->setContents(__('There was a category move error.'));
         }
         /**
          * New parent category identifier
@@ -49,12 +69,13 @@ class Move extends \Magento\Catalog\Controller\Adminhtml\Category
 
         try {
             $category->move($parentNodeId, $prevNodeId);
-            $this->getResponse()->setBody('SUCCESS');
+            $resultRaw->setContents('SUCCESS');
         } catch (\Magento\Framework\Model\Exception $e) {
-            $this->getResponse()->setBody($e->getMessage());
+            $resultRaw->setContents($e->getMessage());
         } catch (\Exception $e) {
-            $this->getResponse()->setBody(__('There was a category move error %1', $e));
+            $resultRaw->setContents(__('There was a category move error %1', $e));
             $this->_objectManager->get('Magento\Framework\Logger')->logException($e);
         }
+        return $resultRaw;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
index 0f069b2c56e0407d53a2fdc40440e7371f7caa42..bfd4c2440d435dcbf3693d2f17710e633c5c0afb 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/RefreshPath.php
@@ -26,23 +26,39 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class RefreshPath extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * Build response for refresh input element 'path' in form
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
         $categoryId = (int)$this->getRequest()->getParam('id');
         if ($categoryId) {
             $category = $this->_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId);
-            $this->getResponse()->representJson(
-                $this->_objectManager->get(
-                    'Magento\Core\Helper\Data'
-                )->jsonEncode(
-                    array('id' => $categoryId, 'path' => $category->getPath())
-                )
-            );
+
+            /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+            $resultJson = $this->resultJsonFactory->create();
+            return $resultJson->setData(['id' => $categoryId, 'path' => $category->getPath()]);
         }
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
index 5c2292e8201fee985c942c1bf831691bf2802c5a..3bf1a84148000718b5a483f322e55541d5847570 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
@@ -26,6 +26,41 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Save extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Filter category data
      *
@@ -46,12 +81,15 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
     /**
      * Category save
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
-        if (!($category = $this->_initCategory())) {
-            return;
+        $category = $this->_initCategory();
+        if (!$category) {
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
         }
 
         $storeId = $this->getRequest()->getParam('store');
@@ -147,17 +185,16 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
             // to obtain truncated category name
 
             /** @var $block \Magento\Framework\View\Element\Messages */
-            $block = $this->_objectManager->get('Magento\Framework\View\Element\Messages');
+            $block = $this->layoutFactory->create()->getMessagesBlock();
             $block->setMessages($this->messageManager->getMessages(true));
-            $body = $this->_objectManager->get(
-                'Magento\Core\Helper\Data'
-            )->jsonEncode(
-                array(
-                    'messages' => $block->getGroupedHtml(),
-                    'error' => $refreshTree !== 'true',
-                    'category' => $category->toArray()
-                )
-            );
+
+            /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+            $resultJson = $this->resultJsonFactory->create();
+            return $resultJson->setData([
+                'messages' => $block->getGroupedHtml(),
+                'error' => $refreshTree !== 'true',
+                'category' => $category->toArray()
+            ]);
         } else {
             $url = $this->getUrl('catalog/*/edit', array('_current' => true, 'id' => $category->getId()));
             $body = '<script type="text/javascript">parent.updateContent("' .
@@ -166,7 +203,8 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
                 $refreshTree .
                 ');</script>';
         }
-
-        $this->getResponse()->setBody($body);
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($body);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
index fcea9b292c77a89e3c744e75450988882078d5d8..cc647bc158e459e94cea8b6b8f0496c49a8cc166 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/SuggestCategories.php
@@ -26,19 +26,45 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class SuggestCategories extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Category list suggestion based on already entered symbols
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
-        $this->getResponse()->representJson(
-            $this->_view->getLayout()->createBlock(
-                'Magento\Catalog\Block\Adminhtml\Category\Tree'
-            )->getSuggestedCategoriesJson(
-                $this->getRequest()->getParam('label_part')
-            )
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setJsonData(
+            $this->layoutFactory->create()->createBlock('Magento\Catalog\Block\Adminhtml\Category\Tree')
+                ->getSuggestedCategoriesJson($this->getRequest()->getParam('label_part'))
         );
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
index 9d3ead8200f8bc5e53e751a7ff05994b8b51c0f4..f3958b9224295c37baebcff3093103942262eecb 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Tree.php
@@ -26,11 +26,38 @@ namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 class Tree extends \Magento\Catalog\Controller\Adminhtml\Category
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $resultRedirectFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Tree Action
      * Retrieve category tree
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -46,27 +73,28 @@ class Tree extends \Magento\Catalog\Controller\Adminhtml\Category
         }
 
         $category = $this->_initCategory(true);
+        if (!$category) {
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
+        }
 
-        $block = $this->_view->getLayout()->createBlock('Magento\Catalog\Block\Adminhtml\Category\Tree');
+        $block = $this->layoutFactory->create()->createBlock('Magento\Catalog\Block\Adminhtml\Category\Tree');
         $root = $block->getRoot();
-        $this->getResponse()->representJson(
-            $this->_objectManager->get(
-                'Magento\Core\Helper\Data'
-            )->jsonEncode(
-                array(
-                    'data' => $block->getTree(),
-                    'parameters' => array(
-                        'text' => $block->buildNodeName($root),
-                        'draggable' => false,
-                        'allowDrop' => (bool)$root->getIsVisible(),
-                        'id' => (int)$root->getId(),
-                        'expanded' => (int)$block->getIsWasExpanded(),
-                        'store_id' => (int)$block->getStore()->getId(),
-                        'category_id' => (int)$category->getId(),
-                        'root_visible' => (int)$root->getIsVisible()
-                    )
-                )
-            )
-        );
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = $this->resultJsonFactory->create();
+        return $resultJson->setData([
+            'data' => $block->getTree(),
+            'parameters' => [
+                'text' => $block->buildNodeName($root),
+                'draggable' => false,
+                'allowDrop' => (bool)$root->getIsVisible(),
+                'id' => (int)$root->getId(),
+                'expanded' => (int)$block->getIsWasExpanded(),
+                'store_id' => (int)$block->getStore()->getId(),
+                'category_id' => (int)$category->getId(),
+                'root_visible' => (int)$root->getIsVisible()
+            ]
+        ]);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget.php
index fcc0436c3725d8a5364fb117fe45c9e4677214e9..8c03dc92abc8b9e842995028b6be3d221899ce20 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget.php
@@ -32,20 +32,37 @@ use Magento\Framework\View\Element\BlockInterface;
  */
 class Widget extends \Magento\Backend\App\Action
 {
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context);
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * @return BlockInterface
      */
     protected function _getCategoryTreeBlock()
     {
-        return $this->_view->getLayout()->createBlock(
+        return $this->layoutFactory->create()->createBlock(
             'Magento\Catalog\Block\Adminhtml\Category\Widget\Chooser',
             '',
-            array(
-                'data' => array(
+            [
+                'data' => [
                     'id' => $this->getRequest()->getParam('uniq_id'),
                     'use_massaction' => $this->getRequest()->getParam('use_massaction', false)
-                )
-            )
+                ]
+            ]
         );
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
index 30cb4fcd30c9b85153070b5d986c0fbda12777ec..433e21400c6d9e943afa2cdd9108f8de32e6b869 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJson.php
@@ -31,22 +31,34 @@ class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category\Widg
      *
      * @var \Magento\Framework\Registry
      */
-    protected $_coreRegistry = null;
+    protected $_coreRegistry;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
 
     /**
      * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
      * @param \Magento\Framework\Registry $coreRegistry
      */
-    public function __construct(\Magento\Backend\App\Action\Context $context, \Magento\Framework\Registry $coreRegistry)
-    {
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\LayoutFactory $layoutFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\Registry $coreRegistry
+    ) {
+        parent::__construct($context, $layoutFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
         $this->_coreRegistry = $coreRegistry;
-        parent::__construct($context);
     }
 
     /**
      * Categories tree node (Ajax version)
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -59,7 +71,9 @@ class CategoriesJson extends \Magento\Catalog\Controller\Adminhtml\Category\Widg
                 $this->_coreRegistry->register('current_category', $category);
             }
             $categoryTreeBlock = $this->_getCategoryTreeBlock()->setSelectedCategories(explode(',', $selected));
-            $this->getResponse()->representJson($categoryTreeBlock->getTreeJson($category));
+            /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+            $resultJson = $this->resultJsonFactory->create();
+            return $resultJson->setJsonData($categoryTreeBlock->getTreeJson($category));
         }
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
index f2b6c49eebf1f06fd178d554e26a5d3a9efd6830..aff431dfb624d69b3c82a80708796329aec438a7 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Widget/Chooser.php
@@ -26,13 +26,34 @@ namespace Magento\Catalog\Controller\Adminhtml\Category\Widget;
 
 class Chooser extends \Magento\Catalog\Controller\Adminhtml\Category\Widget
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\LayoutFactory $layoutFactory,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+    ) {
+        parent::__construct($context, $layoutFactory);
+        $this->resultRawFactory = $resultRawFactory;
+    }
+
     /**
      * Chooser Source action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
-        $this->getResponse()->setBody($this->_getCategoryTreeBlock()->toHtml());
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($this->_getCategoryTreeBlock()->toHtml());
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AbstractProductGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AbstractProductGrid.php
new file mode 100644
index 0000000000000000000000000000000000000000..0b9c48b3de8c9ca0300025ad759f09648ea5ca50
--- /dev/null
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AbstractProductGrid.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Catalog\Controller\Adminhtml\Product;
+
+use Magento\Backend\App\Action;
+use Magento\Catalog\Controller\Adminhtml\Product;
+use Magento\Framework\Controller\Result;
+
+class AbstractProductGrid extends Product
+{
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+}
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute.php
index 9588f8c19b55ee1b44962f851ec75c9f104e2ee7..68f3cf6823ff25801036917c287728b577c2be5a 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute.php
@@ -64,7 +64,6 @@ class Attribute extends Action
 
         if ($error) {
             $this->messageManager->addError($error);
-            $this->_redirect('catalog/product/', array('_current' => true));
         }
 
         return !$error;
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
index f474824abbcf92f5d3d0e4f4febb441e85af88f2..f3602977ff01ff70fd8aa48118562c54b6779742 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Edit.php
@@ -27,15 +27,40 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute;
 class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $attributeHelper);
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
         if (!$this->_validateProducts()) {
-            return;
+            return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['_current' => true]);
         }
-
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
index 07eedf8cc69f847be5580c877e315807bd101508..e058fd04d23f3ea3da5b21799c5a9967a5811e10 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php
@@ -57,6 +57,11 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
      */
     protected $_stockIndexerProcessor;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
     /**
      * @param Action\Context $context
      * @param \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper
@@ -65,6 +70,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
      * @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor
      * @param \Magento\Catalog\Helper\Product $catalogProduct
      * @param \Magento\CatalogInventory\Service\V1\Data\StockItemBuilder $stockItemBuilder
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
      */
     public function __construct(
         Action\Context $context,
@@ -73,7 +79,8 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
         \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor,
         \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor,
         \Magento\Catalog\Helper\Product $catalogProduct,
-        \Magento\CatalogInventory\Service\V1\Data\StockItemBuilder $stockItemBuilder
+        \Magento\CatalogInventory\Service\V1\Data\StockItemBuilder $stockItemBuilder,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
     ) {
         $this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;
         $this->_productPriceIndexerProcessor = $productPriceIndexerProcessor;
@@ -81,17 +88,18 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
         $this->_catalogProduct = $catalogProduct;
         $this->stockItemBuilder = $stockItemBuilder;
         parent::__construct($context, $attributeHelper);
+        $this->resultRedirectFactory = $resultRedirectFactory;
     }
 
     /**
      * Update product attributes
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         if (!$this->_validateProducts()) {
-            return;
+            return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['_current' => true]);
         }
 
         /* Collect Data */
@@ -210,6 +218,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
             );
         }
 
-        $this->_redirect('catalog/product/', array('store' => $this->attributeHelper->getSelectedStoreId()));
+        return $this->resultRedirectFactory->create()
+            ->setPath('catalog/product/', ['store' => $this->attributeHelper->getSelectedStoreId()]);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
index d77522c516bd85bfcb50836541822c6373ac8391..214e5904abd68d17b1108243605981954ac19f31 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Validate.php
@@ -26,10 +26,37 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute;
 
 class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $attributeHelper);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Attributes validation action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -63,11 +90,11 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attr
                 $e,
                 __('Something went wrong while updating the product(s) attributes.')
             );
-            $this->_view->getLayout()->initMessages();
+            $layout = $this->layoutFactory->create();
+            $layout->initMessages();
             $response->setError(true);
-            $response->setHtmlMessage($this->_view->getLayout()->getMessagesBlock()->getGroupedHtml());
+            $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml());
         }
-
-        $this->getResponse()->representJson($response->toJson());
+        return $this->resultJsonFactory->create()->setJsonData($response->toJson());
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
index 34a46d46aabdb047a28f16e3466f6647a18bb8f4..33250e2665060afd03ce8b79211ff3015ce8ed14 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php
@@ -26,14 +26,33 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class AddAttributeToTemplate extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
     /**
      * Add attribute to product template
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
         $request = $this->getRequest();
+        $resultJson = $this->resultJsonFactory->create();
         try {
             /** @var \Magento\Eav\Model\Entity\Attribute $attribute */
             $attribute = $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute')
@@ -60,12 +79,13 @@ class AddAttributeToTemplate extends \Magento\Catalog\Controller\Adminhtml\Produ
                 ->setSortOrder('0')
                 ->save();
 
-            $this->getResponse()->representJson($attribute->toJson());
+            $resultJson->setJsonData($attribute->toJson());
         } catch (\Exception $e) {
             $response = new \Magento\Framework\Object();
             $response->setError(false);
             $response->setMessage($e->getMessage());
-            $this->getResponse()->representJson($response->toJson());
+            $resultJson->setJsonData($response->toJson());
         }
+        return $resultJson;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
index e2e1ee921ca1afb3b56475feda6d9f723c6e9df5..c90b43f9bffec7d6ed56d487f4ac91f97b7072a8 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsPriceGrid.php
@@ -24,16 +24,19 @@
  */
 namespace Magento\Catalog\Controller\Adminhtml\Product;
 
-class AlertsPriceGrid extends \Magento\Catalog\Controller\Adminhtml\Product
+use Magento\Backend\App\Action;
+use Magento\Catalog\Controller\Adminhtml\Product;
+use Magento\Framework\Controller\Result;
+
+class AlertsPriceGrid extends AbstractProductGrid
 {
     /**
      * Get alerts price grid
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
-        $this->_view->loadLayout(false);
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
index 1585f372958a042af698bf0fe06c92ff72048a23..83a3d14ff850293bdda7fed216bbd7a416c8ed0d 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/AlertsStockGrid.php
@@ -24,16 +24,41 @@
  */
 namespace Magento\Catalog\Controller\Adminhtml\Product;
 
+use Magento\Backend\App\Action;
+use Magento\Catalog\Controller\Adminhtml\Product;
+use Magento\Framework\Controller\Result;
+use Magento\Framework\View\Result\LayoutFactory;
+
 class AlertsStockGrid extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * Constructor alert stock grid
+     *
+     * @param Action\Context $context
+     * @param Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        Product\Builder $productBuilder,
+        LayoutFactory $resultLayoutFactory
+    ) {
+        $this->resultLayoutFactory = $resultLayoutFactory;
+        parent::__construct($context, $productBuilder);
+    }
+
     /**
      * Get alerts stock grid
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
-        $this->_view->loadLayout(false);
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
index ad1b41d58487996e2210852376fff84eb34305da..fd0dec8f6301ebc9b43108e080f8a41e1bff5922 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute.php
@@ -27,6 +27,9 @@
  */
 namespace Magento\Catalog\Controller\Adminhtml\Product;
 
+use Magento\Framework\Controller\Result;
+use Magento\Framework\View\Result\PageFactory;
+
 class Attribute extends \Magento\Backend\App\Action
 {
     /**
@@ -47,17 +50,27 @@ class Attribute extends \Magento\Backend\App\Action
     protected $_coreRegistry = null;
 
     /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * Constructor
+     *
      * @param \Magento\Backend\App\Action\Context $context
      * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
      * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
-        \Magento\Framework\Registry $coreRegistry
+        \Magento\Framework\Registry $coreRegistry,
+        PageFactory $resultPageFactory
     ) {
         $this->_coreRegistry = $coreRegistry;
         $this->_attributeLabelCache = $attributeLabelCache;
+        $this->resultPageFactory = $resultPageFactory;
         parent::__construct($context);
     }
 
@@ -78,36 +91,27 @@ class Attribute extends \Magento\Backend\App\Action
     }
 
     /**
-     * @return $this
+     * @return \Magento\Backend\Model\View\Result\Page
      */
-    protected function _initAction()
+    protected function createActionPage()
     {
         $this->_title->add(__('Product Attributes'));
-
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
         if ($this->getRequest()->getParam('popup')) {
             if ($this->getRequest()->getParam('product_tab') == 'variations') {
-                $this->_view->loadLayout(
-                    array('popup', 'catalog_product_attribute_edit_product_tab_variations_popup')
-                );
+                $resultPage->addHandle(['popup', 'catalog_product_attribute_edit_product_tab_variations_popup']);
             } else {
-                $this->_view->loadLayout(array('popup', 'catalog_product_attribute_edit_popup'));
+                $resultPage->addHandle(['popup', 'catalog_product_attribute_edit_popup']);
             }
-            /** @var \Magento\Framework\View\Page\Config $pageConfig */
-            $pageConfig = $this->_objectManager->get('Magento\Framework\View\Page\Config');
+            $pageConfig = $resultPage->getConfig();
             $pageConfig->addBodyClass('attribute-popup');
         } else {
-            $this->_view->loadLayout();
-            $this->_addBreadcrumb(
-                __('Catalog'),
-                __('Catalog')
-            )->_addBreadcrumb(
-                __('Manage Product Attributes'),
-                __('Manage Product Attributes')
-            );
-            $this->_setActiveMenu('Magento_Catalog::catalog_attributes_attributes');
+            $resultPage->addBreadcrumb(__('Catalog'), __('Catalog'))
+                ->addBreadcrumb(__('Manage Product Attributes'), __('Manage Product Attributes'))
+                ->setActiveMenu('Magento_Catalog::catalog_attributes_attributes');
         }
-
-        return $this;
+        return $resultPage;
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
index 5ba8135f0263ddfbc425392cfe46209e3460c2f0..9bb8eb9405e1304d14872280ab8ceb0b4109746f 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Delete.php
@@ -27,11 +27,37 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 class Delete extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $attributeLabelCache, $coreRegistry, $resultPageFactory);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $id = $this->getRequest()->getParam('attribute_id');
+        $resultRedirect = $this->resultRedirectFactory->create();
         if ($id) {
             $model = $this->_objectManager->create('Magento\Catalog\Model\Resource\Eav\Attribute');
 
@@ -39,25 +65,22 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
             $model->load($id);
             if ($model->getEntityTypeId() != $this->_entityTypeId) {
                 $this->messageManager->addError(__('This attribute cannot be deleted.'));
-                $this->_redirect('catalog/*/');
-                return;
+                return $resultRedirect->setPath('catalog/*/');
             }
 
             try {
                 $model->delete();
                 $this->messageManager->addSuccess(__('The product attribute has been deleted.'));
-                $this->_redirect('catalog/*/');
-                return;
+                return $resultRedirect->setPath('catalog/*/');
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
-                $this->_redirect(
+                return $resultRedirect->setPath(
                     'catalog/*/edit',
-                    array('attribute_id' => $this->getRequest()->getParam('attribute_id'))
+                    ['attribute_id' => $this->getRequest()->getParam('attribute_id')]
                 );
-                return;
             }
         }
         $this->messageManager->addError(__('We can\'t find an attribute to delete.'));
-        $this->_redirect('catalog/*/');
+        return $resultRedirect->setPath('catalog/*/');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
index 883d85470bb0203025b77dedd843551c62f06c8b..dedcc149c9558d721c0d2698bc216ed2967983b5 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Edit.php
@@ -24,10 +24,39 @@
  */
 namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 
+use Magento\Backend\App\Action;
+use Magento\Backend\Model\View\Result\RedirectFactory;
+use Magento\Framework\View\Result\PageFactory;
+
 class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param Action\Context $context
+     * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param PageFactory $resultPageFactory
+     * @param RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
+        \Magento\Framework\Registry $coreRegistry,
+        PageFactory $resultPageFactory,
+        RedirectFactory $resultRedirectFactory
+    ) {
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        parent::__construct($context, $attributeLabelCache, $coreRegistry, $resultPageFactory);
+    }
+
+    /**
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -43,15 +72,15 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 
             if (!$model->getId()) {
                 $this->messageManager->addError(__('This attribute no longer exists.'));
-                $this->_redirect('catalog/*/');
-                return;
+                $resultRedirect = $this->resultRedirectFactory->create();
+                return $resultRedirect->setPath('catalog/*/');
             }
 
             // entity type check
             if ($model->getEntityTypeId() != $this->_entityTypeId) {
                 $this->messageManager->addError(__('This attribute cannot be edited.'));
-                $this->_redirect('catalog/*/');
-                return;
+                $resultRedirect = $this->resultRedirectFactory->create();
+                return $resultRedirect->setPath('catalog/*/');
             }
         }
 
@@ -67,20 +96,17 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 
         $this->_coreRegistry->register('entity_attribute', $model);
 
-        $this->_initAction();
+        $resultPage = $this->createActionPage();
 
         $this->_title->add($id ? $model->getName() : __('New Product Attribute'));
 
         $item = $id ? __('Edit Product Attribute') : __('New Product Attribute');
 
-        $this->_addBreadcrumb($item, $item);
-
-        $this->_view->getLayout()->getBlock(
-            'attribute_edit_js'
-        )->setIsPopup(
-            (bool)$this->getRequest()->getParam('popup')
-        );
+        $resultPage->addBreadcrumb($item, $item);
 
-        $this->_view->renderLayout();
+        $resultPage->getLayout()
+            ->getBlock('attribute_edit_js')
+            ->setIsPopup((bool)$this->getRequest()->getParam('popup'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
index 7bd0bad0ab4d5182cd5e522c59f2b569d0726476..0b9008996edb518ea114422a2046aeb7127d123e 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Index.php
@@ -27,13 +27,14 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 class Index extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_initAction()->_addContent(
-            $this->_view->getLayout()->createBlock('Magento\Catalog\Block\Adminhtml\Product\Attribute')
+        $resultPage = $this->createActionPage();
+        $resultPage->addContent(
+            $resultPage->getLayout()->createBlock('Magento\Catalog\Block\Adminhtml\Product\Attribute')
         );
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
index 694f4dd33b31d3bd34bac08bd6755563d962e7ea..1be31bef6910e00614065dac5b613d484fd267a4 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/NewAction.php
@@ -27,10 +27,33 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 class NewAction extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+    ) {
+        parent::__construct($context, $attributeLabelCache, $coreRegistry, $resultPageFactory);
+        $this->resultForwardFactory = $resultForwardFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        return $this->resultForwardFactory->create()->forward('edit');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
index 17bf2e992c3bd3a8c5ef00888bf4850c39bd7f67..6eb21e6a00d4388e888a25bb20df494882b40664 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php
@@ -27,11 +27,37 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $attributeLabelCache, $coreRegistry, $resultPageFactory);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $data = $this->getRequest()->getPost();
+        $resultRedirect = $this->resultRedirectFactory->create();
         if ($data) {
             /** @var $session \Magento\Backend\Model\Auth\Session */
             $session = $this->_objectManager->get('Magento\Backend\Model\Session');
@@ -51,8 +77,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                 if ($attributeSet->getId()) {
                     $this->messageManager->addError(__('Attribute Set with name \'%1\' already exists.', $name));
                     $this->messageManager->setAttributeData($data);
-                    $this->_redirect('catalog/*/edit', array('_current' => true));
-                    return;
+                    return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
                 }
 
                 try {
@@ -88,8 +113,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                             $attributeCode
                         )
                     );
-                    $this->_redirect('catalog/*/edit', array('attribute_id' => $id, '_current' => true));
-                    return;
+                    return $resultRedirect->setPath('catalog/*/edit', ['attribute_id' => $id, '_current' => true]);
                 }
             }
             $data['attribute_code'] = $attributeCode;
@@ -104,8 +128,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                     foreach ($inputType->getMessages() as $message) {
                         $this->messageManager->addError($message);
                     }
-                    $this->_redirect('catalog/*/edit', array('attribute_id' => $id, '_current' => true));
-                    return;
+                    return $resultRedirect->setPath('catalog/*/edit', ['attribute_id' => $id, '_current' => true]);
                 }
             }
 
@@ -113,15 +136,13 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                 $model->load($id);
                 if (!$model->getId()) {
                     $this->messageManager->addError(__('This attribute no longer exists.'));
-                    $this->_redirect('catalog/*/');
-                    return;
+                    return $resultRedirect->setPath('catalog/*/');
                 }
                 // entity type check
                 if ($model->getEntityTypeId() != $this->_entityTypeId) {
                     $this->messageManager->addError(__('You can\'t update your attribute.'));
                     $session->setAttributeData($data);
-                    $this->_redirect('catalog/*/');
-                    return;
+                    return $resultRedirect->setPath('catalog/*/');
                 }
 
                 $data['attribute_code'] = $model->getAttributeCode();
@@ -193,20 +214,19 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                     if ($isNewAttributeSet) {
                         $requestParams['new_attribute_set_id'] = $attributeSet->getId();
                     }
-                    $this->_redirect('catalog/product/addAttribute', $requestParams);
+                    $resultRedirect->setPath('catalog/product/addAttribute', $requestParams);
                 } elseif ($redirectBack) {
-                    $this->_redirect('catalog/*/edit', array('attribute_id' => $model->getId(), '_current' => true));
+                    $resultRedirect->setPath('catalog/*/edit', ['attribute_id' => $model->getId(), '_current' => true]);
                 } else {
-                    $this->_redirect('catalog/*/', array());
+                    $resultRedirect->setPath('catalog/*/');
                 }
-                return;
+                return $resultRedirect;
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
                 $session->setAttributeData($data);
-                $this->_redirect('catalog/*/edit', array('attribute_id' => $id, '_current' => true));
-                return;
+                return $resultRedirect->setPath('catalog/*/edit', ['attribute_id' => $id, '_current' => true]);
             }
         }
-        $this->_redirect('catalog/*/');
+        return $resultRedirect->setPath('catalog/*/');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
index e337e787c00fa32cbf79610ab3f713f96c5c3faa..a1226c5d548fa228aae397604ae698afa988ca54 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php
@@ -27,7 +27,40 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Attribute;
 class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
 {
     /**
-     * @return void
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Cache\FrontendInterface $attributeLabelCache
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Cache\FrontendInterface $attributeLabelCache,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $attributeLabelCache, $coreRegistry, $resultPageFactory);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -64,11 +97,12 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product\Attribute
                 $setName = $this->_objectManager->get('Magento\Framework\Escaper')->escapeHtml($setName);
                 $this->messageManager->addError(__('Attribute Set with name \'%1\' already exists.', $setName));
 
-                $this->_view->getLayout()->initMessages();
+                $layout = $this->layoutFactory->create();
+                $layout->initMessages();
                 $response->setError(true);
-                $response->setHtmlMessage($this->_view->getLayout()->getMessagesBlock()->getGroupedHtml());
+                $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml());
             }
         }
-        $this->getResponse()->representJson($response->toJson());
+        return $this->resultJsonFactory->create()->setJsonData($response->toJson());
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
index 1873182c891d30399986014edfd25a1a0d8d70c3..c84b5ef95371a34e2260bdae90798f7a2fc8f36e 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Categories.php
@@ -26,15 +26,33 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Categories extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Get categories fieldset block
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
index 018e204207fe58802143d8f759a600595efd2ba1..6ad0498f19ad5762a46fd418796c1bcfa982c262 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php
@@ -26,17 +26,36 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Crosssell extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
     /**
      * Get crosssell products grid and serializer block
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->getLayout()->getBlock('catalog.product.edit.tab.crosssell')
+        $resultLayout = $this->resultLayoutFactory->create();
+        $resultLayout->getLayout()->getBlock('catalog.product.edit.tab.crosssell')
             ->setProductsCrossSell($this->getRequest()->getPost('products_crosssell', null));
-        $this->_view->renderLayout();
+        return $resultLayout;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
index 22aa08f5ea9aa958978295ad04051b440cace6d8..6a45f6d4fae47aa8e04a91cf385da9ededaad20b 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php
@@ -26,17 +26,36 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class CrosssellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
     /**
      * Get crosssell products grid
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->getLayout()->getBlock('catalog.product.edit.tab.crosssell')
+        $resultLayout = $this->resultLayoutFactory->create();
+        $resultLayout->getLayout()->getBlock('catalog.product.edit.tab.crosssell')
             ->setProductsRelated($this->getRequest()->getPost('products_crosssell', null));
-        $this->_view->renderLayout();
+        return $resultLayout;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
index e94051322021f8706b9b1341a6e7f364efcf4933..de8468958cf5b75778bd5a313fe34b018b597202 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/CustomOptions.php
@@ -36,29 +36,36 @@ class CustomOptions extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $registry;
 
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param \Magento\Framework\Registry $registry
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
-        \Magento\Framework\Registry $registry
+        \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
     ) {
         $this->registry = $registry;
         parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
     }
 
     /**
      * Show custom options in JSON format for specified products
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->registry->register('import_option_products', $this->getRequest()->getPost('products'));
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
index e2f7345b4f784c777597312de59e92fc5239443d..eb9f9c16a48582092dc257fa7dfa4610306fc580 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Duplicate.php
@@ -34,36 +34,48 @@ class Duplicate extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $productCopier;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param \Magento\Catalog\Model\Product\Copier $productCopier
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
-        \Magento\Catalog\Model\Product\Copier $productCopier
+        \Magento\Catalog\Model\Product\Copier $productCopier,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
     ) {
         $this->productCopier = $productCopier;
         parent::__construct($context, $productBuilder);
+        $this->resultRedirectFactory = $resultRedirectFactory;
     }
 
     /**
      * Create product duplicate
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
+        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+        $resultRedirect = $this->resultRedirectFactory->create();
+
         $product = $this->productBuilder->build($this->getRequest());
         try {
             $newProduct = $this->productCopier->copy($product);
             $this->messageManager->addSuccess(__('You duplicated the product.'));
-            $this->_redirect('catalog/*/edit', array('_current' => true, 'id' => $newProduct->getId()));
+            $resultRedirect->setPath('catalog/*/edit', ['_current' => true, 'id' => $newProduct->getId()]);
         } catch (\Exception $e) {
             $this->_objectManager->get('Magento\Framework\Logger')->logException($e);
             $this->messageManager->addError($e->getMessage());
-            $this->_redirect('catalog/*/edit', array('_current' => true));
+            $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
         }
+        return $resultRedirect;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
index bcd2261590d46f5864972481e5a00fd1e4ce5e70..83d4b4bb4976fb68a22c3eb8c8b71cb7e12544e3 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Edit.php
@@ -34,10 +34,37 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $_publicActions = array('edit');
 
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
     /**
      * Product edit form
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -47,29 +74,23 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product
 
         if ($productId && !$product->getId()) {
             $this->messageManager->addError(__('This product no longer exists.'));
-            $this->_redirect('catalog/*/');
-            return;
+            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('catalog/*/');
         }
 
         $this->_title->add($product->getName());
 
         $this->_eventManager->dispatch('catalog_product_edit_action', array('product' => $product));
 
-        $this->_view->loadLayout(
-            array(
-                'default',
-                strtolower($this->_request->getFullActionName()),
-                'catalog_product_' . $product->getTypeId()
-            )
-        );
-
-        $this->_setActiveMenu('Magento_Catalog::catalog_products');
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->addHandle('catalog_product_' . $product->getTypeId());
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_products');
 
-        if (!$this->_objectManager->get(
-            'Magento\Framework\StoreManagerInterface'
-        )->isSingleStoreMode() && ($switchBlock = $this->_view->getLayout()->getBlock(
-            'store_switcher'
-        ))
+        if (!$this->_objectManager->get('Magento\Framework\StoreManagerInterface')->isSingleStoreMode()
+            &&
+            ($switchBlock = $resultPage->getLayout()->getBlock('store_switcher'))
         ) {
             $switchBlock->setDefaultStoreName(__('Default Values'))
                 ->setWebsiteIds($product->getWebsiteIds())
@@ -81,11 +102,11 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Product
                 );
         }
 
-        $block = $this->_view->getLayout()->getBlock('catalog.wysiwyg.js');
+        $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
         if ($block) {
             $block->setStoreId($product->getStoreId());
         }
 
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
index eee14a3d7dafbecc940eb96fc907bab1d497ecf4..cfedd163340bd1e3c45ce1c6e28f6f06f9999a43 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
@@ -28,6 +28,23 @@ use Magento\Framework\App\Filesystem\DirectoryList;
 
 class Upload extends \Magento\Backend\App\Action
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context);
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * @return bool
      */
@@ -37,7 +54,7 @@ class Upload extends \Magento\Backend\App\Action
     }
 
     /**
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -50,11 +67,8 @@ class Upload extends \Magento\Backend\App\Action
             $uploader->setAllowRenameFiles(true);
             $uploader->setFilesDispersion(true);
             /** @var \Magento\Framework\Filesystem\Directory\Read $mediaDirectory */
-            $mediaDirectory = $this->_objectManager->get(
-                'Magento\Framework\Filesystem'
-            )->getDirectoryRead(
-                DirectoryList::MEDIA
-            );
+            $mediaDirectory = $this->_objectManager->get('Magento\Framework\Filesystem')
+                ->getDirectoryRead(DirectoryList::MEDIA);
             $config = $this->_objectManager->get('Magento\Catalog\Model\Product\Media\Config');
             $result = $uploader->save($mediaDirectory->getAbsolutePath($config->getBaseTmpMediaPath()));
 
@@ -66,18 +80,13 @@ class Upload extends \Magento\Backend\App\Action
             unset($result['tmp_name']);
             unset($result['path']);
 
-            $result['url'] = $this->_objectManager->get(
-                'Magento\Catalog\Model\Product\Media\Config'
-            )->getTmpMediaUrl(
-                $result['file']
-            );
+            $result['url'] = $this->_objectManager->get('Magento\Catalog\Model\Product\Media\Config')
+                ->getTmpMediaUrl($result['file']);
             $result['file'] = $result['file'] . '.tmp';
         } catch (\Exception $e) {
             $result = array('error' => $e->getMessage(), 'errorcode' => $e->getCode());
         }
 
-        $this->getResponse()->representJson(
-            $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode($result)
-        );
+        return $this->resultJsonFactory->create()->setData($result);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
index b94c6bdb3419f93682133fc3e4a5f907acb288d2..4f55f19b8a908795af63e61ee2b62603236b0c60 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Grid.php
@@ -26,14 +26,32 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Grid extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Product grid for AJAX request
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
index 6ec4165a4a36296070700afe33d3f6219c972b46..444a7de6761e8dedfb5060ad7bf03c159dfb7885 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/GridOnly.php
@@ -26,23 +26,50 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class GridOnly extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
     /**
      * Get specified tab grid
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
         $this->_title->add(__('Products'));
 
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
 
         $block = $this->getRequest()->getParam('gridOnlyBlock');
         $blockClassSuffix = str_replace(' ', '_', ucwords(str_replace('_', ' ', $block)));
 
-        $this->getResponse()->setBody(
-            $this->_view->getLayout()->createBlock(
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents(
+            $this->layoutFactory->create()->createBlock(
                 'Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\\' . $blockClassSuffix
             )->toHtml()
         );
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
index cf26ec6ee1c9a96f7074a4dae080ff8508e1a432..3cbf38d9d67ea5f046fbc7b634d2aa49fbaab9a5 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Index.php
@@ -26,16 +26,36 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Index extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Product list page
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Products'));
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Catalog::catalog_products');
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_products');
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
index 5e33ba33473d1f4ebfe0af687b1d332c335d40a3..0fb527babde96744784128f1c6b0ddb2864459f6 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassDelete.php
@@ -27,7 +27,26 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 class MassDelete extends \Magento\Catalog\Controller\Adminhtml\Product
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -47,6 +66,6 @@ class MassDelete extends \Magento\Catalog\Controller\Adminhtml\Product
                 $this->messageManager->addError($e->getMessage());
             }
         }
-        $this->_redirect('catalog/*/index');
+        return $this->resultRedirectFactory->create()->setPath('catalog/*/index');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
index 6b7fc6a31a88382fb78067ee966b324fb1e54ab1..c30cd59f508c0dc221f3e0b622ddbc53797cbfd6 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php
@@ -34,18 +34,26 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $_productPriceIndexerProcessor;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
-        \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor
+        \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
     ) {
         $this->_productPriceIndexerProcessor = $productPriceIndexerProcessor;
         parent::__construct($context, $productBuilder);
+        $this->resultRedirectFactory = $resultRedirectFactory;
     }
 
     /**
@@ -70,7 +78,7 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product
     /**
      * Update product(s) status action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -92,6 +100,6 @@ class MassStatus extends \Magento\Catalog\Controller\Adminhtml\Product
             $this->_getSession()->addException($e, __('Something went wrong while updating the product(s) status.'));
         }
 
-        $this->_redirect('catalog/*/', array('store' => $storeId));
+        return $this->resultRedirectFactory->create()->setPath('catalog/*/', ['store' => $storeId]);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
index 3c1d34b33a1712c9e0434615723931be5ec3afea..eb5f45c30435ed96d71e2276dfa05424dcdbb719 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/NewAction.php
@@ -34,30 +34,45 @@ class NewAction extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $stockFilter;
 
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param Initialization\StockDataFilter $stockFilter
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
-        Initialization\StockDataFilter $stockFilter
+        Initialization\StockDataFilter $stockFilter,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
     ) {
         $this->stockFilter = $stockFilter;
         parent::__construct($context, $productBuilder);
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultForwardFactory = $resultForwardFactory;
     }
 
     /**
      * Create new product page
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
         if (!$this->getRequest()->getParam('set')) {
-            $this->_forward('noroute');
-            return;
+            return $this->resultForwardFactory->create()->forward('noroute');
         }
         $this->_title->add(__('Products'));
 
@@ -74,29 +89,20 @@ class NewAction extends \Magento\Catalog\Controller\Adminhtml\Product
 
         $this->_eventManager->dispatch('catalog_product_new_action', array('product' => $product));
 
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
         if ($this->getRequest()->getParam('popup')) {
-            $this->_view->loadLayout(array(
-                'default',
-                'popup',
-                strtolower($this->_request->getFullActionName()),
-                'catalog_product_' . $product->getTypeId()
-            ));
+            $resultPage->addHandle(['popup', 'catalog_product_' . $product->getTypeId()]);
         } else {
-            $this->_view->loadLayout(
-                array(
-                    'default',
-                    strtolower($this->_request->getFullActionName()),
-                    'catalog_product_' . $product->getTypeId()
-                )
-            );
-            $this->_setActiveMenu('Magento_Catalog::catalog_products');
+            $resultPage->addHandle(['catalog_product_' . $product->getTypeId()]);
+            $resultPage->setActiveMenu('Magento_Catalog::catalog_products');
         }
 
-        $block = $this->_view->getLayout()->getBlock('catalog.wysiwyg.js');
+        $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
         if ($block) {
             $block->setStoreId($product->getStoreId());
         }
 
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
index fb4b4a875729e7b57d2987dd65411b0e73f991b3..bddcf3b5118b242f940f55635b6dc27f7323ca83 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Options.php
@@ -26,15 +26,33 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Options extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
     /**
      * Get options fieldset block
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
index 2c4327e6969751511a4eeae6b3a2c19ae188adba..775fd451045fa6f78b8ccc8216ba363aa0513372 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/OptionsImportGrid.php
@@ -24,16 +24,15 @@
  */
 namespace Magento\Catalog\Controller\Adminhtml\Product;
 
-class OptionsImportGrid extends \Magento\Catalog\Controller\Adminhtml\Product
+class OptionsImportGrid extends AbstractProductGrid
 {
     /**
      * Show product grid for custom options import popup
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
index 423a0b66946c1302f1b957e3c5691bd4d8af8a60..7dbeb41ea8d23090d319211875bb3266287a1e3a 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php
@@ -28,14 +28,33 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 class Related extends \Magento\Catalog\Controller\Adminhtml\Product
 {
     /**
-     * {@inheritdoc}
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->getLayout()->getBlock('catalog.product.edit.tab.related')
+        $resultLayout = $this->resultLayoutFactory->create();
+        $resultLayout->getLayout()->getBlock('catalog.product.edit.tab.related')
             ->setProductsRelated($this->getRequest()->getPost('products_related', null));
-        $this->_view->renderLayout();
+        return $resultLayout;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
index b83a9e076b9c6236d3baabb1cfbe70fc99be6d58..cafe26ca2e523d6035bc73c66f48a56d6c287230 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Save.php
@@ -44,31 +44,39 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $productTypeManager;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param Initialization\Helper $initializationHelper
      * @param \Magento\Catalog\Model\Product\Copier $productCopier
      * @param \Magento\Catalog\Model\Product\TypeTransitionManager $productTypeManager
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
         Initialization\Helper $initializationHelper,
         \Magento\Catalog\Model\Product\Copier $productCopier,
-        \Magento\Catalog\Model\Product\TypeTransitionManager $productTypeManager
+        \Magento\Catalog\Model\Product\TypeTransitionManager $productTypeManager,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
     ) {
         $this->initializationHelper = $initializationHelper;
         $this->productCopier = $productCopier;
         $this->productTypeManager = $productTypeManager;
         parent::__construct($context, $productBuilder);
+        $this->resultRedirectFactory = $resultRedirectFactory;
     }
 
 
     /**
      * Save product action
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -136,20 +144,22 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product
             }
         }
 
+        $resultRedirect = $this->resultRedirectFactory->create();
         if ($redirectBack === 'new') {
-            $this->_redirect(
+            $resultRedirect->setPath(
                 'catalog/*/new',
-                array('set' => $product->getAttributeSetId(), 'type' => $product->getTypeId())
+                ['set' => $product->getAttributeSetId(), 'type' => $product->getTypeId()]
             );
         } elseif ($redirectBack === 'duplicate' && isset($newProduct)) {
-            $this->_redirect(
+            $resultRedirect->setPath(
                 'catalog/*/edit',
-                array('id' => $newProduct->getId(), 'back' => null, '_current' => true)
+                ['id' => $newProduct->getId(), 'back' => null, '_current' => true]
             );
         } elseif ($redirectBack) {
-            $this->_redirect('catalog/*/edit', array('id' => $productId, '_current' => true));
+            $resultRedirect->setPath('catalog/*/edit', ['id' => $productId, '_current' => true]);
         } else {
-            $this->_redirect('catalog/*/', array('store' => $storeId));
+            $resultRedirect->setPath('catalog/*/', ['store' => $storeId]);
         }
+        return $resultRedirect;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
index 4f2577a9d6271d0628d219b8a15e43a83285393f..2458a9f6e704bb8756813db40ecfa665b3902320 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Add.php
@@ -27,7 +27,26 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 class Add extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
@@ -35,14 +54,12 @@ class Add extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 
         $this->_setTypeId();
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Catalog::catalog_attributes_sets');
-
-
-        $this->_addContent(
-            $this->_view->getLayout()->createBlock('Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Toolbar\Add')
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_attributes_sets');
+        $resultPage->addContent(
+            $resultPage->getLayout()->createBlock('Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Toolbar\Add')
         );
-
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
index db8557897d8313f6405ac7f40584368e77634721..cabf5018f86b8ecefb9a4c9cd078b6f02a84b4e0 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Delete.php
@@ -27,19 +27,40 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 class Delete extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $setId = $this->getRequest()->getParam('id');
+        $resultRedirect = $this->resultRedirectFactory->create();
         try {
             $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute\Set')->setId($setId)->delete();
 
             $this->messageManager->addSuccess(__('The attribute set has been removed.'));
-            $this->getResponse()->setRedirect($this->getUrl('catalog/*/'));
+            $resultRedirect->setPath('catalog/*/');
         } catch (\Exception $e) {
             $this->messageManager->addError(__('An error occurred while deleting this set.'));
-            $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*')));
+            $resultRedirect->setUrl($this->_redirect->getRedirectUrl($this->getUrl('*')));
         }
+        return $resultRedirect;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
index 071db65a98164ba6b3d34415910144dd861c2b97..75246c21b583537371a1a3506fe60893d01012ca 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Edit.php
@@ -27,33 +27,56 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 class Edit extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->resultPageFactory = $resultPageFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Product Templates'));
 
         $this->_setTypeId();
-        $attributeSet = $this->_objectManager->create(
-            'Magento\Eav\Model\Entity\Attribute\Set'
-        )->load(
-            $this->getRequest()->getParam('id')
-        );
+        $attributeSet = $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute\Set')
+            ->load($this->getRequest()->getParam('id'));
 
         if (!$attributeSet->getId()) {
-            $this->_redirect('catalog/*/index');
-            return;
+            return $this->resultRedirectFactory->create()->setPath('catalog/*/index');
         }
 
         $this->_title->add($attributeSet->getId() ? $attributeSet->getAttributeSetName() : __('New Set'));
 
         $this->_coreRegistry->register('current_attribute_set', $attributeSet);
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Catalog::catalog_attributes_sets');
-        $this->_addBreadcrumb(__('Catalog'), __('Catalog'));
-        $this->_addBreadcrumb(__('Manage Product Sets'), __('Manage Product Sets'));
-
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_attributes_sets');
+        $resultPage->addBreadcrumb(__('Catalog'), __('Catalog'));
+        $resultPage->addBreadcrumb(__('Manage Product Sets'), __('Manage Product Sets'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
index 1e8567fec766cf02590e276a0a90c1a768f0c796..7fa11aca9ebbc1643a5d12a9bc167ebf17b42300 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Index.php
@@ -27,7 +27,26 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 class Index extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
@@ -35,12 +54,11 @@ class Index extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 
         $this->_setTypeId();
 
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Catalog::catalog_attributes_sets');
-
-        $this->_addBreadcrumb(__('Catalog'), __('Catalog'));
-        $this->_addBreadcrumb(__('Manage Attribute Sets'), __('Manage Attribute Sets'));
-
-        $this->_view->renderLayout();
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Catalog::catalog_attributes_sets');
+        $resultPage->addBreadcrumb(__('Catalog'), __('Catalog'));
+        $resultPage->addBreadcrumb(__('Manage Attribute Sets'), __('Manage Attribute Sets'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
index 58e9f6ab438c2c9327e2d3c53f094254e4bc126f..7911ab2354dae56b5dc1c6ac94dd83c2e7ad686d 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/Save.php
@@ -26,6 +26,41 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 
 class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\LayoutFactory $layoutFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->layoutFactory = $layoutFactory;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultJsonFactory = $resultJsonFactory;
+    }
+
     /**
      * Retrieve catalog product entity type id
      *
@@ -45,7 +80,7 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
      * [POST] Create attribute set from another set and redirect to edit page
      * [AJAX] Save attribute set data
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -55,11 +90,8 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
         $isNewSet = $this->getRequest()->getParam('gotoEdit', false) == '1';
 
         /* @var $model \Magento\Eav\Model\Entity\Attribute\Set */
-        $model = $this->_objectManager->create(
-            'Magento\Eav\Model\Entity\Attribute\Set'
-        )->setEntityTypeId(
-            $entityTypeId
-        );
+        $model = $this->_objectManager->create('Magento\Eav\Model\Entity\Attribute\Set')
+            ->setEntityTypeId($entityTypeId);
 
         /** @var $filterManager \Magento\Framework\Filter\FilterManager */
         $filterManager = $this->_objectManager->get('Magento\Framework\Filter\FilterManager');
@@ -76,11 +108,8 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
                 if (!$model->getId()) {
                     throw new \Magento\Framework\Model\Exception(__('This attribute set no longer exists.'));
                 }
-                $data = $this->_objectManager->get(
-                    'Magento\Core\Helper\Data'
-                )->jsonDecode(
-                    $this->getRequest()->getPost('data')
-                );
+                $data = $this->_objectManager->get('Magento\Core\Helper\Data')
+                    ->jsonDecode($this->getRequest()->getPost('data'));
 
                 //filter html tags
                 $data['attribute_set_name'] = $filterManager->stripTags($data['attribute_set_name']);
@@ -106,34 +135,35 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Set
         if ($isNewSet) {
             if ($this->getRequest()->getPost('return_session_messages_only')) {
                 /** @var $block \Magento\Framework\View\Element\Messages */
-                $block = $this->_objectManager->get('Magento\Framework\View\Element\Messages');
+                $block = $this->layoutFactory->create()->getMessagesBlock();
                 $block->setMessages($this->messageManager->getMessages(true));
-                $body = $this->_objectManager->get(
-                    'Magento\Core\Helper\Data'
-                )->jsonEncode(
-                    array('messages' => $block->getGroupedHtml(), 'error' => $hasError, 'id' => $model->getId())
-                );
-                $this->getResponse()->representJson($body);
+                $body = [
+                    'messages' => $block->getGroupedHtml(),
+                    'error' => $hasError,
+                    'id' => $model->getId()
+                ];
+                return $this->resultJsonFactory->create()->setData($body);
             } else {
+                $resultRedirect = $this->resultRedirectFactory->create();
                 if ($hasError) {
-                    $this->_redirect('catalog/*/add');
+                    $resultRedirect->setPath('catalog/*/add');
                 } else {
-                    $this->_redirect('catalog/*/edit', array('id' => $model->getId()));
+                    $resultRedirect->setPath('catalog/*/edit', ['id' => $model->getId()]);
                 }
+                return $resultRedirect;
             }
         } else {
             $response = array();
             if ($hasError) {
-                $this->_view->getLayout()->initMessages();
+                $layout = $this->layoutFactory->create();
+                $layout->initMessages();
                 $response['error'] = 1;
-                $response['message'] = $this->_view->getLayout()->getMessagesBlock()->getGroupedHtml();
+                $response['message'] = $layout->getMessagesBlock()->getGroupedHtml();
             } else {
                 $response['error'] = 0;
                 $response['url'] = $this->getUrl('catalog/*/');
             }
-            $this->getResponse()->representJson(
-                $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode($response)
-            );
+            return $this->resultJsonFactory->create()->setData($response);
         }
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
index c5dbe1569d946638f3e14d376b2899b5b81b2f00..3bb7a9aaf639880e3f7b6fa44ad1c6e4ee010746 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Set/SetGrid.php
@@ -27,12 +27,30 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Set;
 class SetGrid extends \Magento\Catalog\Controller\Adminhtml\Product\Set
 {
     /**
-     * @return void
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Registry $coreRegistry
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Registry $coreRegistry,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $coreRegistry);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->_setTypeId();
-        $this->_view->loadLayout(false);
-        $this->_view->renderLayout();
+        return $this->resultLayoutFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
index ebcc99af3d526183c22dc77bad052861192f3654..0074e2fee31c6a186124d80a0dfde8e3999a50ee 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestAttributes.php
@@ -26,21 +26,46 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class SuggestAttributes extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Search for attributes by part of attribute's label in admin store
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
-        $this->getResponse()->representJson(
-            $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode(
-                $this->_view->getLayout()->createBlock(
-                    'Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Attributes\Search'
-                )->getSuggestedAttributes(
-                    $this->getRequest()->getParam('label_part')
-                )
-            )
+        $resultJson = $this->resultJsonFactory->create();
+        $resultJson->setData(
+            $this->layoutFactory->create()
+                ->createBlock('Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Attributes\Search')
+                ->getSuggestedAttributes($this->getRequest()->getParam('label_part'))
         );
+        return $resultJson;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestProductTemplates.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestProductTemplates.php
index 48489b98fcd3547ba51b2150e8d102bf077e847c..4e75e13522b88e2f3f3c701637584fff77fc4472 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestProductTemplates.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/SuggestProductTemplates.php
@@ -26,19 +26,46 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class SuggestProductTemplates extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Action for product template selector
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->getResponse()->representJson(
-            $this->_objectManager->get('Magento\Core\Helper\Data')->jsonEncode(
-                $this->_view->getLayout()->createBlock('Magento\Catalog\Block\Product\TemplateSelector')
-                    ->getSuggestedTemplates($this->getRequest()->getParam('label_part'))
-            )
+        $resultJson = $this->resultJsonFactory->create();
+        $resultJson->setData(
+            $this->layoutFactory->create()->createBlock('Magento\Catalog\Block\Product\TemplateSelector')
+                ->getSuggestedTemplates($this->getRequest()->getParam('label_part'))
         );
+        return $resultJson;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
index 884f386fe1040dfcc287f8d85920a94c6655a068..d5f4692587cbf7beae49275b8931598d7402d907 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php
@@ -26,17 +26,36 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Upsell extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
     /**
      * Get upsell products grid and serializer block
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->getLayout()->getBlock('catalog.product.edit.tab.upsell')
+        $resultLayout = $this->resultLayoutFactory->create();
+        $resultLayout->getLayout()->getBlock('catalog.product.edit.tab.upsell')
             ->setProductsUpsell($this->getRequest()->getPost('products_upsell', null));
-        $this->_view->renderLayout();
+        return $resultLayout;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
index 0d169fa91ed384ac748d4095efe598e8d5851e00..32f278899c12f01709d2f343770901010f3a2f52 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php
@@ -26,17 +26,36 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class UpsellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\View\Result\LayoutFactory
+     */
+    protected $resultLayoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultLayoutFactory = $resultLayoutFactory;
+    }
+
     /**
      * Get upsell products grid
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Layout
      */
     public function execute()
     {
         $this->productBuilder->build($this->getRequest());
-        $this->_view->loadLayout();
-        $this->_view->getLayout()->getBlock('catalog.product.edit.tab.upsell')
+        $resultLayout = $this->resultLayoutFactory->create();
+        $resultLayout->getLayout()->getBlock('catalog.product.edit.tab.upsell')
             ->setProductsRelated($this->getRequest()->getPost('products_upsell', null));
-        $this->_view->renderLayout();
+        return $resultLayout;
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
index 8345786785142f8b3612c0f803dcdd9332db8d24..a6fe7991178e41801a6372d9810df9282bca4bba 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php
@@ -39,27 +39,43 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product
      */
     protected $productValidator;
 
+    /**
+     * @var \Magento\Framework\Controller\Result\JSONFactory
+     */
+    protected $resultJsonFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
     /**
      * @param Action\Context $context
      * @param Builder $productBuilder
      * @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
      * @param \Magento\Catalog\Model\Product\Validator $productValidator
+     * @param \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
      */
     public function __construct(
         \Magento\Backend\App\Action\Context $context,
         Product\Builder $productBuilder,
         \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
-        \Magento\Catalog\Model\Product\Validator $productValidator
+        \Magento\Catalog\Model\Product\Validator $productValidator,
+        \Magento\Framework\Controller\Result\JSONFactory $resultJsonFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
     ) {
         $this->_dateFilter = $dateFilter;
         $this->productValidator = $productValidator;
         parent::__construct($context, $productBuilder);
+        $this->resultJsonFactory = $resultJsonFactory;
+        $this->layoutFactory = $layoutFactory;
     }
 
     /**
      * Validate product
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\JSON
      */
     public function execute()
     {
@@ -121,11 +137,12 @@ class Validate extends \Magento\Catalog\Controller\Adminhtml\Product
             $response->setMessage($e->getMessage());
         } catch (\Exception $e) {
             $this->messageManager->addError($e->getMessage());
-            $this->_view->getLayout()->initMessages();
+            $layout = $this->layoutFactory->create();
+            $layout->initMessages();
             $response->setError(true);
-            $response->setHtmlMessage($this->_view->getLayout()->getMessagesBlock()->getGroupedHtml());
+            $response->setHtmlMessage($layout->getMessagesBlock()->getGroupedHtml());
         }
 
-        $this->getResponse()->representJson($response->toJson());
+        return $this->resultJsonFactory->create()->setJsonData($response->toJson());
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
index 967cc931b473bd1c5588893eac4f721317e97d30..c3cff2d05f3f248f16e7dc4156ef9f8f90ed54f9 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Widget/Chooser.php
@@ -26,10 +26,35 @@ namespace Magento\Catalog\Controller\Adminhtml\Product\Widget;
 
 class Chooser extends \Magento\Backend\App\Action
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * Chooser Source action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
@@ -37,43 +62,43 @@ class Chooser extends \Magento\Backend\App\Action
         $massAction = $this->getRequest()->getParam('use_massaction', false);
         $productTypeId = $this->getRequest()->getParam('product_type_id', null);
 
-        $productsGrid = $this->_view->getLayout()->createBlock(
+        $layout = $this->layoutFactory->create();
+        $productsGrid = $layout->createBlock(
             'Magento\Catalog\Block\Adminhtml\Product\Widget\Chooser',
             '',
-            array(
-                'data' => array(
+            [
+                'data' => [
                     'id' => $uniqId,
                     'use_massaction' => $massAction,
                     'product_type_id' => $productTypeId,
                     'category_id' => $this->getRequest()->getParam('category_id')
-                )
-            )
+                ]
+            ]
         );
 
         $html = $productsGrid->toHtml();
 
         if (!$this->getRequest()->getParam('products_grid')) {
-            $categoriesTree = $this->_view->getLayout()->createBlock(
+            $categoriesTree = $layout->createBlock(
                 'Magento\Catalog\Block\Adminhtml\Category\Widget\Chooser',
                 '',
-                array(
-                    'data' => array(
+                [
+                    'data' => [
                         'id' => $uniqId . 'Tree',
                         'node_click_listener' => $productsGrid->getCategoryClickListenerJs(),
                         'with_empty_node' => true
-                    )
-                )
+                    ]
+                ]
             );
 
-            $html = $this->_view->getLayout()->createBlock(
-                'Magento\Catalog\Block\Adminhtml\Product\Widget\Chooser\Container'
-            )->setTreeHtml(
-                $categoriesTree->toHtml()
-            )->setGridHtml(
-                $html
-            )->toHtml();
+            $html = $layout->createBlock('Magento\Catalog\Block\Adminhtml\Product\Widget\Chooser\Container')
+                ->setTreeHtml($categoriesTree->toHtml())
+                ->setGridHtml($html)
+                ->toHtml();
         }
 
-        $this->getResponse()->setBody($html);
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($html);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
index 3351bb8577dca852369abf023ca1f674132aa3ca..900489a154be865877b6a5934e150857da8e9f58 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Wysiwyg.php
@@ -26,35 +26,60 @@ namespace Magento\Catalog\Controller\Adminhtml\Product;
 
 class Wysiwyg extends \Magento\Catalog\Controller\Adminhtml\Product
 {
+    /**
+     * @var \Magento\Framework\Controller\Result\RawFactory
+     */
+    protected $resultRawFactory;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder
+     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
+     * @param \Magento\Framework\View\LayoutFactory $layoutFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
+        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
+        \Magento\Framework\View\LayoutFactory $layoutFactory
+    ) {
+        parent::__construct($context, $productBuilder);
+        $this->resultRawFactory = $resultRawFactory;
+        $this->layoutFactory = $layoutFactory;
+    }
+
     /**
      * WYSIWYG editor action for ajax request
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Raw
      */
     public function execute()
     {
         $elementId = $this->getRequest()->getParam('element_id', md5(microtime()));
         $storeId = $this->getRequest()->getParam('store_id', 0);
-        $storeMediaUrl = $this->_objectManager->get(
-            'Magento\Framework\StoreManagerInterface'
-        )->getStore(
-            $storeId
-        )->getBaseUrl(
-            \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
-        );
+        $storeMediaUrl = $this->_objectManager->get('Magento\Framework\StoreManagerInterface')
+            ->getStore($storeId)
+            ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
 
-        $content = $this->_view->getLayout()->createBlock(
+        $content = $this->layoutFactory->create()->createBlock(
             'Magento\Catalog\Block\Adminhtml\Helper\Form\Wysiwyg\Content',
             '',
-            array(
-                'data' => array(
+            [
+                'data' => [
                     'editor_element_id' => $elementId,
                     'store_id' => $storeId,
                     'store_media_url' => $storeMediaUrl
-                )
-            )
+                ]
+            ]
         );
 
-        $this->getResponse()->setBody($content->toHtml());
+        /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
+        $resultRaw = $this->resultRawFactory->create();
+        return $resultRaw->setContents($content->toHtml());
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Category/View.php b/app/code/Magento/Catalog/Controller/Category/View.php
index ef119e611cbdef10fb75fcaf9e0b905be2d1018a..4f927a51e5c7936fe484ecc36dda05b155d81508 100644
--- a/app/code/Magento/Catalog/Controller/Category/View.php
+++ b/app/code/Magento/Catalog/Controller/Category/View.php
@@ -24,6 +24,8 @@
  */
 namespace Magento\Catalog\Controller\Category;
 
+use Magento\Framework\View\Result\PageFactory;
+
 class View extends \Magento\Framework\App\Action\Action
 {
     /**
@@ -59,10 +61,19 @@ class View extends \Magento\Framework\App\Action\Action
      */
     protected $_storeManager;
 
-    /** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator */
+    /**
+     * @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator
+     */
     protected $categoryUrlPathGenerator;
 
     /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\Action\Context $context
      * @param \Magento\Catalog\Model\CategoryFactory $categoryFactory
      * @param \Magento\Catalog\Model\Design $catalogDesign
@@ -70,6 +81,7 @@ class View extends \Magento\Framework\App\Action\Action
      * @param \Magento\Framework\Registry $coreRegistry
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      */
     public function __construct(
         \Magento\Framework\App\Action\Context $context,
@@ -78,7 +90,8 @@ class View extends \Magento\Framework\App\Action\Action
         \Magento\Catalog\Model\Session $catalogSession,
         \Magento\Framework\Registry $coreRegistry,
         \Magento\Framework\StoreManagerInterface $storeManager,
-        \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
+        \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator,
+        PageFactory $resultPageFactory
     ) {
         $this->_storeManager = $storeManager;
         $this->_categoryFactory = $categoryFactory;
@@ -86,6 +99,7 @@ class View extends \Magento\Framework\App\Action\Action
         $this->_catalogSession = $catalogSession;
         $this->_coreRegistry = $coreRegistry;
         $this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
+        $this->resultPageFactory = $resultPageFactory;
         parent::__construct($context);
     }
 
@@ -129,7 +143,7 @@ class View extends \Magento\Framework\App\Action\Action
     /**
      * Category view action
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Page
      */
     public function execute()
     {
@@ -140,7 +154,6 @@ class View extends \Magento\Framework\App\Action\Action
         $category = $this->_initCategory();
         if ($category) {
             $settings = $this->_catalogDesign->getDesignSettings($category);
-            $pageConfig = $this->_view->getPage()->getConfig();
 
             // apply custom design
             if ($settings->getCustomDesign()) {
@@ -149,12 +162,11 @@ class View extends \Magento\Framework\App\Action\Action
 
             $this->_catalogSession->setLastViewedCategoryId($category->getId());
 
+            $page = $this->resultPageFactory->create();
             // apply custom layout (page) template once the blocks are generated
             if ($settings->getPageLayout()) {
-                $pageConfig->setPageLayout($settings->getPageLayout());
+                $page->getConfig()->setPageLayout($settings->getPageLayout());
             }
-            $this->_view->getPage()->initLayout();
-            $update = $this->_view->getLayout()->getUpdate();
             if ($category->getIsAnchor()) {
                 $type = $category->hasChildren() ? 'layered' : 'layered_without_children';
             } else {
@@ -164,29 +176,24 @@ class View extends \Magento\Framework\App\Action\Action
             if (!$category->hasChildren()) {
                 // Two levels removed from parent.  Need to add default page type.
                 $parentType = strtok($type, '_');
-                $this->_view->addPageLayoutHandles(array('type' => $parentType));
+                $page->addPageLayoutHandles(array('type' => $parentType));
             }
-            $this->_view->addPageLayoutHandles(array('type' => $type, 'id' => $category->getId()));
-
-            $this->_view->loadLayoutUpdates();
+            $page->addPageLayoutHandles(array('type' => $type, 'id' => $category->getId()));
 
             // apply custom layout update once layout is loaded
             $layoutUpdates = $settings->getLayoutUpdates();
             if ($layoutUpdates && is_array($layoutUpdates)) {
                 foreach ($layoutUpdates as $layoutUpdate) {
-                    $update->addUpdate($layoutUpdate);
+                    $page->addUpdate($layoutUpdate);
                 }
             }
 
-            $this->_view->generateLayoutXml();
-            $this->_view->generateLayoutBlocks();
-
-            $pageConfig->addBodyClass('page-products')
+            $page->getConfig()->addBodyClass('page-products')
                 ->addBodyClass('categorypath-' . $this->categoryUrlPathGenerator->getUrlPath($category))
                 ->addBodyClass('category-' . $category->getUrlKey());
 
-            $this->_view->getLayout()->initMessages();
-            $this->_view->renderLayout();
+            $page->getLayout()->initMessages();
+            return $page;
         } elseif (!$this->getResponse()->isRedirect()) {
             $this->_forward('noroute');
         }
diff --git a/app/code/Magento/Catalog/Controller/Index/Index.php b/app/code/Magento/Catalog/Controller/Index/Index.php
index 0d79d137a5b1ed44f0702b926fe32e73a2243d9d..63fc24cf4ebaff4ea1799bf863a03005746a324a 100644
--- a/app/code/Magento/Catalog/Controller/Index/Index.php
+++ b/app/code/Magento/Catalog/Controller/Index/Index.php
@@ -24,15 +24,38 @@
  */
 namespace Magento\Catalog\Controller\Index;
 
+use Magento\Framework\App\Action\Context;
+use Magento\Framework\Controller\Result;
+
 class Index extends \Magento\Framework\App\Action\Action
 {
+    /**
+     * @var Result\Redirect
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * Constructor
+     *
+     * @param Context $context
+     * @param Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        Context $context,
+        Result\RedirectFactory $resultRedirectFactory
+    ) {
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        parent::__construct($context);
+    }
+
     /**
      * Index action
      *
-     * @return void
+     * @return $this
      */
     public function execute()
     {
-        $this->_redirect('/');
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setPath('/');
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product.php b/app/code/Magento/Catalog/Controller/Product.php
index 1c583863ab9cb005bd7629f9a935bdd5facaef3e..f1c16e7a12d66cd33ab6a4cee2195755025af510 100644
--- a/app/code/Magento/Catalog/Controller/Product.php
+++ b/app/code/Magento/Catalog/Controller/Product.php
@@ -26,8 +26,9 @@
 namespace Magento\Catalog\Controller;
 
 use Magento\Catalog\Model\Product as ModelProduct;
+use \Magento\Catalog\Controller\Product\View\ViewInterface;
 
-class Product extends \Magento\Framework\App\Action\Action implements \Magento\Catalog\Controller\Product\View\ViewInterface
+class Product extends \Magento\Framework\App\Action\Action implements ViewInterface
 {
     /**
      * Initialize requested product object
@@ -42,6 +43,8 @@ class Product extends \Magento\Framework\App\Action\Action implements \Magento\C
         $params = new \Magento\Framework\Object();
         $params->setCategoryId($categoryId);
 
-        return $this->_objectManager->get('Magento\Catalog\Helper\Product')->initProduct($productId, $this, $params);
+        /** @var \Magento\Catalog\Helper\Product $product */
+        $product = $this->_objectManager->get('Magento\Catalog\Helper\Product');
+        return $product->initProduct($productId, $this, $params);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare.php b/app/code/Magento/Catalog/Controller/Product/Compare.php
index d814773bb34540f4d53895d246545ba4bcf74b61..2c64c613bc16d3ec22d9fa0f7936f3e69a23eff8 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare.php
@@ -24,6 +24,8 @@
 namespace Magento\Catalog\Controller\Product;
 
 use Magento\Core\App\Action\FormKeyValidator;
+use Magento\Framework\Controller\Result;
+use Magento\Framework\View\Result\PageFactory;
 
 /**
  * Catalog compare controller
@@ -99,6 +101,18 @@ class Compare extends \Magento\Framework\App\Action\Action
     protected $_formKeyValidator;
 
     /**
+     * @var Result\Redirect
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\Action\Context $context
      * @param \Magento\Catalog\Model\Product\Compare\ItemFactory $compareItemFactory
      * @param \Magento\Catalog\Model\ProductFactory $productFactory
@@ -109,6 +123,8 @@ class Compare extends \Magento\Framework\App\Action\Action
      * @param \Magento\Catalog\Model\Session $catalogSession
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param FormKeyValidator $formKeyValidator
+     * @param \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      */
     public function __construct(
         \Magento\Framework\App\Action\Context $context,
@@ -120,7 +136,9 @@ class Compare extends \Magento\Framework\App\Action\Action
         \Magento\Catalog\Model\Product\Compare\ListCompare $catalogProductCompareList,
         \Magento\Catalog\Model\Session $catalogSession,
         \Magento\Framework\StoreManagerInterface $storeManager,
-        FormKeyValidator $formKeyValidator
+        FormKeyValidator $formKeyValidator,
+        Result\RedirectFactory $resultRedirectFactory,
+        PageFactory $resultPageFactory
     ) {
         $this->_storeManager = $storeManager;
         $this->_compareItemFactory = $compareItemFactory;
@@ -131,6 +149,8 @@ class Compare extends \Magento\Framework\App\Action\Action
         $this->_catalogProductCompareList = $catalogProductCompareList;
         $this->_catalogSession = $catalogSession;
         $this->_formKeyValidator = $formKeyValidator;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultPageFactory = $resultPageFactory;
         parent::__construct($context);
     }
 
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
index ba8d8efe36d5bd5f82777c40f34ad82e72bd69d4..c077ff0c66f6e0354b7ec78ea434acff810203d0 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
@@ -29,13 +29,13 @@ class Add extends \Magento\Catalog\Controller\Product\Compare
     /**
      * Add item to compare list
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
+        $resultRedirect = $this->resultRedirectFactory->create();
         if (!$this->_formKeyValidator->validate($this->getRequest())) {
-            $this->getResponse()->setRedirect($this->_redirect->getRefererUrl());
-            return;
+            return $resultRedirect->setRefererUrl();
         }
 
         $productId = (int)$this->getRequest()->getParam('product');
@@ -53,6 +53,6 @@ class Add extends \Magento\Catalog\Controller\Product\Compare
 
             $this->_objectManager->get('Magento\Catalog\Helper\Product\Compare')->calculate();
         }
-        $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl());
+        return $resultRedirect->setRefererOrBaseUrl();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php b/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
index cebf3b5340a57637f82f07d5d5f69ab5d831d9ca..42f2fa30faef1d5bd5e45a2855e30941dfcc0e1f 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Clear.php
@@ -29,7 +29,7 @@ class Clear extends \Magento\Catalog\Controller\Product\Compare
     /**
      * Remove all items from comparison list
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -54,6 +54,7 @@ class Clear extends \Magento\Catalog\Controller\Product\Compare
             $this->messageManager->addException($e, __('Something went wrong  clearing the comparison list.'));
         }
 
-        $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl());
+        $resultRedirect = $this->resultRedirectFactory->create();
+        return $resultRedirect->setRefererOrBaseUrl();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Index.php b/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
index 61ffc81e66f6268df61bfc4eaf90197c969d6610..e9fe01219ea6e22ef58f5b7bd3aa850387024fbd 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Index.php
@@ -29,7 +29,7 @@ class Index extends \Magento\Catalog\Controller\Product\Compare
     /**
      * Compare index action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -47,11 +47,9 @@ class Index extends \Magento\Catalog\Controller\Product\Compare
             /** @var \Magento\Catalog\Model\Product\Compare\ListCompare $list */
             $list = $this->_catalogProductCompareList;
             $list->addProducts($items);
-            $this->_redirect('*/*/*');
-            return;
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('*/*/*');
         }
-
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php b/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
index b4c2478c5c94ed2780c3ca2ec38469fd7ccd8595..bfa123880ffad75bd7caa6beae9e542c39aa43b7 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Remove.php
@@ -29,7 +29,7 @@ class Remove extends \Magento\Catalog\Controller\Product\Compare
     /**
      * Remove item from compare list
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
@@ -55,7 +55,8 @@ class Remove extends \Magento\Catalog\Controller\Product\Compare
                 $helper = $this->_objectManager->get('Magento\Catalog\Helper\Product\Compare');
                 if ($item->getId()) {
                     $item->delete();
-                    $productName = $this->_objectManager->get('Magento\Framework\Escaper')->escapeHtml($product->getName());
+                    $productName = $this->_objectManager->get('Magento\Framework\Escaper')
+                        ->escapeHtml($product->getName());
                     $this->messageManager->addSuccess(
                         __('You removed product %1 from the comparison list.', $productName)
                     );
@@ -69,7 +70,8 @@ class Remove extends \Magento\Catalog\Controller\Product\Compare
         }
 
         if (!$this->getRequest()->getParam('isAjax', false)) {
-            $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl());
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setRefererOrBaseUrl();
         }
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/Gallery.php b/app/code/Magento/Catalog/Controller/Product/Gallery.php
index 8e160cf37464cb8e2c7646fc9b776745ceb81f97..6cf37ab74e9c7494a7ee13d68538f975c19e8460 100644
--- a/app/code/Magento/Catalog/Controller/Product/Gallery.php
+++ b/app/code/Magento/Catalog/Controller/Product/Gallery.php
@@ -24,24 +24,64 @@
  */
 namespace Magento\Catalog\Controller\Product;
 
+use Magento\Framework\App\Action\Context;
+use Magento\Framework\Controller\Result;
+use Magento\Framework\View\Result\PageFactory;
+
 class Gallery extends \Magento\Catalog\Controller\Product
 {
+    /**
+     * @var Result\Redirect
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * Constructor
+     *
+     * @param Context $context
+     * @param Result\RedirectFactory $resultRedirectFactory
+     * @param Result\ForwardFactory $resultForwardFactory
+     * @param PageFactory $resultPageFactory
+     */
+    public function __construct(
+        Context $context,
+        Result\RedirectFactory $resultRedirectFactory,
+        Result\ForwardFactory $resultForwardFactory,
+        PageFactory $resultPageFactory
+    ) {
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultForwardFactory = $resultForwardFactory;
+        $this->resultPageFactory = $resultPageFactory;
+        parent::__construct($context);
+    }
+
     /**
      * View product gallery action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\ResultInterface
      */
     public function execute()
     {
+        $result = null;
         if (!$this->_initProduct()) {
             if (isset($_GET['store']) && !$this->getResponse()->isRedirect()) {
-                $this->_redirect('');
+                $result = $this->resultRedirectFactory->create();
+                $result->setPath('');
             } elseif (!$this->getResponse()->isRedirect()) {
-                $this->_forward('noroute');
+                $result = $this->resultForwardFactory->create();
+                $result->forward('noroute');
             }
-            return;
         }
-        $this->_view->loadLayout();
-        $this->_view->renderLayout();
+        return $result ?: $this->resultPageFactory->create();
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Product/View.php b/app/code/Magento/Catalog/Controller/Product/View.php
index b5773bd29a2c7660eaab16ef5bf1fcd8fb642b66..7376a50b0a634070eebff86f5a2e197a1082bdc6 100644
--- a/app/code/Magento/Catalog/Controller/Product/View.php
+++ b/app/code/Magento/Catalog/Controller/Product/View.php
@@ -24,26 +24,76 @@
  */
 namespace Magento\Catalog\Controller\Product;
 
+use Magento\Framework\App\Action\Context;
+use Magento\Framework\Controller\Result;
+use Magento\Framework\View\Result\PageFactory;
+
 class View extends \Magento\Catalog\Controller\Product
 {
+    /**
+     * @var \Magento\Catalog\Helper\Product\View
+     */
+    protected $viewHelper;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\Redirect
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @var \Magento\Framework\Controller\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * Constructor
+     *
+     * @param Context $context
+     * @param \Magento\Catalog\Helper\Product\View $viewHelper
+     * @param \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory
+     * @param \Magento\Framework\Controller\Result\ForwardFactory $resultForwardFactory
+     * @param PageFactory $resultPageFactory
+     */
+    public function __construct(
+        Context $context,
+        \Magento\Catalog\Helper\Product\View $viewHelper,
+        \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory,
+        \Magento\Framework\Controller\Result\ForwardFactory $resultForwardFactory,
+        PageFactory $resultPageFactory
+    ) {
+        $this->viewHelper = $viewHelper;
+        $this->resultRedirectFactory = $resultRedirectFactory;
+        $this->resultForwardFactory = $resultForwardFactory;
+        $this->resultPageFactory = $resultPageFactory;
+        parent::__construct($context);
+    }
+
     /**
      * Redirect if product failed to load
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\Controller\Result\Forward
      */
     protected function noProductRedirect()
     {
         if (isset($_GET['store']) && !$this->getResponse()->isRedirect()) {
-            $this->_redirect('');
+            $resultRedirect = $this->resultRedirectFactory->create();
+            return $resultRedirect->setPath('');
         } elseif (!$this->getResponse()->isRedirect()) {
-            $this->_forward('noroute');
+            $resultForward = $this->resultForwardFactory->create();
+            $resultForward->forward('noroute');
+            return $resultForward;
         }
     }
 
     /**
      * Product view action
      *
-     * @return void
+     * @return \Magento\Framework\Controller\Result\Forward|\Magento\Framework\Controller\Result\Redirect
      */
     public function execute()
     {
@@ -55,33 +105,35 @@ class View extends \Magento\Catalog\Controller\Product
         if ($this->getRequest()->isPost() && $this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
             $product = $this->_initProduct();
             if (!$product) {
-                $this->noProductRedirect();
+                return $this->noProductRedirect();
             }
             if ($specifyOptions) {
                 $notice = $product->getTypeInstance()->getSpecifyOptionMessage();
                 $this->messageManager->addNotice($notice);
             }
-            $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl());
-            return;
+            $resultRedirect = $this->resultRedirectFactory->create();
+            $resultRedirect->setRefererOrBaseUrl();
+            return $resultRedirect;
         }
 
         // Prepare helper and params
-        /** @var \Magento\Catalog\Helper\Product\View $viewHelper */
-        $viewHelper = $this->_objectManager->get('Magento\Catalog\Helper\Product\View');
-
         $params = new \Magento\Framework\Object();
         $params->setCategoryId($categoryId);
         $params->setSpecifyOptions($specifyOptions);
 
         // Render page
         try {
-            $viewHelper->prepareAndRender($productId, $this, $params);
+            $page = $this->resultPageFactory->create(false, ['isIsolated' => true]);
+            $this->viewHelper->prepareAndRender($page, $productId, $this, $params);
+            return $page;
         } catch (\Exception $e) {
-            if ($e->getCode() == $viewHelper->ERR_NO_PRODUCT_LOADED) {
-                $this->noProductRedirect();
+            if ($e->getCode() == $this->viewHelper->ERR_NO_PRODUCT_LOADED) {
+                return $this->noProductRedirect();
             } else {
                 $this->_objectManager->get('Magento\Framework\Logger')->logException($e);
-                $this->_forward('noroute');
+                $resultForward = $this->resultForwardFactory->create();
+                $resultForward->forward('noroute');
+                return $resultForward;
             }
         }
     }
diff --git a/app/code/Magento/Catalog/Helper/Product/View.php b/app/code/Magento/Catalog/Helper/Product/View.php
index e9ee09ceaa9732808b1490e32f58f75c0c876bab..960c620f4bb67ca5394b8d7e7bd3542f43f59bd3 100644
--- a/app/code/Magento/Catalog/Helper/Product/View.php
+++ b/app/code/Magento/Catalog/Helper/Product/View.php
@@ -24,6 +24,8 @@
 
 namespace Magento\Catalog\Helper\Product;
 
+use Magento\Framework\View\Result\Page as ResultPage;
+
 /**
  * Catalog category helper
  */
@@ -69,26 +71,24 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
      */
     protected $_catalogSession;
 
-    /**
-     * @var \Magento\Framework\App\ViewInterface
-     */
-    protected $_view;
-
     /**
      * @var \Magento\Framework\Message\ManagerInterface
      */
     protected $messageManager;
 
-    /** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator */
+    /**
+     * @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator
+     */
     protected $categoryUrlPathGenerator;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\Helper\Context $context
      * @param \Magento\Catalog\Model\Session $catalogSession
      * @param \Magento\Catalog\Model\Design $catalogDesign
      * @param \Magento\Catalog\Helper\Product $catalogProduct
      * @param \Magento\Framework\Registry $coreRegistry
-     * @param \Magento\Framework\App\ViewInterface $view
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
      * @param array $messageGroups
@@ -99,7 +99,6 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
         \Magento\Catalog\Model\Design $catalogDesign,
         \Magento\Catalog\Helper\Product $catalogProduct,
         \Magento\Framework\Registry $coreRegistry,
-        \Magento\Framework\App\ViewInterface $view,
         \Magento\Framework\Message\ManagerInterface $messageManager,
         \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator,
         array $messageGroups = array()
@@ -108,7 +107,6 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
         $this->_catalogDesign = $catalogDesign;
         $this->_catalogProduct = $catalogProduct;
         $this->_coreRegistry = $coreRegistry;
-        $this->_view = $view;
         $this->messageGroups = $messageGroups;
         $this->messageManager = $messageManager;
         $this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
@@ -116,18 +114,17 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
     }
 
     /**
-     * Inits layout for viewing product page
+     * Init layout for viewing product page
      *
+     * @param \Magento\Framework\View\Result\Page $resultPage
      * @param \Magento\Catalog\Model\Product $product
-     * @param \Magento\Framework\App\Action\Action $controller
      * @param null|\Magento\Framework\Object $params
-     *
      * @return \Magento\Catalog\Helper\Product\View
      */
-    public function initProductLayout($product, $controller, $params = null)
+    public function initProductLayout(ResultPage $resultPage, $product, $params = null)
     {
         $settings = $this->_catalogDesign->getDesignSettings($product);
-        $pageConfig = $this->_view->getPage()->getConfig();
+        $pageConfig = $resultPage->getConfig();
 
         if ($settings->getCustomDesign()) {
             $this->_catalogDesign->applyCustomDesign($settings->getCustomDesign());
@@ -139,32 +136,30 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
         }
 
         // Load default page handles and page configurations
-        $this->_view->getPage()->initLayout();
-        $update = $this->_view->getLayout()->getUpdate();
-
         if ($params && $params->getBeforeHandles()) {
             foreach ($params->getBeforeHandles() as $handle) {
-                $this->_view->addPageLayoutHandles(
+                $resultPage->addPageLayoutHandles(
                     array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()),
                     $handle
                 );
             }
         }
 
-        $this->_view->addPageLayoutHandles(
+        $resultPage->addPageLayoutHandles(
             array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId())
         );
 
         if ($params && $params->getAfterHandles()) {
             foreach ($params->getAfterHandles() as $handle) {
-                $this->_view->addPageLayoutHandles(
+                $resultPage->addPageLayoutHandles(
                     array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()),
                     $handle
                 );
             }
         }
-        $this->_view->loadLayoutUpdates();
+
         // Apply custom layout update once layout is loaded
+        $update = $resultPage->getLayout()->getUpdate();
         $layoutUpdates = $settings->getLayoutUpdates();
         if ($layoutUpdates) {
             if (is_array($layoutUpdates)) {
@@ -174,11 +169,7 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
             }
         }
 
-        $this->_view->generateLayoutXml();
-        $this->_view->generateLayoutBlocks();
-
         $currentCategory = $this->_coreRegistry->registry('current_category');
-
         $controllerClass = $this->_request->getFullActionName();
         if ($controllerClass != 'catalog-product-view') {
             $pageConfig->addBodyClass('catalog-product-view');
@@ -201,14 +192,14 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
      *   - 'specify_options' - boolean, whether to show 'Specify options' message
      *   - 'configure_mode' - boolean, whether we're in Configure-mode to edit product configuration
      *
+     * @param \Magento\Framework\View\Result\Page $resultPage
      * @param int $productId
      * @param \Magento\Framework\App\Action\Action $controller
      * @param null|\Magento\Framework\Object $params
-     *
-     * @return \Magento\Catalog\Helper\Product\View
      * @throws \Magento\Framework\Model\Exception
+     * @return \Magento\Catalog\Helper\Product\View
      */
-    public function prepareAndRender($productId, $controller, $params = null)
+    public function prepareAndRender(ResultPage $resultPage, $productId, $controller, $params = null)
     {
         // Prepare data
         $productHelper = $this->_catalogProduct;
@@ -235,18 +226,16 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper
 
         $this->_catalogSession->setLastViewedProductId($product->getId());
 
-        $this->initProductLayout($product, $controller, $params);
+        $this->initProductLayout($resultPage, $product, $params);
 
         if ($controller instanceof \Magento\Catalog\Controller\Product\View\ViewInterface) {
-            $this->_view->getLayout()->initMessages($this->messageGroups);
+            $resultPage->getLayout()->initMessages($this->messageGroups);
         } else {
             throw new \Magento\Framework\Model\Exception(
                 __('Bad controller interface for showing product'),
                 $this->ERR_BAD_CONTROLLER_INTERFACE
             );
         }
-        $this->_view->renderLayout();
-
         return $this;
     }
 }
diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json
index c15d2d0ceead3ac53da02687a0123a0b39353f4b..89194dacc1fd8895a012948ddcb70a5d1999da34 100644
--- a/app/code/Magento/Catalog/composer.json
+++ b/app/code/Magento/Catalog/composer.json
@@ -3,33 +3,33 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-indexer": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-log": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-msrp": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-catalog-rule": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-product-alert": "0.1.0-alpha101",
-        "magento/module-url-rewrite": "0.1.0-alpha101",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-indexer": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-log": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-msrp": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-catalog-rule": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-product-alert": "0.1.0-alpha102",
+        "magento/module-url-rewrite": "0.1.0-alpha102",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Catalog/etc/webapi.xml b/app/code/Magento/Catalog/etc/webapi.xml
index 7279d6433d8aca35583cf93b2de640273b89df6b..6f3bd0316793249b429ee621501ff2234315d940 100644
--- a/app/code/Magento/Catalog/etc/webapi.xml
+++ b/app/code/Magento/Catalog/etc/webapi.xml
@@ -139,7 +139,7 @@
             <resource ref="Magento_Catalog::sets"/>
         </resources>
     </route>
-    <route url="/V1/products/attribute-sets" method="PUT">
+    <route url="/V1/products/attribute-sets/:id" method="PUT">
         <service class="Magento\Catalog\Service\V1\Product\AttributeSet\WriteServiceInterface" method="update"/>
         <resources>
             <resource ref="Magento_Catalog::sets"/>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml
index 94e39a554347af6f95db3977b36de2b733da3469..b8d47aba4cbc668dcd54b880d1c00e0c38bd8047 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml
@@ -23,33 +23,35 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="editor"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <link src="Magento_Catalog::js/bootstrap/category-edit.js"/>
     </head>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher" name="category.store.switcher" template="Magento_Backend::store/switcher.phtml">
-            <!--<arguments>-->
+    <update handle="editor"/>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="category.store.switcher" template="Magento_Backend::store/switcher.phtml">
+                <!--<arguments>-->
                 <!--<argument name="switch_url" xsi:type="url" path="catalog/*/*">-->
-                    <!--<param name="_current" xsi:type="boolean">true</param>-->
-                    <!--<param name="_query" xsi:type="boolean">false</param>-->
-                    <!--<param name="store" xsi:type="null" />-->
+                <!--<param name="_current" xsi:type="boolean">true</param>-->
+                <!--<param name="_query" xsi:type="boolean">false</param>-->
+                <!--<param name="store" xsi:type="null" />-->
                 <!--</argument>-->
-            <!--</arguments>-->
-        </block>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Catalog\Block\Adminhtml\Category\Tree" name="category.tree" template="catalog/category/tree.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Category\Edit" name="category.edit" template="catalog/category/edit.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Framework\View\Element\Template" template="Magento_Catalog::catalog/wysiwyg/js.phtml" name="catalog.wysiwyg.js"/>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="catalog_category_page_head_components" template="Magento_Catalog::js/components.phtml"/>
-    </referenceBlock>
+                <!--</arguments>-->
+            </block>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Catalog\Block\Adminhtml\Category\Tree" name="category.tree" template="catalog/category/tree.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Category\Edit" name="category.edit" template="catalog/category/edit.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Framework\View\Element\Template" template="Magento_Catalog::catalog/wysiwyg/js.phtml" name="catalog.wysiwyg.js"/>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="catalog_category_page_head_components" template="Magento_Catalog::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_action_attribute_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_action_attribute_edit.xml
index 6cb1d4a83eec0cf4a2e9b2bd7956889c0c829cc0..0a642eeccb52cc5c018e1d873a6965c2de25f566 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_action_attribute_edit.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_action_attribute_edit.xml
@@ -23,30 +23,32 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tabs" name="attributes_tabs">
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Attributes" name="tab_attributes"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Inventory" name="tab_inventory" template="catalog/product/edit/action/inventory.phtml"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Websites" name="tab_websites" template="catalog/product/edit/action/websites.phtml"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">attributes</argument>
-                <argument name="block" xsi:type="string">tab_attributes</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">inventory</argument>
-                <argument name="block" xsi:type="string">tab_inventory</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">websites</argument>
-                <argument name="block" xsi:type="string">tab_websites</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute" name="attribute" template="catalog/product/edit/action/attribute.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tabs" name="attributes_tabs">
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Attributes" name="tab_attributes"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Inventory" name="tab_inventory" template="catalog/product/edit/action/inventory.phtml"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Websites" name="tab_websites" template="catalog/product/edit/action/websites.phtml"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">attributes</argument>
+                    <argument name="block" xsi:type="string">tab_attributes</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">inventory</argument>
+                    <argument name="block" xsi:type="string">tab_inventory</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">websites</argument>
+                    <argument name="block" xsi:type="string">tab_websites</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute" name="attribute" template="catalog/product/edit/action/attribute.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit.xml
index 098fe9b68d893f79b74e942a8f5bd7fa0e42bbd2..abe7a9d967f20a99043888250824d4c46f19acfe 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit.xml
@@ -23,22 +23,24 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tabs" name="attribute_edit_tabs">
-            <container label="Main" name="main">
-                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Main" as="base"/>
-                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced"/>
-                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
-            </container>
-            <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front"/>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit" name="attribute_edit_content"/>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" name="attribute_edit_js" template="Magento_Catalog::catalog/product/attribute/js.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tabs" name="attribute_edit_tabs">
+                <container label="Main" name="main">
+                    <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Main" as="base"/>
+                    <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced"/>
+                    <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
+                </container>
+                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front"/>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit" name="attribute_edit_content"/>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" name="attribute_edit_js" template="Magento_Catalog::catalog/product/attribute/js.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit_popup.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit_popup.xml
index a902d9089eb0f05972af927acf5adea09eeac83a..8ce25768bf589dd2f7b91a81a038edd278852746 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit_popup.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_attribute_edit_popup.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="left"/>
-    <referenceBlock name="attribute_edit_content">
-        <arguments>
-            <argument name="template" xsi:type="string">Magento_Catalog::catalog/product/attribute/form.phtml</argument>
-        </arguments>
-        <container name="form" label="Form">
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Main" as="main"/>
-            <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced-options"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
-            <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front-options"/>
-        </container>
-    </referenceBlock>
+    <body>
+        <remove name="left"/>
+        <referenceBlock name="attribute_edit_content">
+            <arguments>
+                <argument name="template" xsi:type="string">Magento_Catalog::catalog/product/attribute/form.phtml</argument>
+            </arguments>
+            <container name="form" label="Form">
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Main" as="main"/>
+                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced-options"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
+                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front-options"/>
+            </container>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_edit.xml
index 91dfa3bbae37915829df1d8f7caf202ef2607e01..ca45436b2398810392f0016afe8f64137208d14c 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_edit.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_edit.xml
@@ -23,18 +23,20 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_new"/>
-    <referenceBlock name="page-title">
-        <action method="setTitleClass">
-            <argument name="class" xsi:type="string">complex</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher">
-            <action method="setUseConfirm">
-                <argument name="params" xsi:type="string">1</argument>
+    <body>
+        <referenceBlock name="page-title">
+            <action method="setTitleClass">
+                <argument name="class" xsi:type="string">complex</argument>
             </action>
-        </block>
-    </referenceContainer>
+        </referenceBlock>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher">
+                <action method="setUseConfirm">
+                    <argument name="params" xsi:type="string">1</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_index.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_index.xml
index 3a4f710a23b67e29d2894fadd71f550f9d7e92e6..cdb585dcaffd1e3acbf08f533b26cb00d5690811 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_index.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_index.xml
@@ -24,29 +24,31 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="menu">
-        <action method="setActive">
-            <argument name="itemId" xsi:type="string">Magento_Catalog::catalog_products</argument>
-        </action>
-    </referenceBlock>
-    <referenceBlock name="page-title">
-        <action method="setTitleClass">
-            <argument name="class" xsi:type="string">complex</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher">
-            <action method="setUseConfirm">
-                <argument name="params" xsi:type="string">1</argument>
+    <body>
+        <referenceBlock name="menu">
+            <action method="setActive">
+                <argument name="itemId" xsi:type="string">Magento_Catalog::catalog_products</argument>
             </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product" name="products_list"/>
-    </referenceContainer>
-    <referenceContainer name="product.grid">
-        <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
-            <block class="Magento\Catalog\Block\Adminhtml\Rss\Grid\Link" name="grid.rss.link"/>
-        </block>
-    </referenceContainer>
+        </referenceBlock>
+        <referenceBlock name="page-title">
+            <action method="setTitleClass">
+                <argument name="class" xsi:type="string">complex</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher">
+                <action method="setUseConfirm">
+                    <argument name="params" xsi:type="string">1</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product" name="products_list"/>
+        </referenceContainer>
+        <referenceContainer name="product.grid">
+            <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
+                <block class="Magento\Catalog\Block\Adminhtml\Rss\Grid\Link" name="grid.rss.link"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml
index 316b3ea887bedbbbc7f731ae882d6f2d7c6f77ca..55128756aad616b4e2aea14ffca7ea5a8f53ec4d 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml
@@ -23,42 +23,44 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="editor"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <css src="Magento_Catalog::catalog/category-selector.css"/>
         <css src="Magento_Catalog::product/product.css"/>
         <link src="Magento_Catalog::js/bootstrap/product-new.js"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit" name="product_edit">
-            <container name="product-type-tabs" label="Tabs">
+    <update handle="editor"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit" name="product_edit">
+                <container name="product-type-tabs" label="Tabs">
             </container>
-        </block>
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\AttributeSet" name="attribute-set-info" template="Magento_Catalog::catalog/product/edit/attribute_set.phtml"/>
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\NewCategory" name="new-category" template="Magento_Catalog::catalog/product/edit/category/new/form.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Tabs" name="product_tabs">
-            <block class="Magento\Backend\Block\Widget\Tab" name="product_tabs.customer_options" as="customer_options">
-                <arguments>
-                    <argument name="label" xsi:type="string" translate="true">Custom Options</argument>
-                    <argument name="url" xsi:type="url" path="catalog/*/options">
-                        <param name="_current">1</param>
-                    </argument>
-                    <argument name="class" xsi:type="string">ajax</argument>
-                </arguments>
             </block>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Alerts" name="product_tabs.product-alerts" as="product-alerts">
-                <arguments>
-                    <argument name="label" xsi:type="string" translate="true">Product Alerts</argument>
-                </arguments>
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\AttributeSet" name="attribute-set-info" template="Magento_Catalog::catalog/product/edit/attribute_set.phtml"/>
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\NewCategory" name="new-category" template="Magento_Catalog::catalog/product/edit/category/new/form.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Tabs" name="product_tabs">
+                <block class="Magento\Backend\Block\Widget\Tab" name="product_tabs.customer_options" as="customer_options">
+                    <arguments>
+                        <argument name="label" xsi:type="string" translate="true">Custom Options</argument>
+                        <argument name="url" xsi:type="url" path="catalog/*/options">
+                            <param name="_current">1</param>
+                        </argument>
+                        <argument name="class" xsi:type="string">ajax</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Alerts" name="product_tabs.product-alerts" as="product-alerts">
+                    <arguments>
+                        <argument name="label" xsi:type="string" translate="true">Product Alerts</argument>
+                    </arguments>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Js" name="catalog_product_js" template="catalog/product/js.phtml"/>
-        <block class="Magento\Framework\View\Element\Template" template="Magento_Catalog::catalog/wysiwyg/js.phtml"/>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Edit\Js" name="catalog_product_js" template="catalog/product/js.phtml"/>
+            <block class="Magento\Framework\View\Element\Template" template="Magento_Catalog::catalog/wysiwyg/js.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_block.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_block.xml
index aaaa6794acf7cd8d339380cff02359789f71fa9c..882d8a8721ba2148578b681eda951d0aab2a2bc0 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_block.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_block.xml
@@ -24,34 +24,36 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.catalog.product.set.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.catalog.product.set.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">setGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Eav\Model\Resource\Entity\Attribute\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">set_name</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.catalog.product.set.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.catalog.product.set.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">setGrid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">catalog/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getAttributeSetId</item>
-                        </item>
-                    </argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Eav\Model\Resource\Entity\Attribute\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">set_name</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="set_name">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Set</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">attribute_set_name</argument>
+                        <argument name="id" xsi:type="string">setGrid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">catalog/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getAttributeSetId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="set_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Set</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">attribute_set_name</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_edit.xml
index 58783b06041f5882bcec71b08bb8be624fe8eee3..de8515b18ab7353a642ad9c5943af20cfb6c5252 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_edit.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_edit.xml
@@ -24,9 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Main"
-               name="adminhtml.catalog.product.set.edit"
-               template="catalog/product/attribute/set/main.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Main" name="adminhtml.catalog.product.set.edit" template="catalog/product/attribute/set/main.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_index.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_index.xml
index 8d2896f586a972098b2492a3b340bdfd7d570b51..53734e971bbb9ffd62e9894b4c07056caad707b9 100644
--- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_index.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_set_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="catalog_product_set_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Toolbar\Main" name="adminhtml.catalog.product.set.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Toolbar\Main" name="adminhtml.catalog.product.set.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
index 21c795a64bd2cc7dc3e3e96b3bb3e5e625ed8271..523e983f91394bcf03529f012d963c4fe0ab29da 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
+++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
@@ -22,159 +22,178 @@
  */
 
 .field-category_ids .category-select {
-    margin: 0 0 6px 0;
-    padding: 2px;
-    width: 67.999999997%;
+	margin: 0 0 6px 0;
+	padding: 2px;
+	width: 67.999999997%;
 }
 
 .mage-new-category-dialog .category-select {
-    width: 100%;
-    padding: 0;
+	width: 100%;
+	padding: 0;
 }
 
 .field-category_ids .mage-suggest-inner {
-    padding-right: 27px;
+	padding-right: 27px;
 }
 
 .field-category_ids .addon > button {
-    float: right;
-    margin-left: 2.127659574%;
-    width: 28.4%;
-}
-
+	float: right;
+	margin-left: 2.127659574%;
+	width: 28.4%;
+}
+
+.field-category_ids .mage-suggest-search-label:after,
+.mage-new-category-dialog .mage-suggest-search-label:after {
+	position: absolute;
+	top: 0;
+	right: 5px;
+	font-family: 'MUI-Icons';
+	font-style: normal;
+	speak: none;
+	font-weight: normal;
+	-webkit-font-smoothing: antialiased;
+	content: '\e013'; /* unordered list icon */
+	font-size: 20px;
+	color: #b2b2b2;
+}
+
+/* Remove search icon for category search suggest field */
 .field-category_ids .category-select:after,
 .mage-new-category-dialog .category-select:after {
-    position: absolute;
-    top: 0;
-    right: 5px;
-    font-family: 'MUI-Icons';
-    font-style: normal;
-    speak: none;
-    font-weight: normal;
-    -webkit-font-smoothing: antialiased;
-    content: '\e013'; /* unordered list icon */
-    font-size: 20px;
-    color: #b2b2b2;
+	display: none;
+}
+
+.mage-suggest-search-label {
+	display: block;
+}
+
+.mage-suggest-search-label input {
+	border: none;
+}
+
+.mage-suggest-search-label input:focus {
+	outline: 0;
 }
 
 /* Category Selector in "Create New Category" popup */
 .mage-new-category-dialog .mage-suggest {
-    border: none;
-    box-shadow: none;
+	border: none;
+	box-shadow: none;
 }
+
 .mage-new-category-dialog .mage-suggest .mage-suggest-inner {
-    padding: 0;
+	padding: 0;
 }
 
-.mage-new-category-dialog .mage-suggest-search-field > input.mage-suggest-state-loading {
-    padding-right: 15px;
+.mage-new-category-dialog .mage-suggest-search-field input.mage-suggest-state-loading {
+	padding-right: 15px;
 }
 
 .mage-new-category-dialog .mage-suggest-choices {
-    position: relative;
-    padding: 2px 22px 2px 2px;
-    background-color: #fff;
-    border: 1px solid #ccc;
-    border-radius: 3px;
-    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-    -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	position: relative;
+	padding: 2px 22px 2px 2px;
+	background-color: #fff;
+	border: 1px solid #ccc;
+	border-radius: 3px;
+	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
 }
 
 .mage-new-category-dialog .ui-dialog-content,
 .mage-new-category-dialog .ui-dialog-content form {
-    overflow: visible;
+	overflow: visible;
 }
 
 .mage-new-category-dialog .mage-suggest-inner {
-    padding: 2px 22px 2px 2px;
+	padding: 2px 22px 2px 2px;
 }
 
 .mage-suggest-choices {
-    margin: 0;
-    padding: 0;
-    list-style: none;
+	margin: 0;
+	padding: 0;
+	list-style: none;
 }
 
 .mage-suggest-choices > li {
-    display: inline-block;
+	display: inline-block;
 }
 
 .mage-suggest-search-field {
-    width: 100%;
-    white-space: nowrap;
-    margin: 0;
-    padding: 0;
+	width: 100%;
+	white-space: nowrap;
+	margin: 0;
+	padding: 0;
 }
 
-.mage-suggest-search-field > input,
-.mage-suggest-search-field > input:focus,
-.mage-suggest-search-field > input:active {
-    width: 100%;
-    height: 22px;
-    line-height: 22px;
-    outline: 0 none;
-    border: 0 none;
-    box-shadow: none;
-    padding: 0 3px;
+.mage-suggest-search-field input,
+.mage-suggest-search-field input:focus,
+.mage-suggest-search-field input:active {
+	width: 100%;
+	height: 22px;
+	line-height: 22px;
+	outline: 0 none;
+	border: 0 none;
+	box-shadow: none;
+	padding: 0 3px;
 }
 
-.mage-suggest-search-field > input.mage-suggest-state-loading {
-    background: #fff url('images/spinner.gif') no-repeat 100%;
-    padding-right: 19px;
-    position: relative;
-    z-index: 1;
+.mage-suggest-search-field input.mage-suggest-state-loading {
+	background: #fff url('images/spinner.gif') no-repeat 100%;
+	padding-right: 22px;
+	position: relative;
+	z-index: 1;
 }
 
 .mage-suggest-choice {
-    position: relative;
-    background: #cdecf6;
-    border: 1px solid #a7cedb;
-    border-radius: 3px;
-    padding: 2px 22px 1px 9px;
-    margin: 1px 2px 1px 0;
-    vertical-align: top;
-    cursor: default;
-    -moz-transition: background .3s;
-    -webkit-transition: background .3s;
-    transition: background .3s;
+	position: relative;
+	background: #cdecf6;
+	border: 1px solid #a7cedb;
+	border-radius: 3px;
+	padding: 2px 22px 1px 9px;
+	margin: 1px 2px 1px 0;
+	vertical-align: top;
+	cursor: default;
+	-moz-transition: background .3s;
+	-webkit-transition: background .3s;
+	transition: background .3s;
 }
 
 .mage-suggest-choice:hover {
-    background: #aae3f5;
+	background: #aae3f5;
 }
 
 .mage-suggest-choice-close {
-    position: absolute;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    width: 20px;
-    line-height: 16px;
-    text-align: center;
-    color: #7b94a1;
-    cursor: pointer;
+	position: absolute;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	width: 20px;
+	line-height: 16px;
+	text-align: center;
+	color: #7b94a1;
+	cursor: pointer;
 }
 
 .mage-suggest-choice-close:hover {
-    color: #000;
+	color: #000;
 }
 
 .mage-suggest-choice-close:before {
-    font-family: 'MUI-Icons';
-    font-style: normal;
-    speak: none;
-    font-weight: normal;
-    -webkit-font-smoothing: antialiased;
-    content: '\e07d'; /* close icon */
-    font-size: 6px;
+	font-family: 'MUI-Icons';
+	font-style: normal;
+	speak: none;
+	font-weight: normal;
+	-webkit-font-smoothing: antialiased;
+	content: '\e07d'; /* close icon */
+	font-size: 6px;
 }
 
 .mage-suggest-no-records {
-    display: inline-block;
-    padding: 10px;
+	display: inline-block;
+	padding: 10px;
 }
 
 .ui-helper-hidden-accessible {
-    display: none;
+	display: none;
 }
\ No newline at end of file
diff --git a/app/code/Magento/Catalog/view/base/layout/catalog_product_prices.xml b/app/code/Magento/Catalog/view/base/layout/catalog_product_prices.xml
index 64c427798aed55b5aaf8616b5cc7a720dd90b3a9..6d9ca2338e388b604713fc06620f776066aabbd6 100644
--- a/app/code/Magento/Catalog/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/Catalog/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <block class="Magento\Framework\Pricing\Render\RendererPool" name="render.product.prices">
         <arguments>
             <argument name="default" xsi:type="array">
@@ -57,4 +57,4 @@
             </argument>
         </arguments>
     </block>
-</page>
+</layout>
diff --git a/app/code/Magento/Catalog/view/base/layout/default.xml b/app/code/Magento/Catalog/view/base/layout/default.xml
index f58811f5c2f26e0cbf75a98c1ec87c1679585638..b586be8f914514278fd3c64d8a7a042da9fd6212 100644
--- a/app/code/Magento/Catalog/view/base/layout/default.xml
+++ b/app/code/Magento/Catalog/view/base/layout/default.xml
@@ -23,13 +23,14 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Framework\Pricing\Render" name="product.price.render.default">
-        <arguments>
-            <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
-            <argument name="use_link_for_as_low_as" xsi:type="boolean">true</argument>
-            <!-- set "override" configuration settings here -->
-        </arguments>
-    </block>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <block class="Magento\Framework\Pricing\Render" name="product.price.render.default">
+            <arguments>
+                <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
+                <argument name="use_link_for_as_low_as" xsi:type="boolean">true</argument>
+                <!-- set "override" configuration settings here -->
+            </arguments>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/base/layout/empty.xml b/app/code/Magento/Catalog/view/base/layout/empty.xml
index f58811f5c2f26e0cbf75a98c1ec87c1679585638..b586be8f914514278fd3c64d8a7a042da9fd6212 100644
--- a/app/code/Magento/Catalog/view/base/layout/empty.xml
+++ b/app/code/Magento/Catalog/view/base/layout/empty.xml
@@ -23,13 +23,14 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Framework\Pricing\Render" name="product.price.render.default">
-        <arguments>
-            <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
-            <argument name="use_link_for_as_low_as" xsi:type="boolean">true</argument>
-            <!-- set "override" configuration settings here -->
-        </arguments>
-    </block>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <block class="Magento\Framework\Pricing\Render" name="product.price.render.default">
+            <arguments>
+                <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
+                <argument name="use_link_for_as_low_as" xsi:type="boolean">true</argument>
+                <!-- set "override" configuration settings here -->
+            </arguments>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view.xml
index ca680bedef232db64b43e1708b6241df02336f33..0d933a8a92aee22c4787967b097c34b6bd541d96 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view.xml
@@ -23,82 +23,84 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="columns.top">
-        <container name="category.view.container" htmlTag="div" htmlClass="category-view" after="-">
-            <block class="Magento\Catalog\Block\Category\View" name="category.image" template="Magento_Catalog::category/image.phtml"/>
-            <block class="Magento\Catalog\Block\Category\View" name="category.description" template="Magento_Catalog::category/description.phtml"/>
-            <block class="Magento\Catalog\Block\Category\View" name="category.cms" template="Magento_Catalog::category/cms.phtml"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Category\View" name="category.products" template="Magento_Catalog::category/products.phtml">
-            <block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Magento_Catalog::product/list.phtml">
-                <container name="category.product.list.additional" as="additional" />
-                <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml">
-                    <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager"/>
-                    <!-- The following code shows how to set your own pager increments -->
-                    <!--
-                        <action method="setDefaultListPerPage">
-                        <argument name="limit" xsi:type="string">4</argument>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="columns.top">
+            <container name="category.view.container" htmlTag="div" htmlClass="category-view" after="-">
+                <block class="Magento\Catalog\Block\Category\View" name="category.image" template="Magento_Catalog::category/image.phtml"/>
+                <block class="Magento\Catalog\Block\Category\View" name="category.description" template="Magento_Catalog::category/description.phtml"/>
+                <block class="Magento\Catalog\Block\Category\View" name="category.cms" template="Magento_Catalog::category/cms.phtml"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Category\View" name="category.products" template="Magento_Catalog::category/products.phtml">
+                <block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Magento_Catalog::product/list.phtml">
+                    <container name="category.product.list.additional" as="additional" />
+                    <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml">
+                        <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager"/>
+                        <!-- The following code shows how to set your own pager increments -->
+                        <!--
+                            <action method="setDefaultListPerPage">
+                            <argument name="limit" xsi:type="string">4</argument>
+                        </action>
+                        <action method="setDefaultGridPerPage">
+                            <argument name="limit" xsi:type="string">3</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">list</argument>
+                            <argument name="limit" xsi:type="string">2</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">list</argument>
+                            <argument name="limit" xsi:type="string">4</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">list</argument>
+                            <argument name="limit" xsi:type="string">6</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">list</argument>
+                            <argument name="limit" xsi:type="string">8</argument>
+                        </action>
+                        <action method="addPagerLimit" translate="label">
+                            <argument name="mode" xsi:type="string">list</argument>
+                            <argument name="limit" xsi:type="string">all</argument>
+                            <argument name="label" xsi:type="string">All</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">grid</argument>
+                            <argument name="limit" xsi:type="string">3</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">grid</argument>
+                            <argument name="limit" xsi:type="string">6</argument>
+                        </action>
+                        <action method="addPagerLimit">
+                            <argument name="mode" xsi:type="string">grid</argument>
+                            <argument name="limit" xsi:type="string">9</argument>
+                        </action>
+                        <action method="addPagerLimit" translate="label">
+                            <argument name="mode" xsi:type="string">grid</argument>
+                            <argument name="limit" xsi:type="string">all</argument>
+                            <argument name="label" xsi:type="string">All</argument>
+                        </action>
+                        -->
+                    </block>
+                    <action method="setToolbarBlockName">
+                        <argument name="name" xsi:type="string">product_list_toolbar</argument>
                     </action>
-                    <action method="setDefaultGridPerPage">
-                        <argument name="limit" xsi:type="string">3</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">list</argument>
-                        <argument name="limit" xsi:type="string">2</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">list</argument>
-                        <argument name="limit" xsi:type="string">4</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">list</argument>
-                        <argument name="limit" xsi:type="string">6</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">list</argument>
-                        <argument name="limit" xsi:type="string">8</argument>
-                    </action>
-                    <action method="addPagerLimit" translate="label">
-                        <argument name="mode" xsi:type="string">list</argument>
-                        <argument name="limit" xsi:type="string">all</argument>
-                        <argument name="label" xsi:type="string">All</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">grid</argument>
-                        <argument name="limit" xsi:type="string">3</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">grid</argument>
-                        <argument name="limit" xsi:type="string">6</argument>
-                    </action>
-                    <action method="addPagerLimit">
-                        <argument name="mode" xsi:type="string">grid</argument>
-                        <argument name="limit" xsi:type="string">9</argument>
-                    </action>
-                    <action method="addPagerLimit" translate="label">
-                        <argument name="mode" xsi:type="string">grid</argument>
-                        <argument name="limit" xsi:type="string">all</argument>
-                        <argument name="label" xsi:type="string">All</argument>
-                    </action>
-                    -->
                 </block>
-                <action method="setToolbarBlockName">
-                    <argument name="name" xsi:type="string">product_list_toolbar</argument>
-                </action>
             </block>
-        </block>
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
                         <item name="compareProductLink" xsi:type="string">.action.tocompare</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="page.main.title">
-        <block class="Magento\Catalog\Block\Category\Rss\Link" name="rss.link" template="Magento_Catalog::category/rss.phtml"/>
-    </referenceBlock>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="page.main.title">
+            <block class="Magento\Catalog\Block\Category\Rss\Link" name="rss.link" template="Magento_Catalog::category/rss.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default.xml
index 204273f1ef57ccf7ff0cbe40e7f61a4f0a58e3f1..772185ef9d2bfba6e2ef9d2da57ef313922c6961 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\Catalog\Block\Navigation" name="catalog.leftnav" before="-" template="navigation/left.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\Catalog\Block\Navigation" name="catalog.leftnav" before="-" template="navigation/left.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default_without_children.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default_without_children.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default_without_children.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_category_view_type_default_without_children.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_compare_index.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_compare_index.xml
index 719929e9864f497da6ca9730d68e6e0f19b51764..4f9384b0b9e37a014bc2da213b4e943cee6ce14b 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_compare_index.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_compare_index.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="page_title" xsi:type="string">Compare Products</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Product\Compare\ListCompare" name="catalog.compare.list" template="product/compare/list.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="page_title" xsi:type="string">Compare Products</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Product\Compare\ListCompare" name="catalog.compare.list" template="product/compare/list.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_gallery.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_gallery.xml
index c4a40f40abcf73844ca3c7ccd3b2b6d272859d84..f21a4c286d1a468ddb7116d23752cb66cc8615c6 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_gallery.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_gallery.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="root">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">popup.phtml</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Catalog\Block\Product\Gallery" name="catalog_product_gallery" template="product/gallery.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="root">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">popup.phtml</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Catalog\Block\Product\Gallery" name="catalog_product_gallery" template="product/gallery.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
index e3f2fc81e047d0e980fad7aa402f1a068920e47e..7e0cc292e608bb48263e80fa11b4cfffa1cf1e79 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
@@ -23,143 +23,145 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="checkout_page_head_components" template="Magento_Catalog::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="page.main.title">
-        <arguments>
-            <argument name="css_class" xsi:type="string">product</argument>
-            <argument name="add_base_attribute" xsi:type="string">itemprop="name"</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="root">
-        <arguments>
-            <argument name="add_attribute" xsi:type="string">itemscope itemtype="http://schema.org/Product"</argument>
-        </arguments>
-    </referenceBlock>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="mage/gallery.css"/>
     </head>
     <update handle="page_calendar"/>
-    <referenceContainer name="content">
-        <container name="product.info.media" label="invisible" htmlTag="div" htmlClass="product media" before="-">
-            <block class="Magento\Catalog\Block\Product\View\Gallery" name="product.info.media.image" template="product/view/base-image.phtml">
-                <block class="Magento\Catalog\Block\Product\Image" name="product.image.main"/>
-                <block class="Magento\Catalog\Block\Product\Image" name="product.image.thumbs"/>
-            </block>
-        </container>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="checkout_page_head_components" template="Magento_Catalog::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="page.main.title">
+            <arguments>
+                <argument name="css_class" xsi:type="string">product</argument>
+                <argument name="add_base_attribute" xsi:type="string">itemprop="name"</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="root">
+            <arguments>
+                <argument name="add_attribute" xsi:type="string">itemscope itemtype="http://schema.org/Product"</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <container name="product.info.media" label="invisible" htmlTag="div" htmlClass="product media" before="-">
+                <block class="Magento\Catalog\Block\Product\View\Gallery" name="product.info.media.image" template="product/view/base-image.phtml">
+                    <block class="Magento\Catalog\Block\Product\Image" name="product.image.main"/>
+                    <block class="Magento\Catalog\Block\Product\Image" name="product.image.thumbs"/>
+                </block>
+            </container>
 
-        <container name="product.info.main" label="invisible" htmlTag="div" htmlClass="product-info-main" after="product.info.media">
-            <block class="Magento\Catalog\Block\Product\View" name="product.info.review" template="product/view/review.phtml" before="-" />
-            <container name="product.info.price" label="Product info auxiliary container" htmlTag="div" htmlClass="product-info-price" after="product.info.review">
-                <block class="Magento\Catalog\Pricing\Render" name="product.price.final" after="product.info.sku">
+            <container name="product.info.main" label="invisible" htmlTag="div" htmlClass="product-info-main" after="product.info.media">
+                <block class="Magento\Catalog\Block\Product\View" name="product.info.review" template="product/view/review.phtml" before="-" />
+                <container name="product.info.price" label="Product info auxiliary container" htmlTag="div" htmlClass="product-info-price" after="product.info.review">
+                    <block class="Magento\Catalog\Pricing\Render" name="product.price.final" after="product.info.sku">
+                        <arguments>
+                            <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                            <argument name="price_type_code" xsi:type="string">final_price</argument>
+                            <argument name="zone" xsi:type="string">item_view</argument>
+                        </arguments>
+                    </block>
+                    <container name="product.info.stock.sku" label="Product auxiliary info" htmlTag="div" htmlClass="product-info-stock-sku">
+                        <container name="product.info.type" label="invisible" before="-"/>
+                        <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.sku" template="product/view/attribute.phtml" after="product.info.type">
+                            <arguments>
+                                <argument name="at_call" xsi:type="string">getSku</argument>
+                                <argument name="at_code" xsi:type="string">sku</argument>
+                                <argument name="css_class" xsi:type="string">sku</argument>
+                                <argument name="at_label" xsi:type="string">default</argument>
+                                <argument name="add_attribute" xsi:type="string">itemprop="sku"</argument>
+                            </arguments>
+                        </block>
+                    </container>
+                </container>
+                <block class="Magento\Catalog\Pricing\Render" name="product.price.tier" after="product.info.price">
                     <arguments>
                         <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                        <argument name="price_type_code" xsi:type="string">final_price</argument>
+                        <argument name="price_type_code" xsi:type="string">tier_price</argument>
                         <argument name="zone" xsi:type="string">item_view</argument>
                     </arguments>
                 </block>
-                <container name="product.info.stock.sku" label="Product auxiliary info" htmlTag="div" htmlClass="product-info-stock-sku">
-                    <container name="product.info.type" label="invisible" before="-"/>
-                    <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.sku" template="product/view/attribute.phtml" after="product.info.type">
-                        <arguments>
-                            <argument name="at_call" xsi:type="string">getSku</argument>
-                            <argument name="at_code" xsi:type="string">sku</argument>
-                            <argument name="css_class" xsi:type="string">sku</argument>
-                            <argument name="at_label" xsi:type="string">default</argument>
-                            <argument name="add_attribute" xsi:type="string">itemprop="sku"</argument>
-                        </arguments>
-                    </block>
-                </container>
-            </container>
-            <block class="Magento\Catalog\Pricing\Render" name="product.price.tier" after="product.info.price">
-                <arguments>
-                    <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                    <argument name="price_type_code" xsi:type="string">tier_price</argument>
-                    <argument name="zone" xsi:type="string">item_view</argument>
-                </arguments>
-            </block>
-            <container name="alert.urls" as="alert_urls" label="Alert Urls" after="product.price.tier"/>
-            <block class="Magento\Catalog\Block\Product\View" name="product.info" template="product/view/form.phtml" after="alert.urls">
-                <container name="product.info.form.content" label="invisible" as="product_info_form_content">
-                    <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart" as="addtocart" template="product/view/addtocart.phtml"/>
-                </container>
-                <block class="Magento\Framework\View\Element\Template" name="product.info.form.options" as="options_container">
-                    <block class="Magento\Catalog\Block\Product\View" name="product.info.options.wrapper" as="product_options_wrapper" template="product/view/options/wrapper.phtml">
-                        <block class="Magento\Catalog\Block\Product\View\Options" name="product.info.options" as="product_options" template="product/view/options.phtml">
-                            <block class="Magento\Catalog\Block\Product\View\Options\Type\DefaultType" as="default" template="product/view/options/type/default.phtml"/>
-                            <block class="Magento\Catalog\Block\Product\View\Options\Type\Text" as="text" template="product/view/options/type/text.phtml"/>
-                            <block class="Magento\Catalog\Block\Product\View\Options\Type\File" as="file" template="product/view/options/type/file.phtml"/>
-                            <block class="Magento\Catalog\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select.phtml"/>
-                            <block class="Magento\Catalog\Block\Product\View\Options\Type\Date" as="date" template="product/view/options/type/date.phtml"/>
+                <container name="alert.urls" as="alert_urls" label="Alert Urls" after="product.price.tier"/>
+                <block class="Magento\Catalog\Block\Product\View" name="product.info" template="product/view/form.phtml" after="alert.urls">
+                    <container name="product.info.form.content" label="invisible" as="product_info_form_content">
+                        <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart" as="addtocart" template="product/view/addtocart.phtml"/>
+                    </container>
+                    <block class="Magento\Framework\View\Element\Template" name="product.info.form.options" as="options_container">
+                        <block class="Magento\Catalog\Block\Product\View" name="product.info.options.wrapper" as="product_options_wrapper" template="product/view/options/wrapper.phtml">
+                            <block class="Magento\Catalog\Block\Product\View\Options" name="product.info.options" as="product_options" template="product/view/options.phtml">
+                                <block class="Magento\Catalog\Block\Product\View\Options\Type\DefaultType" as="default" template="product/view/options/type/default.phtml"/>
+                                <block class="Magento\Catalog\Block\Product\View\Options\Type\Text" as="text" template="product/view/options/type/text.phtml"/>
+                                <block class="Magento\Catalog\Block\Product\View\Options\Type\File" as="file" template="product/view/options/type/file.phtml"/>
+                                <block class="Magento\Catalog\Block\Product\View\Options\Type\Select" as="select" template="product/view/options/type/select.phtml"/>
+                                <block class="Magento\Catalog\Block\Product\View\Options\Type\Date" as="date" template="product/view/options/type/date.phtml"/>
+                            </block>
+                            <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
+                        </block>
+                        <block class="Magento\Catalog\Block\Product\View" name="product.info.options.wrapper.bottom" as="product_options_wrapper_bottom" template="product/view/options/wrapper/bottom.phtml">
+                            <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.additional" as="product.info.addtocart" template="product/view/addtocart.phtml"/>
                         </block>
-                        <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
-                    </block>
-                    <block class="Magento\Catalog\Block\Product\View" name="product.info.options.wrapper.bottom" as="product_options_wrapper_bottom" template="product/view/options/wrapper/bottom.phtml">
-                        <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.additional" as="product.info.addtocart" template="product/view/addtocart.phtml"/>
                     </block>
                 </block>
-            </block>
-            <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint">
-                <container name="product.info.social" label="Product social links container" htmlTag="div" htmlClass="product-social-links" after="product.info.overview">
-                    <block class="Magento\Catalog\Block\Product\View" name="product.info.addto" as="addto" template="product/view/addto.phtml"/>
-                    <block class="Magento\Catalog\Block\Product\View" name="product.info.mailto" template="product/view/mailto.phtml"/>
+                <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint">
+                    <container name="product.info.social" label="Product social links container" htmlTag="div" htmlClass="product-social-links" after="product.info.overview">
+                        <block class="Magento\Catalog\Block\Product\View" name="product.info.addto" as="addto" template="product/view/addto.phtml"/>
+                        <block class="Magento\Catalog\Block\Product\View" name="product.info.mailto" template="product/view/mailto.phtml"/>
+                    </container>
                 </container>
+                <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.overview" template="product/view/attribute.phtml" group="detailed_info" after="product.info.extrahint">
+                    <arguments>
+                        <argument name="at_call" xsi:type="string">getShortDescription</argument>
+                        <argument name="at_code" xsi:type="string">short_description</argument>
+                        <argument name="css_class" xsi:type="string">overview</argument>
+                        <argument name="at_label" translate="true" xsi:type="string">none</argument>
+                        <argument name="title" translate="true" xsi:type="string">Overview</argument>
+                        <argument name="add_attribute" xsi:type="string">itemprop="description"</argument>
+                    </arguments>
+                </block>
             </container>
-            <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.overview" template="product/view/attribute.phtml" group="detailed_info" after="product.info.extrahint">
+
+            <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.details" template="product/view/details.phtml" after="product.info.main">
+                <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.description" template="product/view/attribute.phtml" group="detailed_info">
+                    <arguments>
+                        <argument name="at_call" xsi:type="string">getDescription</argument>
+                        <argument name="at_code" xsi:type="string">description</argument>
+                        <argument name="css_class" xsi:type="string">description</argument>
+                        <argument name="at_label" xsi:type="string">none</argument>
+                        <argument name="title" translate="true" xsi:type="string">Details</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Catalog\Block\Product\View\Attributes" name="product.attributes" as="additional" template="product/view/attributes.phtml" group="detailed_info">
+                    <arguments>
+                        <argument translate="true" name="title" xsi:type="string">Additional Information</argument>
+                    </arguments>
+                </block>
+            </block>
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
                 <arguments>
-                    <argument name="at_call" xsi:type="string">getShortDescription</argument>
-                    <argument name="at_code" xsi:type="string">short_description</argument>
-                    <argument name="css_class" xsi:type="string">overview</argument>
-                    <argument name="at_label" translate="true" xsi:type="string">none</argument>
-                    <argument name="title" translate="true" xsi:type="string">Overview</argument>
-                    <argument name="add_attribute" xsi:type="string">itemprop="description"</argument>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="compareProductLink" xsi:type="string">.action.tocompare</item>
+                    </argument>
                 </arguments>
             </block>
-        </container>
-
-        <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.details" template="product/view/details.phtml" after="product.info.main">
-            <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.description" template="product/view/attribute.phtml" group="detailed_info">
+        </referenceContainer>
+        <referenceContainer name="content.aside">
+            <block class="Magento\Catalog\Block\Product\ProductList\Related" name="catalog.product.related" template="Magento_Catalog::product/list/items.phtml">
                 <arguments>
-                    <argument name="at_call" xsi:type="string">getDescription</argument>
-                    <argument name="at_code" xsi:type="string">description</argument>
-                    <argument name="css_class" xsi:type="string">description</argument>
-                    <argument name="at_label" xsi:type="string">none</argument>
-                    <argument name="title" translate="true" xsi:type="string">Details</argument>
+                    <argument name="type" xsi:type="string">related</argument>
                 </arguments>
             </block>
-            <block class="Magento\Catalog\Block\Product\View\Attributes" name="product.attributes" as="additional" template="product/view/attributes.phtml" group="detailed_info">
+            <block class="Magento\Catalog\Block\Product\ProductList\Upsell" name="product.info.upsell" template="Magento_Catalog::product/list/items.phtml">
                 <arguments>
-                    <argument translate="true" name="title" xsi:type="string">Additional Information</argument>
+                    <argument name="type" xsi:type="string">upsell</argument>
                 </arguments>
             </block>
-        </block>
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="compareProductLink" xsi:type="string">.action.tocompare</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content.aside">
-        <block class="Magento\Catalog\Block\Product\ProductList\Related" name="catalog.product.related" template="Magento_Catalog::product/list/items.phtml">
-            <arguments>
-                <argument name="type" xsi:type="string">related</argument>
-            </arguments>
-        </block>
-        <block class="Magento\Catalog\Block\Product\ProductList\Upsell" name="product.info.upsell" template="Magento_Catalog::product/list/items.phtml">
-            <arguments>
-                <argument name="type" xsi:type="string">upsell</argument>
-            </arguments>
-        </block>
-        <block class="Magento\Catalog\Block\Product\View\Additional" name="product.info.additional" as="product_additional_data"/>
-    </referenceContainer>
-    <referenceBlock name="product.info.addtocart">
-        <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons"/>
-    </referenceBlock>
-    <referenceBlock name="product.info.addtocart.additional">
-        <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons.additional"/>
-    </referenceBlock>
+            <block class="Magento\Catalog\Block\Product\View\Additional" name="product.info.additional" as="product_additional_data"/>
+        </referenceContainer>
+        <referenceBlock name="product.info.addtocart">
+            <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons"/>
+        </referenceBlock>
+        <referenceBlock name="product.info.addtocart.additional">
+            <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog" name="addtocart.shortcut.buttons.additional"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_simple.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_simple.xml
index 786d9d62f161ec5db6b2577fa11c75ae311126b8..040ea449584e66d19b7176bd64d6cd81f2442f57 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_simple.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_simple.xml
@@ -24,8 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Catalog\Block\Product\View\Type\Simple" name="product.info.simple" as="product_type_data" template="product/view/type/default.phtml"/>
-        <container name="product.info.simple.extra" after="product.info.simple" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Catalog\Block\Product\View\Type\Simple" name="product.info.simple" as="product_type_data" template="product/view/type/default.phtml"/>
+            <container name="product.info.simple.extra" after="product.info.simple" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_virtual.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_virtual.xml
index e53bfbc04bcbb1ab7060c12e19a6fb936eb72cd3..23ae477683a91077797685520a7f06d88918f671 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_virtual.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view_type_virtual.xml
@@ -24,8 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Catalog\Block\Product\View\Type\Virtual" name="product.info.virtual" as="product_type_data" template="product/view/type/default.phtml"/>
-        <container name="product.info.virtual.extra" after="product.info.virtual" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Catalog\Block\Product\View\Type\Virtual" name="product.info.virtual" as="product_type_data" template="product/view/type/default.phtml"/>
+            <container name="product.info.virtual.extra" after="product.info.virtual" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
index 985741c67748e9622ff84fd7d409ae9a7bf24546..53ebe6805b9e98f50a613e30c202bd89133efc03 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/item/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/item/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/default.xml b/app/code/Magento/Catalog/view/frontend/layout/default.xml
index 48619f2434f065337d916cb48f47b166951ac41a..226caa2128efe8019ed2f0e36095f08eba038e51 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/default.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/default.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="top.links">
-        <block class="Magento\Catalog\Block\Product\Compare\Link" name="catalog.compare.link" before="-" template="Magento_Catalog::product/compare/link.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="sidebar.additional">
-        <block class="Magento\Catalog\Block\Product\Compare\Sidebar" name="catalog.compare.sidebar" template="product/compare/sidebar.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="after.body.start">
-        <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Catalog::js/components.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="top.links">
+            <block class="Magento\Catalog\Block\Product\Compare\Link" name="catalog.compare.link" before="-" template="Magento_Catalog::product/compare/link.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="sidebar.additional">
+            <block class="Magento\Catalog\Block\Product\Compare\Sidebar" name="catalog.compare.sidebar" template="product/compare/sidebar.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Catalog::js/components.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
index 8aef6a6e4b96394e4061b07f9b15ec868c9c389b..2a64f5a7dafbb7be1316df74b9d4d3ab1235a724 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
@@ -37,7 +37,7 @@
                     "selectors":{
                         "productAddToCartSelector":"button.action.tocart"}
                 }}'>
-                <caption><?php echo __('Compare Products') ?></caption>
+                <caption class="table-caption"><?php echo __('Compare Products') ?></caption>
                 <thead>
                 <tr>
                     <?php $_i=0 ?>
@@ -64,7 +64,7 @@
                         <?php if($_i++==0): ?>
                             <th scope="row" class="cell label product"><span><?php echo __('Product') ?></span></th>
                         <?php endif; ?>
-                        <td class="cell product info">
+                        <td data-th="<?php echo $this->escapeHtml(__('Product')); ?>" class="cell product info">
                             <a class="product-item-photo" href="<?php echo $this->getProductUrl($_item) ?>" title="<?php echo $this->stripTags($_item->getName(), null, true) ?>">
                                 <?php /* product_comparison_list */ ?>
                                 <?php echo $imageBlock->init($_item, 'product_comparison_list')->toHtml() ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/attributes.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/attributes.phtml
index 94886c4777e9f3b4e90c1783a0a383b5497a8ea4..ea2ece0905a7c808b799e225071fa67343906cfe 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/view/attributes.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/attributes.phtml
@@ -35,7 +35,7 @@
 <?php if($_additional = $this->getAdditionalData()): ?>
     <div class="additional attributes table-wrapper">
         <table class="data table additional attributes" id="product-attribute-specs-table">
-            <caption class="table caption"><?php echo __('Additional Information') ?></caption>
+            <caption class="table-caption"><?php echo __('Additional Information') ?></caption>
             <tbody>
             <?php foreach ($_additional as $_data): ?>
                 <tr>
diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json
index b2ee4d908e2e285aae72c813db505a9d90bca2b1..be52aced3e2984634db05de278b85239355dee4a 100644
--- a/app/code/Magento/CatalogImportExport/composer.json
+++ b/app/code/Magento/CatalogImportExport/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-import-export": "0.1.0-alpha101",
-        "magento/module-indexer": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-import-export": "0.1.0-alpha102",
+        "magento/module-indexer": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
index 5ad6d688019594c8c9d27e443659f9b63d5447bf..7729036c6a4d8f5a374ce696c680fe69a8e15097 100644
--- a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
+++ b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
@@ -48,7 +48,7 @@ class Item extends \Magento\CatalogInventory\Model\Stock\Item
      */
     protected function _isQtyCheckApplicable()
     {
-        return false;
+        return true;
     }
 
     /**
@@ -60,4 +60,12 @@ class Item extends \Magento\CatalogInventory\Model\Stock\Item
     {
         return true;
     }
+
+    /**
+     * @return bool
+     */
+    public function hasAdminArea()
+    {
+        return true;
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessor.php b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessor.php
new file mode 100644
index 0000000000000000000000000000000000000000..bf57349d27462999031d4822640ce1a7b7524402
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessor.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer;
+
+use Magento\Sales\Model\Quote\Item;
+use Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\QuoteItemQtyList;
+
+/**
+ * Class QtyProcessor
+ */
+class QtyProcessor
+{
+    /**
+     * @var QuoteItemQtyList
+     */
+    protected $quoteItemQtyList;
+
+    /**
+     * @var Item
+     */
+    protected $item;
+
+    /**
+     * @param QuoteItemQtyList $quoteItemQtyList
+     */
+    public function __construct(QuoteItemQtyList $quoteItemQtyList)
+    {
+        $this->quoteItemQtyList = $quoteItemQtyList;
+    }
+
+    /**
+     * @param Item $quoteItem
+     * @return $this
+     */
+    public function setItem(Item $quoteItem)
+    {
+        $this->item = $quoteItem;
+        return $this;
+    }
+
+    /**
+     * @param float $qty
+     * @return float|int
+     */
+    public function getRowQty($qty)
+    {
+        $rowQty = $qty;
+        if ($this->item->getParentItem()) {
+            $rowQty = $this->item->getParentItem()->getQty() * $qty;
+        }
+        return $rowQty;
+    }
+
+    /**
+     * @param int $qty
+     * @return int
+     */
+    public function getQtyForCheck($qty)
+    {
+        if (!$this->item->getParentItem()) {
+            $increaseQty = $this->item->getQtyToAdd() ? $this->item->getQtyToAdd() : $qty;
+            return $this->quoteItemQtyList->getQty(
+                $this->item->getProduct()->getId(),
+                $this->item->getId(),
+                $this->item->getQuoteId(),
+                $increaseQty
+            );
+        }
+        return $this->quoteItemQtyList->getQty(
+            $this->item->getProduct()->getId(),
+            $this->item->getId(),
+            $this->item->getQuoteId(),
+            0
+        );
+    }
+}
diff --git a/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItem.php b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItem.php
index bbf9c0448b36100d428d0d91fa94f36928b0f053..4a1b5a661c765f47a0615989ff146e2251984e6a 100644
--- a/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItem.php
+++ b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItem.php
@@ -23,14 +23,15 @@
  */
 namespace Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer;
 
-use Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\QuoteItemQtyList;
-
+/**
+ * Class StockItem
+ */
 class StockItem
 {
     /**
-     * @var QuoteItemQtyList
+     * @var QtyProcessor
      */
-    protected $quoteItemQtyList;
+    protected $qtyProcessor;
 
     /**
      * @var \Magento\Catalog\Model\ProductTypes\ConfigInterface
@@ -39,13 +40,13 @@ class StockItem
 
     /**
      * @param \Magento\Catalog\Model\ProductTypes\ConfigInterface $typeConfig
-     * @param QuoteItemQtyList $quoteItemQtyList
+     * @param QtyProcessor $qtyProcessor
      */
     public function __construct(
         \Magento\Catalog\Model\ProductTypes\ConfigInterface $typeConfig,
-        QuoteItemQtyList $quoteItemQtyList
+        QtyProcessor $qtyProcessor
     ) {
-        $this->quoteItemQtyList = $quoteItemQtyList;
+        $this->qtyProcessor = $qtyProcessor;
         $this->typeConfig = $typeConfig;
     }
 
@@ -64,26 +65,9 @@ class StockItem
         \Magento\Sales\Model\Quote\Item $quoteItem,
         $qty
     ) {
-        /**
-         * When we work with subitem
-         */
-        if ($quoteItem->getParentItem()) {
-            $rowQty = $quoteItem->getParentItem()->getQty() * $qty;
-            /**
-             * we are using 0 because original qty was processed
-             */
-            $qtyForCheck = $this->quoteItemQtyList
-                ->getQty($quoteItem->getProduct()->getId(), $quoteItem->getId(), $quoteItem->getQuoteId(), 0);
-        } else {
-            $increaseQty = $quoteItem->getQtyToAdd() ? $quoteItem->getQtyToAdd() : $qty;
-            $rowQty = $qty;
-            $qtyForCheck = $this->quoteItemQtyList->getQty(
-                $quoteItem->getProduct()->getId(),
-                $quoteItem->getId(),
-                $quoteItem->getQuoteId(),
-                $increaseQty
-            );
-        }
+        $this->qtyProcessor->setItem($quoteItem);
+        $rowQty = $this->qtyProcessor->getRowQty($qty);
+        $qtyForCheck = $this->qtyProcessor->getQtyForCheck($qty);
 
         $productTypeCustomOption = $quoteItem->getProduct()->getCustomOption('product_type');
         if (!is_null($productTypeCustomOption)) {
@@ -95,6 +79,7 @@ class StockItem
 
         $stockItem->setProductName($quoteItem->getProduct()->getName());
 
+        $stockItem->setProduct($quoteItem->getProduct());
         $result = $stockItem->checkQuoteItemQty($rowQty, $qtyForCheck, $qty);
 
         if ($stockItem->hasIsChildItem()) {
diff --git a/app/code/Magento/CatalogInventory/Model/Stock.php b/app/code/Magento/CatalogInventory/Model/Stock.php
index 436680533d2619e2723d19ec46a22281dc176c9d..e4d8ae6f936ab2f814a9efe898f277d9efa4aebb 100644
--- a/app/code/Magento/CatalogInventory/Model/Stock.php
+++ b/app/code/Magento/CatalogInventory/Model/Stock.php
@@ -227,7 +227,7 @@ class Stock extends \Magento\Framework\Model\AbstractModel
         $fullSaveItems = array();
         foreach ($stockInfo as $itemInfo) {
             $item->setData($itemInfo);
-            if (!$item->checkQty($qtys[$item->getProductId()])) {
+            if (!$item->hasAdminArea() && !$item->checkQty($qtys[$item->getProductId()])) {
                 $this->_getResource()->commit();
                 throw new \Magento\Framework\Model\Exception(
                     __('Not all of your products are available in the requested quantity.')
diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json
index 50a2ad72f2686c671fe4e393b0d4647e6f8d55b6..cedbdbc01a9a7a34650fe4f59364928a90e586f5 100644
--- a/app/code/Magento/CatalogInventory/composer.json
+++ b/app/code/Magento/CatalogInventory/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-indexer": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-indexer": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view.xml
index 7ebe66809de4820938ab68028a5dbcb62f5220d4..c8062a07f9eea579014f494dbd2799753aa85903 100644
--- a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="product.info.extrahint">
-        <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.extrahint.qtyincrements" template="qtyincrements.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.extrahint">
+            <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.extrahint.qtyincrements" template="qtyincrements.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_simple.xml b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_simple.xml
index 40889d94057986842cc0802dc4c5f46bb052a17d..02e4ecc4ff335d62b065873618275385f0e87992 100644
--- a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_simple.xml
+++ b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_simple.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="product.info.simple.extra">
-        <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" template="stockqty/default.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.simple.extra">
+            <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" template="stockqty/default.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_virtual.xml b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_virtual.xml
index 79de5bd79b69a9904a3a36cc9e5abe938bfac334..e68e11d2e585cff2e23ac384afbbdadd4064cf56 100644
--- a/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_virtual.xml
+++ b/app/code/Magento/CatalogInventory/view/frontend/layout/catalog_product_view_type_virtual.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="product.info.virtual.extra">
-        <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" template="stockqty/default.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.virtual.extra">
+            <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" template="stockqty/default.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogInventory/view/frontend/templates/stockqty/composite.phtml b/app/code/Magento/CatalogInventory/view/frontend/templates/stockqty/composite.phtml
index 7eb2c87066d22fec84d11fc133dbbeb49ae28992..9230125c3be1d50681d3a42dba2d0a82bf10ee77 100644
--- a/app/code/Magento/CatalogInventory/view/frontend/templates/stockqty/composite.phtml
+++ b/app/code/Magento/CatalogInventory/view/frontend/templates/stockqty/composite.phtml
@@ -37,24 +37,27 @@
         </a>
     </div>
     <div class="availability only detailed" id="<?php echo $this->getDetailsPlaceholderId() ?>">
-        <table class="data table">
-            <thead>
+        <div class="table-wrapper">
+            <table class="data table">
+                <caption class="table-caption"><?php echo __('Product availability'); ?></caption>
+                <thead>
                 <tr>
-                    <th class="col item"><?php echo __('Product Name') ?></th>
-                    <th class="col qty"><?php echo __('Qty') ?></th>
+                    <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
+                    <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
                 </tr>
-            </thead>
-            <tbody>
-            <?php foreach ($this->getChildProducts() as $childProduct) : ?>
-                <?php $childProductStockQty = $this->getProductStockQty($childProduct); ?>
-                <?php if ($childProductStockQty > 0) : ?>
-                    <tr>
-                        <td class="col item"><?php echo $childProduct->getName() ?></td>
-                        <td class="col qty"><?php echo $childProductStockQty ?></td>
-                    </tr>
-                <?php endif ?>
-            <?php endforeach ?>
-            </tbody>
-        </table>
+                </thead>
+                <tbody>
+                <?php foreach ($this->getChildProducts() as $childProduct) : ?>
+                    <?php $childProductStockQty = $this->getProductStockQty($childProduct); ?>
+                    <?php if ($childProductStockQty > 0) : ?>
+                        <tr>
+                            <td data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>" class="col item"><?php echo $childProduct->getName() ?></td>
+                            <td data-th="<?php echo $this->escapeHtml(__('Qty')); ?>" class="col qty"><?php echo $childProductStockQty ?></td>
+                        </tr>
+                    <?php endif ?>
+                <?php endforeach ?>
+                </tbody>
+            </table>
+        </div>
     </div>
 <?php endif ?>
diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json
index 5539ac7e891a5e38199c3136606c5b299c4a2962..e7f21fa4506461677134adfc1cee7f53fefeac3a 100644
--- a/app/code/Magento/CatalogRule/composer.json
+++ b/app/code/Magento/CatalogRule/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-rule": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-rule": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_block.xml b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_block.xml
index a25434f27988e5086426a34cba8f895f2815ab10..655056cbbde609a72c49568400d47e9313889e30 100644
--- a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_block.xml
+++ b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_block.xml
@@ -24,86 +24,88 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.promo.catalog.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="promo.catalog.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">promo_catalog_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\CatalogRule\Model\Resource\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">name</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="promo.catalog.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.promo.catalog.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="promo.catalog.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">catalog_rule/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getRuleId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">promo_catalog_grid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\CatalogRule\Model\Resource\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">name</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="rule_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="promo.catalog.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">rule_id</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Rule</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="from_date">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Start on</argument>
-                        <argument name="type" xsi:type="string">date</argument>
-                        <argument name="index" xsi:type="string">from_date</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="to_date">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">End on</argument>
-                        <argument name="type" xsi:type="string">date</argument>
-                        <argument name="default" xsi:type="string">--</argument>
-                        <argument name="index" xsi:type="string">to_date</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="index" xsi:type="string">is_active</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="array">
-                            <item name="active" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Active</item>
-                            </item>
-                            <item name="inactive" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">Inactive</item>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">catalog_rule/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getRuleId</item>
                             </item>
                         </argument>
                     </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="rule_website">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Web Site</argument>
-                        <argument name="index" xsi:type="string">website_ids</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
-                    </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="rule_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">rule_id</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Rule</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="from_date">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Start on</argument>
+                            <argument name="type" xsi:type="string">date</argument>
+                            <argument name="index" xsi:type="string">from_date</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="to_date">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">End on</argument>
+                            <argument name="type" xsi:type="string">date</argument>
+                            <argument name="default" xsi:type="string">--</argument>
+                            <argument name="index" xsi:type="string">to_date</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="index" xsi:type="string">is_active</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="active" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Active</item>
+                                </item>
+                                <item name="inactive" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">Inactive</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="rule_website">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Web Site</argument>
+                            <argument name="index" xsi:type="string">website_ids</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_edit.xml b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_edit.xml
index 55dd53007def8fe93bfd44cc1db29932532767a3..279e39d6c48151405f63c0ea0fb9903a2bfa30df 100644
--- a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_edit.xml
+++ b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_edit.xml
@@ -23,30 +23,32 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tabs" name="promo_catalog_edit_tabs">
-            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Main" name="promo_catalog_edit_tab_main"/>
-            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Conditions" name="promo_catalog_edit_tab_conditions"/>
-            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Actions" name="promo_catalog_edit_tab_actions"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">main_section</argument>
-                <argument name="block" xsi:type="string">promo_catalog_edit_tab_main</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">conditions_section</argument>
-                <argument name="block" xsi:type="string">promo_catalog_edit_tab_conditions</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">actions_section</argument>
-                <argument name="block" xsi:type="string">promo_catalog_edit_tab_actions</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit" name="promo_catalog_edit"/>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Js" template="promo/js.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tabs" name="promo_catalog_edit_tabs">
+                <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Main" name="promo_catalog_edit_tab_main"/>
+                <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Conditions" name="promo_catalog_edit_tab_conditions"/>
+                <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Actions" name="promo_catalog_edit_tab_actions"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">main_section</argument>
+                    <argument name="block" xsi:type="string">promo_catalog_edit_tab_main</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">conditions_section</argument>
+                    <argument name="block" xsi:type="string">promo_catalog_edit_tab_conditions</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">actions_section</argument>
+                    <argument name="block" xsi:type="string">promo_catalog_edit_tab_actions</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit" name="promo_catalog_edit"/>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Js" template="promo/js.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_index.xml b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_index.xml
index 97e6604237e5dbcef6e012ca88b143137ebe1a42..0e75c7cda594152e46346c211ed9edbbfee39035 100644
--- a/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_index.xml
+++ b/app/code/Magento/CatalogRule/view/adminhtml/layout/catalog_rule_promo_catalog_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_rule_promo_catalog_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog" name="adminhtml.promo.catalog.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog" name="adminhtml.promo.catalog.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json
index c3226e3cb962046dca2098f6c53b3c6cab06843b..4b29ff64c5906b8c6b7935b5bc178d46b2b08c2a 100644
--- a/app/code/Magento/CatalogSearch/composer.json
+++ b/app/code/Magento/CatalogSearch/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-search": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-indexer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-search": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-indexer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_index.xml b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_index.xml
index 0ba5c0450a3c9f962861f3c4ac7ab9c8259425f5..995be651b9fb2865add4902ccc521f544369f51b 100644
--- a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_index.xml
+++ b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_index.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Advanced Search</title>
     </head>
     <update handle="page_calendar"/>
-    <referenceContainer name="content">
-        <block class="Magento\CatalogSearch\Block\Advanced\Form" name="catalogsearch_advanced_form" template="advanced/form.phtml"/>
-        <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\CatalogSearch\Block\Advanced\Form" name="catalogsearch_advanced_form" template="advanced/form.phtml"/>
+            <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_result.xml b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_result.xml
index 9561d10175a03b9ff6ea2973c59b41fa89b223ea..79de720e84438cf1699fc970937e68958e9fb584 100644
--- a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_result.xml
+++ b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_advanced_result.xml
@@ -23,28 +23,28 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-products"/>
-    </body>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Catalog Advanced Search</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\CatalogSearch\Block\Advanced\Result" name="catalogsearch_advanced_result" template="advanced/result.phtml">
-            <block class="Magento\CatalogSearch\Block\SearchResult\ListProduct" name="search_result_list" template="product/list.phtml">
-                <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml">
-                    <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager"/>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Catalog Advanced Search</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\CatalogSearch\Block\Advanced\Result" name="catalogsearch_advanced_result" template="advanced/result.phtml">
+                <block class="Magento\CatalogSearch\Block\SearchResult\ListProduct" name="search_result_list" template="product/list.phtml">
+                    <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml">
+                        <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager"/>
+                    </block>
+                    <action method="setToolbarBlockName">
+                        <argument name="name" xsi:type="string">product_list_toolbar</argument>
+                    </action>
                 </block>
-                <action method="setToolbarBlockName">
-                    <argument name="name" xsi:type="string">product_list_toolbar</argument>
-                </action>
+                <action method="setListOrders"/>
+                <action method="setListModes"/>
+                <action method="setListCollection"/>
             </block>
-            <action method="setListOrders"/>
-            <action method="setListModes"/>
-            <action method="setListCollection"/>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_result_index.xml b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_result_index.xml
index 31345ce122fa6cc257118458e6cbf332232964e4..13d474969bde3a11112bcd2d80fe3c54541c9390 100644
--- a/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_result_index.xml
+++ b/app/code/Magento/CatalogSearch/view/frontend/layout/catalogsearch_result_index.xml
@@ -23,29 +23,29 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-products"/>
-    </body>
-    <referenceContainer name="content">
-        <block class="Magento\CatalogSearch\Block\Result" name="search.result" template="result.phtml" cacheable="false">
-            <block class="Magento\CatalogSearch\Block\SearchResult\ListProduct" name="search_result_list" template="product/list.phtml" cacheable="false">
-                <arguments>
-                    <!-- If position of argument is depend on image size changable in VDE:
+        <referenceContainer name="content">
+            <block class="Magento\CatalogSearch\Block\Result" name="search.result" template="result.phtml" cacheable="false">
+                <block class="Magento\CatalogSearch\Block\SearchResult\ListProduct" name="search_result_list" template="product/list.phtml" cacheable="false">
+                    <arguments>
+                        <!-- If position of argument is depend on image size changable in VDE:
                         positions:list-secondary,grid-secondary,list-actions,grid-actions,list-primary,grid-primary
                     -->
-                    <argument name="positioned" xsi:type="string">positions:list-secondary</argument>
-                </arguments>
-                <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml" cacheable="false">
-                    <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager" cacheable="false"/>
+                        <argument name="positioned" xsi:type="string">positions:list-secondary</argument>
+                    </arguments>
+                    <block class="Magento\Catalog\Block\Product\ProductList\Toolbar" name="product_list_toolbar" template="product/list/toolbar.phtml" cacheable="false">
+                        <block class="Magento\Theme\Block\Html\Pager" name="product_list_toolbar_pager" cacheable="false"/>
+                    </block>
+                    <action method="setToolbarBlockName">
+                        <argument name="name" xsi:type="string">product_list_toolbar</argument>
+                    </action>
                 </block>
-                <action method="setToolbarBlockName">
-                    <argument name="name" xsi:type="string">product_list_toolbar</argument>
-                </action>
+                <action method="setListOrders"/>
+                <action method="setListModes"/>
+                <action method="setListCollection"/>
             </block>
-            <action method="setListOrders"/>
-            <action method="setListModes"/>
-            <action method="setListCollection"/>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogSearch/view/frontend/layout/default.xml b/app/code/Magento/CatalogSearch/view/frontend/layout/default.xml
index f03975c85616003b71af5b0e3a3d2aa09d8ab983..5f87524ef2c63b94a828e240b100982c4b54cb97 100644
--- a/app/code/Magento/CatalogSearch/view/frontend/layout/default.xml
+++ b/app/code/Magento/CatalogSearch/view/frontend/layout/default.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="top.search">
-        <block class="Magento\Framework\View\Element\Template" name="advanced-search-link" template="Magento_CatalogSearch::advanced/link.phtml" />
-    </referenceBlock>
-    <referenceBlock name="footer_links">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="catalog-search-advanced-link">
-            <arguments>
-                <argument name="label" xsi:type="string">Advanced Search</argument>
-                <argument name="path" xsi:type="string">catalogsearch/advanced</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="top.search">
+            <block class="Magento\Framework\View\Element\Template" name="advanced-search-link" template="Magento_CatalogSearch::advanced/link.phtml" />
+        </referenceBlock>
+        <referenceBlock name="footer_links">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="catalog-search-advanced-link">
+                <arguments>
+                    <argument name="label" xsi:type="string">Advanced Search</argument>
+                    <argument name="path" xsi:type="string">catalogsearch/advanced</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json
index 836601c0fe4f4760cd71fea0eb6295afb840ef61..d16fd733c3bca93edcca581663a0b34f7924e67f 100644
--- a/app/code/Magento/CatalogUrlRewrite/composer.json
+++ b/app/code/Magento/CatalogUrlRewrite/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-catalog-import-export": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-import-export": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-url-rewrite": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-catalog-import-export": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-import-export": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-url-rewrite": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Centinel/README.md b/app/code/Magento/Centinel/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f0b3f3f7bd25313039e468ca578cb01c10cc5570
--- /dev/null
+++ b/app/code/Magento/Centinel/README.md
@@ -0,0 +1 @@
+The Magento_Centinel module implements the integration with Centinel (Cardinal Centinel Thin Client), a payment gateway from Cardinal Commerce, and enables 3-D Secure credit card validation (that is, Verified by Visa, MasterCard SecureCode and JCB J/Secure Payer Authentication programs).
diff --git a/app/code/Magento/Centinel/composer.json b/app/code/Magento/Centinel/composer.json
index 259048544abfe962e81af78fb22ce27c13ea0504..fed59975419aef235c3cac88a0a4f82597170282 100644
--- a/app/code/Magento/Centinel/composer.json
+++ b/app/code/Magento/Centinel/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_index.xml b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_index.xml
index dd4c09f2ad6635ec3a905ffb03a168a1253b791f..1ffc773a3855e077e021055519c5c4e0ceeeee54 100644
--- a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_index.xml
+++ b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_index.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="data">
-        <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
-            <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="centinel.validation.form" as="form"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="data">
+            <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
+                <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="centinel.validation.form" as="form"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_card_validation.xml b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_card_validation.xml
index 29f54a161feb8b4eae0246b8b11c752cfb11d2bc..0a180d69a8db16caea5bb80c7b69d89b06446c3f 100644
--- a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_card_validation.xml
+++ b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_card_validation.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
-            <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="form"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
+                <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="form"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_data.xml b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_data.xml
index 28c853b56d8f27dd3242df7c04d99a159e7140dc..78c4473cfd88e94e758ff7d330f3b006d6f3205a 100644
--- a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_data.xml
+++ b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_load_block_data.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="data">
-        <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
-            <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="form"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="data">
+            <block class="Magento\Centinel\Block\Adminhtml\Validation" as="card_validation" name="card_validation" template="order/create/abstract.phtml">
+                <block class="Magento\Centinel\Block\Adminhtml\Validation\Form" template="validation/form.phtml" name="form"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_start.xml b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_start.xml
index 2d23bfc62c38150df16ba69ff28d2b8a7a19a6f7..bb9029d85c725ee9ffd2b2db8207894d76d104bf 100644
--- a/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_start.xml
+++ b/app/code/Magento/Centinel/view/adminhtml/layout/sales_order_create_start.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_create_index"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Centinel/view/frontend/layout/checkout_onepage_review.xml b/app/code/Magento/Centinel/view/frontend/layout/checkout_onepage_review.xml
index 8ea8d0eec63f824faf715c9667a5b9dd3e10f47a..7f6a9f01c5fd884474c83f8ef37ca7edd3069895 100644
--- a/app/code/Magento/Centinel/view/frontend/layout/checkout_onepage_review.xml
+++ b/app/code/Magento/Centinel/view/frontend/layout/checkout_onepage_review.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.onepage.review.info.items.before">
-        <block class="Magento\Centinel\Block\Authentication" name="centinel.frame" template="authentication.phtml">
-            <action method="setAuthenticationStartMode">
-                <argument name="mode" xsi:type="string">instant</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="checkout.onepage.review.info.items.before">
+            <block class="Magento\Centinel\Block\Authentication" name="centinel.frame" template="authentication.phtml">
+                <action method="setAuthenticationStartMode">
+                    <argument name="mode" xsi:type="string">instant</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Centinel/view/frontend/layout/multishipping_checkout_overview.xml b/app/code/Magento/Centinel/view/frontend/layout/multishipping_checkout_overview.xml
index 3d41f0ec3221ad276eb200d7af330365cc7c3f13..ffb9a220da5838fe421630e9e759977509c7affb 100644
--- a/app/code/Magento/Centinel/view/frontend/layout/multishipping_checkout_overview.xml
+++ b/app/code/Magento/Centinel/view/frontend/layout/multishipping_checkout_overview.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.multishipping.overview.items.after">
-        <block class="Magento\Centinel\Block\Authentication" name="centinel.frame" template="authentication.phtml">
-            <action method="setAuthenticationStartMode">
-                <argument name="mode" xsi:type="string">window</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="checkout.multishipping.overview.items.after">
+            <block class="Magento\Centinel\Block\Authentication" name="centinel.frame" template="authentication.phtml">
+                <action method="setAuthenticationStartMode">
+                    <argument name="mode" xsi:type="string">window</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/Controller/Cart/Configure.php b/app/code/Magento/Checkout/Controller/Cart/Configure.php
index f387ff7e8c1902f5a4e3ce27ada771d5752c20c1..3935f4e2557975711966ebb0d8b1bb79fef879d4 100644
--- a/app/code/Magento/Checkout/Controller/Cart/Configure.php
+++ b/app/code/Magento/Checkout/Controller/Cart/Configure.php
@@ -26,10 +26,37 @@ namespace Magento\Checkout\Controller\Cart;
 
 class Configure extends \Magento\Checkout\Controller\Cart
 {
+    /**
+     * @var \Magento\Framework\View\Result\PageFactory
+     */
+    protected $resultPageFactory;
+
+    /**
+     * @param \Magento\Framework\App\Action\Context $context
+     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
+     * @param \Magento\Checkout\Model\Session $checkoutSession
+     * @param \Magento\Framework\StoreManagerInterface $storeManager
+     * @param \Magento\Core\App\Action\FormKeyValidator $formKeyValidator
+     * @param \Magento\Checkout\Model\Cart $cart
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Framework\App\Action\Context $context,
+        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
+        \Magento\Checkout\Model\Session $checkoutSession,
+        \Magento\Framework\StoreManagerInterface $storeManager,
+        \Magento\Core\App\Action\FormKeyValidator $formKeyValidator,
+        \Magento\Checkout\Model\Cart $cart,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context, $scopeConfig, $checkoutSession, $storeManager, $formKeyValidator, $cart);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
     /**
      * Action to reconfigure cart item
      *
-     * @return void
+     * @return \Magento\Framework\View\Result\Page
      */
     public function execute()
     {
@@ -52,13 +79,15 @@ class Configure extends \Magento\Checkout\Controller\Cart
             $params->setConfigureMode(true);
             $params->setBuyRequest($quoteItem->getBuyRequest());
 
-            $this->_objectManager->get(
-                'Magento\Catalog\Helper\Product\View'
-            )->prepareAndRender(
-                $quoteItem->getProduct()->getId(),
-                $this,
-                $params
-            );
+            $resultPage = $this->resultPageFactory->create();
+            $this->_objectManager->get('Magento\Catalog\Helper\Product\View')
+                ->prepareAndRender(
+                    $resultPage,
+                    $quoteItem->getProduct()->getId(),
+                    $this,
+                    $params
+                );
+            return $resultPage;
         } catch (\Exception $e) {
             $this->messageManager->addError(__('We cannot configure the product.'));
             $this->_objectManager->get('Magento\Framework\Logger')->logException($e);
diff --git a/app/code/Magento/Checkout/Controller/Onepage.php b/app/code/Magento/Checkout/Controller/Onepage.php
index 42005283eefaef2e1c52c572944794ef3e2106f3..9e041a4403124aef898b43c6e6c4a8b66cf43b2c 100644
--- a/app/code/Magento/Checkout/Controller/Onepage.php
+++ b/app/code/Magento/Checkout/Controller/Onepage.php
@@ -62,14 +62,14 @@ class Onepage extends Action
     protected $_formKeyValidator;
 
     /**
-     * @var \Magento\Framework\View\LayoutFactory
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface
      */
-    protected $layoutFactory;
+    protected $scopeConfig;
 
     /**
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
+     * @var \Magento\Framework\View\LayoutFactory
      */
-    protected $scopeConfig;
+    protected $layoutFactory;
 
     /**
      * @param \Magento\Framework\App\Action\Context $context
@@ -208,8 +208,12 @@ class Onepage extends Action
      */
     protected function getProgressHtml($checkoutStep = '')
     {
-        $this->_view->loadLayout(['checkout_onepage_progress']);
-        $block = $this->_view->getLayout()->getBlock('progress')->setAttribute('next_step', $checkoutStep);
+        $layout = $this->layoutFactory->create();
+        $layout->getUpdate()->load(['checkout_onepage_progress']);
+        $layout->generateXml();
+        $layout->generateElements();
+
+        $block = $layout->getBlock('progress')->setAttribute('next_step', $checkoutStep);
         return $block->toHtml();
     }
 
diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json
index 5f1c4458e09776a3dc691ab917ab67df7ea829f8..c038af054af9fb827cd2840efb4397d3cb1ec051 100644
--- a/app/code/Magento/Checkout/composer.json
+++ b/app/code/Magento/Checkout/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-authorization": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-gift-message": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-msrp": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-gift-message": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-msrp": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Checkout/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Checkout/view/frontend/layout/catalog_category_view.xml
index 3414da599bd405543ace21dfffba693745bb26af..89afa5694f6efefb940dde32fa06a0350588eb78 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/catalog_category_view.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="addToCartLink" xsi:type="string">.action.tocart</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="addToCartLink" xsi:type="string">.action.tocart</item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Checkout/view/frontend/layout/catalog_product_view.xml
index 3414da599bd405543ace21dfffba693745bb26af..89afa5694f6efefb940dde32fa06a0350588eb78 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/catalog_product_view.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="addToCartLink" xsi:type="string">.action.tocart</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="addToCartLink" xsi:type="string">.action.tocart</item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure.xml
index 0bcfbcb229a06be7092fd53246f721a4a638bb26..6e874414fd3a04447b5546a656e2b85706636b61 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure.xml
@@ -25,20 +25,22 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="checkout_cart_configure_head_components" template="Magento_Checkout::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="product.info">
-        <block class="Magento\Checkout\Block\Cart\Item\Configure" name="checkout.cart.item.configure.block"/>
-    </referenceBlock>
-    <referenceBlock name="product.info.addtocart">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
-        </action>
-    </referenceBlock>
-    <referenceBlock name="product.info.addtocart.additional">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="checkout_cart_configure_head_components" template="Magento_Checkout::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="product.info">
+            <block class="Magento\Checkout\Block\Cart\Item\Configure" name="checkout.cart.item.configure.block"/>
+        </referenceBlock>
+        <referenceBlock name="product.info.addtocart">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
+            </action>
+        </referenceBlock>
+        <referenceBlock name="product.info.addtocart.additional">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">Magento_Checkout::cart/item/configure/updatecart.phtml</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure_type_simple.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure_type_simple.xml
index 72cf09370b8acdf4318e1fc504bc53993c82ffac..f4999a2ed34806a13395b48c3d1e4c181e74c0f9 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure_type_simple.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_configure_type_simple.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view_type_simple"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
index db64978132a9b4881e3e847c101594af023efeaa..083c782c5986d10eb67c90ef91318c98bac8ac6d 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
@@ -23,39 +23,41 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_cart_item_renderers" />
-    <update handle="checkout_shipping_price_renderer" />
-    <referenceContainer name="content">
-        <block class="Magento\Checkout\Block\Cart" name="checkout.cart" template="cart.phtml">
-            <container name="checkout.cart.items" label="invisible" as="with-items">
-                <container name="checkout.cart.form.before" as="form_before" label="Shopping Cart Items Before" htmlTag="div" htmlClass="rewards" before="checkout.cart.form" />
-                <block class="Magento\Checkout\Block\Cart" name="checkout.cart.form" as="cart-items" template="cart/form.phtml">
-                    <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list" />
-                </block>
-                <container name="checkout.cart.widget" as="checkout_cart_widget" label="Shopping Cart Items After"/>
-                <block class="Magento\Checkout\Block\Cart\Shipping" name="checkout.cart.shipping" as="shipping" template="cart/shipping.phtml"/>
-                <block class="Magento\Checkout\Block\Cart\Coupon" name="checkout.cart.coupon" as="coupon" template="cart/coupon.phtml"/>
-                <container name="checkout.cart.totals.container" as="totals" label="Shopping Cart Totals">
-                    <block class="Magento\Checkout\Block\Cart\Totals" name="checkout.cart.totals" template="cart/totals.phtml"/>
-                </container>
-                <block class="Magento\Checkout\Block\Cart" name="checkout.cart.methods.bottom" template="cart/methods.phtml">
-                    <container name="checkout.cart.methods" as="methods" label="Payment Methods After Checkout Button">
-                        <block class="Magento\Checkout\Block\QuoteShortcutButtons" name="checkout.cart.shortcut.buttons"/>
-                        <block class="Magento\Checkout\Block\Onepage\Link" name="checkout.cart.methods.onepage.bottom" template="onepage/link.phtml"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="checkout_cart_item_renderers"/>
+    <update handle="checkout_shipping_price_renderer"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Checkout\Block\Cart" name="checkout.cart" template="cart.phtml">
+                <container name="checkout.cart.items" label="invisible" as="with-items">
+                    <container name="checkout.cart.form.before" as="form_before" label="Shopping Cart Items Before" htmlTag="div" htmlClass="rewards" before="checkout.cart.form"/>
+                    <block class="Magento\Checkout\Block\Cart" name="checkout.cart.form" as="cart-items" template="cart/form.phtml">
+                        <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
+                    </block>
+                    <container name="checkout.cart.widget" as="checkout_cart_widget" label="Shopping Cart Items After"/>
+                    <block class="Magento\Checkout\Block\Cart\Shipping" name="checkout.cart.shipping" as="shipping" template="cart/shipping.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Coupon" name="checkout.cart.coupon" as="coupon" template="cart/coupon.phtml"/>
+                    <container name="checkout.cart.totals.container" as="totals" label="Shopping Cart Totals">
+                        <block class="Magento\Checkout\Block\Cart\Totals" name="checkout.cart.totals" template="cart/totals.phtml"/>
                     </container>
-                </block>
-                <block class="Magento\Checkout\Block\Cart\Crosssell" name="checkout.cart.crosssell" template="Magento_Catalog::product/list/items.phtml" after="-">
-                    <arguments>
-                        <argument name="type" xsi:type="string">crosssell</argument>
-                    </arguments>
-                </block>
-            </container>
-            <container name="checkout.cart.noitems" label="invisible" as="no-items">
-                <block class="Magento\Checkout\Block\Cart" name="checkout.cart.empty" before="-" template="cart/noItems.phtml"/>
-                <container name="checkout.cart.empty.widget" as="checkout_cart_empty_widget" label="Empty Shopping Cart Content Before"/>
-            </container>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Checkout\Block\Cart\Additional\Info" name="additional.product.info" template="cart/additional/info.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart" name="checkout.cart.methods.bottom" template="cart/methods.phtml">
+                        <container name="checkout.cart.methods" as="methods" label="Payment Methods After Checkout Button">
+                            <block class="Magento\Checkout\Block\QuoteShortcutButtons" name="checkout.cart.shortcut.buttons"/>
+                            <block class="Magento\Checkout\Block\Onepage\Link" name="checkout.cart.methods.onepage.bottom" template="onepage/link.phtml"/>
+                        </container>
+                    </block>
+                    <block class="Magento\Checkout\Block\Cart\Crosssell" name="checkout.cart.crosssell" template="Magento_Catalog::product/list/items.phtml" after="-">
+                        <arguments>
+                            <argument name="type" xsi:type="string">crosssell</argument>
+                        </arguments>
+                    </block>
+                </container>
+                <container name="checkout.cart.noitems" label="invisible" as="no-items">
+                    <block class="Magento\Checkout\Block\Cart" name="checkout.cart.empty" before="-" template="cart/noItems.phtml"/>
+                    <container name="checkout.cart.empty.widget" as="checkout_cart_empty_widget" label="Empty Shopping Cart Content Before"/>
+                </container>
+            </block>
+        </referenceContainer>
+        <block class="Magento\Checkout\Block\Cart\Additional\Info" name="additional.product.info" template="cart/additional/info.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
index a94778300f460c341eb91ebc8a46412eaff4d4c9..c668d5feb39b4ebd4a121a21d9dc1de36e2728ee 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,10 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_item_price_renderers" />
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/item/default.phtml"/>
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/item/default.phtml"/>
-    </referenceBlock>
+    <update handle="checkout_item_price_renderers"/>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/item/default.phtml"/>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/item/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
-
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
index 38b868258bd87029479d4b57ec055d284df212ad..c49d416a9a9e017557269926ada2ab01b4a3bff8 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="minicart">
-        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="cart/item/price/sidebar.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="minicart">
+            <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="cart/item/price/sidebar.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
index 099528659eca9d4d03ea5529f6e54751683eec52..b3cf9320a5e67723ea5345c473d9b4da56fea8a5 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.sidebar.item.renderers">
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/sidebar/default.phtml"/>
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/sidebar/default.phtml"/>
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/sidebar/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.sidebar.item.renderers">
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/sidebar/default.phtml"/>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/sidebar/default.phtml"/>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/sidebar/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
index c294cb1f9ac0c39deea70b4e3df452237dc7be56..f80131f63adfe92ec64b5b31b6bc9d970d38c67f 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="minicart">
-        <block class="Magento\Checkout\Block\Cart\Sidebar" name="checkout.cart.minicart.totals" template="cart/minicart/totals.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="minicart">
+            <block class="Magento\Checkout\Block\Cart\Sidebar" name="checkout.cart.minicart.totals" template="cart/minicart/totals.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_item_price_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_item_price_renderers.xml
index d71cadfb6ddbce2eb69556f392bbb13da7620494..9f6fd9aed1f4ef7720e930e0b7b6d2cda30b01e4 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_item_price_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_item_price_renderers.xml
@@ -24,11 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="item/price/unit.phtml"/>
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.item.price.row" template="item/price/row.phtml"/>
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.excl" template="onepage/review/item/price/unit_excl_tax.phtml"/>
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.incl" template="onepage/review/item/price/unit_incl_tax.phtml"/>
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.excl" template="onepage/review/item/price/row_excl_tax.phtml"/>
-    <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.incl" template="onepage/review/item/price/row_incl_tax.phtml"/>
+    <body>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="item/price/unit.phtml"/>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.item.price.row" template="item/price/row.phtml"/>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.excl" template="onepage/review/item/price/unit_excl_tax.phtml"/>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.incl" template="onepage/review/item/price/unit_incl_tax.phtml"/>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.excl" template="onepage/review/item/price/row_excl_tax.phtml"/>
+        <block class="Magento\Checkout\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.incl" template="onepage/review/item/price/row_incl_tax.phtml"/>
+    </body>
 </page>
-
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_failure.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_failure.xml
index d709bb50021a1c03e9687b0ea4b6c54bb80990b0..561a2f5c52ea7e36ab0421fadf8583dfe1e512ee 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_failure.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_failure.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Your order has been received.</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Checkout\Block\Onepage\Failure" name="checkout.failure" template="onepage/failure.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Your order has been received.</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Checkout\Block\Onepage\Failure" name="checkout.failure" template="onepage/failure.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
index ef46975f196c17f249ab50ec05e847d8264bb78f..936a2a437683f0ba35fcf60e6854dbe4ca6f615c 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
@@ -23,32 +23,34 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_shipping_price_renderer" />
-    <referenceContainer name="content">
-        <block class="Magento\Checkout\Block\Onepage" name="checkout.onepage" template="onepage.phtml">
-            <block class="Magento\Checkout\Block\Onepage\Login" name="checkout.onepage.login" as="login" template="onepage/login.phtml" cacheable="false">
-                <container name="checkout.onepage.login.before" as="login_before" label="Login/Registration Before" htmlTag="div"/>
-                <container name="form.login.additional.info" label="invisible" as="form_additional_info"/>
-            </block>
-            <block class="Magento\Checkout\Block\Onepage\Billing" name="checkout.onepage.billing" as="billing" template="onepage/billing.phtml" cacheable="false">
-                <container name="form.billing.additional.info" label="invisible" as="form_additional_info"/>
-            </block>
-            <block class="Magento\Checkout\Block\Onepage\Shipping" name="checkout.onepage.shipping" as="shipping" template="onepage/shipping.phtml" cacheable="false"/>
-            <block class="Magento\Checkout\Block\Onepage\Shipping\Method" name="checkout.onepage.shipping_method" as="shipping_method" template="onepage/shipping_method.phtml" cacheable="false">
-                <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Available" name="checkout.onepage.shipping_method.available" as="available" template="onepage/shipping_method/available.phtml"/>
-                <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Additional" name="checkout.onepage.shipping_method.additional" as="additional" template="onepage/shipping_method/additional.phtml"/>
-            </block>
-            <block class="Magento\Checkout\Block\Onepage\Payment" name="checkout.onepage.payment" as="payment" template="onepage/payment.phtml" cacheable="false">
-                <block class="Magento\Checkout\Block\Onepage\Payment\Methods" name="checkout.payment.methods" as="methods" template="onepage/payment/methods.phtml" cacheable="false"/>
-                <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.payment.additional" as="additional"/>
-                <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.payment.methods_additional" as="methods_additional"/>
-            </block>
-            <block class="Magento\Checkout\Block\Onepage\Review" name="checkout.onepage.review" as="review" template="onepage/review.phtml" cacheable="false"/>
-        </block>
-        <container name="checkout.progress.wrapper" label="Checkout Progress Wrapper" htmlTag="div" htmlClass="opc-block-progress-wrapper" htmlId="checkout-progress-wrapper" after="-">
-            <block class="Magento\Checkout\Block\Onepage\Progress" name="checkout.progress" before="-" template="onepage/progress.phtml"/>
-        </container>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="checkout_shipping_price_renderer"/>
     <update handle="customer_form_template_handle"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Checkout\Block\Onepage" name="checkout.onepage" template="onepage.phtml">
+                <block class="Magento\Checkout\Block\Onepage\Login" name="checkout.onepage.login" as="login" template="onepage/login.phtml" cacheable="false">
+                    <container name="checkout.onepage.login.before" as="login_before" label="Login/Registration Before" htmlTag="div"/>
+                    <container name="form.login.additional.info" label="invisible" as="form_additional_info"/>
+                </block>
+                <block class="Magento\Checkout\Block\Onepage\Billing" name="checkout.onepage.billing" as="billing" template="onepage/billing.phtml" cacheable="false">
+                    <container name="form.billing.additional.info" label="invisible" as="form_additional_info"/>
+                </block>
+                <block class="Magento\Checkout\Block\Onepage\Shipping" name="checkout.onepage.shipping" as="shipping" template="onepage/shipping.phtml" cacheable="false"/>
+                <block class="Magento\Checkout\Block\Onepage\Shipping\Method" name="checkout.onepage.shipping_method" as="shipping_method" template="onepage/shipping_method.phtml" cacheable="false">
+                    <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Available" name="checkout.onepage.shipping_method.available" as="available" template="onepage/shipping_method/available.phtml"/>
+                    <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Additional" name="checkout.onepage.shipping_method.additional" as="additional" template="onepage/shipping_method/additional.phtml"/>
+                </block>
+                <block class="Magento\Checkout\Block\Onepage\Payment" name="checkout.onepage.payment" as="payment" template="onepage/payment.phtml" cacheable="false">
+                    <block class="Magento\Checkout\Block\Onepage\Payment\Methods" name="checkout.payment.methods" as="methods" template="onepage/payment/methods.phtml" cacheable="false"/>
+                    <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.payment.additional" as="additional"/>
+                    <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.payment.methods_additional" as="methods_additional"/>
+                </block>
+                <block class="Magento\Checkout\Block\Onepage\Review" name="checkout.onepage.review" as="review" template="onepage/review.phtml" cacheable="false"/>
+            </block>
+            <container name="checkout.progress.wrapper" label="Checkout Progress Wrapper" htmlTag="div" htmlClass="opc-block-progress-wrapper" htmlId="checkout-progress-wrapper" after="-">
+                <block class="Magento\Checkout\Block\Onepage\Progress" name="checkout.progress" before="-" template="onepage/progress.phtml"/>
+            </container>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_review_item_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_review_item_renderers.xml
index d8583c588f8bbdc086f138383c9cc7df89c2455c..a1c2e9d638073b2ed50f4d47cb3c54f1233a5add 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_review_item_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_review_item_renderers.xml
@@ -24,9 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_item_price_renderers" />
-    <referenceBlock name="checkout.onepage.review.item.renderers">
-        <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="onepage/review/item.phtml"/>
-    </referenceBlock>
+    <update handle="checkout_item_price_renderers"/>
+    <body>
+        <referenceBlock name="checkout.onepage.review.item.renderers">
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="onepage/review/item.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
-
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_success.xml
index 98b5265bd346abf57a1609f38a8036b36eb1663c..e205c9a2cb8d00706525317f855673549e010b91 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_success.xml
@@ -23,15 +23,17 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success.print.button" template="button.phtml"/>
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Thank you for your purchase!</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success" template="success.phtml" cacheable="false"/>
-    </referenceContainer>
-    <container name="order.success.additional.info" label="Order Success Additional Info"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success.print.button" template="button.phtml"/>
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Thank you for your purchase!</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Checkout\Block\Onepage\Success" name="checkout.success" template="success.phtml" cacheable="false"/>
+        </referenceContainer>
+        <container name="order.success.additional.info" label="Order Success Additional Info"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_shipping_price_renderer.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_shipping_price_renderer.xml
index 7a15a498ac93c2ad482e23d128953bf150c05989..4f17555caa0769dc25ee1bee6c1eb2afbe68d707 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_shipping_price_renderer.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_shipping_price_renderer.xml
@@ -24,7 +24,7 @@
  */
 -->
 <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
-    <container name="root" label="Root">
+    <referenceContainer name="root">
         <block class="Magento\Checkout\Block\Shipping\Price" name="checkout.shipping.price" as="shipping.price" template="shipping/price.phtml"/>
-    </container>
+    </referenceContainer>
 </layout>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/default.xml b/app/code/Magento/Checkout/view/frontend/layout/default.xml
index 9a4fbdd92c1f7ddb6622c540b6bc3333b1f1ef58..90c0a5afc4dbd1eb8ee11c27532dfda216d841b9 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/default.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/default.xml
@@ -24,22 +24,24 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_cart_sidebar_item_renderers" />
-    <update handle="checkout_cart_sidebar_item_price_renderers" />
-    <update handle="checkout_cart_sidebar_total_renderers" />
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="checkout_page_head_components" template="Magento_Checkout::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="header-wrapper">
-        <block class="Magento\Checkout\Block\Cart\Sidebar" name="minicart" as="minicart" after="logo" template="cart/minicart.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.sidebar.item.renderers" as="renderer.list" />
-            <container name="minicart.subtotal.container" as="subtotal" label="My Cart Subtotal">
-                <block name="minicart.subtotal" class="Magento\Checkout\Block\Cart\Sidebar" template="cart/subtotal.phtml"/>
-            </container>
-            <container name="minicart.extra.info" as="minicart_info" label="My Cart Extra info"/>
-            <container name="topCart.extra_actions" as="extra_actions" label="My Cart Extra Actions">
-                <block class="Magento\Catalog\Block\ShortcutButtons" name="topCart.shortcut.buttons"/>
-            </container>
-        </block>
-    </referenceContainer>
+    <update handle="checkout_cart_sidebar_item_renderers"/>
+    <update handle="checkout_cart_sidebar_item_price_renderers"/>
+    <update handle="checkout_cart_sidebar_total_renderers"/>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="checkout_page_head_components" template="Magento_Checkout::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="header-wrapper">
+            <block class="Magento\Checkout\Block\Cart\Sidebar" name="minicart" as="minicart" after="logo" template="cart/minicart.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.sidebar.item.renderers" as="renderer.list"/>
+                <container name="minicart.subtotal.container" as="subtotal" label="My Cart Subtotal">
+                    <block name="minicart.subtotal" class="Magento\Checkout\Block\Cart\Sidebar" template="cart/subtotal.phtml"/>
+                </container>
+                <container name="minicart.extra.info" as="minicart_info" label="My Cart Extra info"/>
+                <container name="topCart.extra_actions" as="extra_actions" label="My Cart Extra Actions">
+                    <block class="Magento\Catalog\Block\ShortcutButtons" name="topCart.shortcut.buttons"/>
+                </container>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
index d6f57db2366577c59f8b139e2e3b75c977beb0dd..21fcc1ef1aec07f14fd0cdcb60977689c26cc6cc 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
@@ -37,13 +37,13 @@
                class="cart items data"
                data-mage-init='{"shoppingCart":{"emptyCartButton": "action.clear",
                "updateCartActionContainer": "#update_cart_action_container"}}'>
-            <caption><?php echo __('Shopping Cart Items') ?></caption>
+            <caption class="table-caption"><?php echo __('Shopping Cart Items') ?></caption>
             <thead>
                 <tr>
-                    <th class="col item"><span><?php echo __('Item') ?></span></th>
-                    <th class="col price"><span><?php echo __('Price') ?></span></th>
-                    <th class="col qty"><span><?php echo __('Qty') ?></span></th>
-                    <th class="col subtotal"><span><?php echo __('Subtotal') ?></span></th>
+                    <th class="col item" scope="col"><span><?php echo __('Item') ?></span></th>
+                    <th class="col price" scope="col"><span><?php echo __('Price') ?></span></th>
+                    <th class="col qty" scope="col"><span><?php echo __('Qty') ?></span></th>
+                    <th class="col subtotal" scope="col"><span><?php echo __('Subtotal') ?></span></th>
                 </tr>
             </thead>
             <?php foreach($this->getItems() as $_item): ?>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
index 8b0f31e2dbabe572bc21fba270116443e69dc339..58ac39ba67ed67f9c5b9ea76e595533a1a6880a5 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
@@ -33,7 +33,7 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
 ?>
 <tbody class="cart item">
 <tr class="item info item-info">
-    <td class="col item">
+    <td data-th="<?php echo $this->escapeHtml(__('Item')); ?>" class="col item">
         <?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->escapeHtml($this->getProductName()) ?>" class="product photo product-item-photo">
             <?php else:?>
             <span class="product photo product-item-photo">
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/totals.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/totals.phtml
index 61fac6d51e206100b5908f2aa98627295ec5c124..0b5c3c5d6bcd2156bb2abe9a46a9f0a70c387d35 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/totals.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/totals.phtml
@@ -29,10 +29,13 @@
  */
 ?>
 <div class="cart-totals">
-    <table id="shopping-cart-totals-table" class="data table totals">
-        <?php echo $this->renderTotals(); ?>
-        <tfoot>
+    <div class="table-wrapper">
+        <table id="shopping-cart-totals-table" class="data table totals">
+            <caption class="table-caption"><?php echo __('Total'); ?></caption>
+            <?php echo $this->renderTotals(); ?>
+            <tfoot>
             <?php echo $this->renderTotals('footer'); ?>
-        </tfoot>
-    </table>
+            </tfoot>
+        </table>
+    </div>
 </div>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/login.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/login.phtml
index 20c2fce40ce6a420ae598fc5d4bcb3c2661ea303..5f4431eb6abb256f644fb8a4629f30cef3f8e38c 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/login.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/login.phtml
@@ -109,7 +109,7 @@
                 <?php endif; ?>
             </fieldset>
         <?php endif; ?>
-        <div class="actions toolbar">
+        <div class="actions-toolbar">
             <div class="primary">
                 <?php if ($this->isAllowedGuestCheckout()): ?>
                     <button data-role="opc-continue" id="onepage-guest-register-button" type="button" class="action continue primary" data-checkout='{"isGuestCheckoutAllowed":true}'><span><?php echo __('Continue') ?></span></button>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/review/info.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/review/info.phtml
index f8ac576a95d96bdbc9d440ea358a803c3a5e0148..c5d6303e133d2da7b2abf6dc6e81c75a8077fe90 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/review/info.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/review/info.phtml
@@ -27,14 +27,14 @@
 <?php echo $this->getChildHtml('items_before'); ?>
 <div id="checkout-review-table-wrapper" class="review table-wrapper">
     <?php if ($this->helper('Magento\Tax\Helper\Data')->displayCartBothPrices()): $colspan = $rowspan = 2; else: $colspan = $rowspan = 1; endif; ?>
-    <table class="data table order review items" id="checkout-review-table">
-        <caption>Order Review</caption>
+    <table class="data table table-order-review items" id="checkout-review-table">
+        <caption class="table-caption"><?php echo __('Order Review'); ?></caption>
         <thead>
             <tr>
-                <th class="col item"><?php echo __('Product Name') ?></th>
-                <th class="col price"><?php echo __('Price') ?></th>
-                <th class="col qty"><?php echo __('Qty') ?></th>
-                <th class="col subtotal"><?php echo __('Subtotal') ?></th>
+                <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
+                <th class="col price" scope="col"><?php echo __('Price') ?></th>
+                <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
+                <th class="col subtotal" scope="col"><?php echo __('Subtotal') ?></th>
             </tr>
         </thead>
         <tfoot>
diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json
index 921322bda8ba5de6484f0b73acbd20f1326684ce..fc699375f82fbeefacd61cefa2f6bc34e4b92ed0 100644
--- a/app/code/Magento/CheckoutAgreements/composer.json
+++ b/app/code/Magento/CheckoutAgreements/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CheckoutAgreements/view/frontend/layout/checkout_onepage_review.xml b/app/code/Magento/CheckoutAgreements/view/frontend/layout/checkout_onepage_review.xml
index 2b82e637e57ef5585dd0bb87ae10e05b99122c4f..dfd2b2d3a0a7b2eb681919e53e249acda6ca9464 100644
--- a/app/code/Magento/CheckoutAgreements/view/frontend/layout/checkout_onepage_review.xml
+++ b/app/code/Magento/CheckoutAgreements/view/frontend/layout/checkout_onepage_review.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock  name="order_review">
-        <block class="Magento\CheckoutAgreements\Block\Agreements" name="checkout.onepage.agreements" as="agreements" template="agreements.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_review">
+            <block class="Magento\CheckoutAgreements\Block\Agreements" name="checkout.onepage.agreements" as="agreements" template="agreements.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CheckoutAgreements/view/frontend/layout/multishipping_checkout_overview.xml b/app/code/Magento/CheckoutAgreements/view/frontend/layout/multishipping_checkout_overview.xml
index 4e0eef6b396f447671cd9e10a421d98204caf590..298a2a781a60560c7798864217f6d64502e7c842 100644
--- a/app/code/Magento/CheckoutAgreements/view/frontend/layout/multishipping_checkout_overview.xml
+++ b/app/code/Magento/CheckoutAgreements/view/frontend/layout/multishipping_checkout_overview.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout_overview">
-        <block class="Magento\CheckoutAgreements\Block\Agreements" name="checkout.multishipping.agreements" as="agreements" template="multishipping_agreements.phtml" />
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout_overview">
+            <block class="Magento\CheckoutAgreements\Block\Agreements" name="checkout.multishipping.agreements" as="agreements" template="multishipping_agreements.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_express_review.xml b/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_express_review.xml
index e2c1fea67e04fc63d9ed409526c3f076b8c5e2ee..c1972b724c3a20843fceba0f9bd08c10fd7fb169 100644
--- a/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_express_review.xml
+++ b/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_express_review.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="paypal.express.review">
-        <block class="Magento\CheckoutAgreements\Block\Agreements" name="paypal.express.review.details.agreements" as="agreements" template="agreements.phtml" />
-    </referenceBlock>
+    <body>
+        <referenceBlock name="paypal.express.review">
+            <block class="Magento\CheckoutAgreements\Block\Agreements" name="paypal.express.review.details.agreements" as="agreements" template="agreements.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_payflowexpress_review.xml b/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_payflowexpress_review.xml
index e2c1fea67e04fc63d9ed409526c3f076b8c5e2ee..c1972b724c3a20843fceba0f9bd08c10fd7fb169 100644
--- a/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_payflowexpress_review.xml
+++ b/app/code/Magento/CheckoutAgreements/view/frontend/layout/paypal_payflowexpress_review.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="paypal.express.review">
-        <block class="Magento\CheckoutAgreements\Block\Agreements" name="paypal.express.review.details.agreements" as="agreements" template="agreements.phtml" />
-    </referenceBlock>
+    <body>
+        <referenceBlock name="paypal.express.review">
+            <block class="Magento\CheckoutAgreements\Block\Agreements" name="paypal.express.review.details.agreements" as="agreements" template="agreements.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/Controller/Noroute/Index.php b/app/code/Magento/Cms/Controller/Noroute/Index.php
index 7d2f60a4c808de84dd62f4b311659a21360339bc..2f4022b2efc430f62632bc6c8baf167a579e325f 100644
--- a/app/code/Magento/Cms/Controller/Noroute/Index.php
+++ b/app/code/Magento/Cms/Controller/Noroute/Index.php
@@ -43,7 +43,9 @@ class Index extends \Magento\Framework\App\Action\Action
             \Magento\Cms\Helper\Page::XML_PATH_NO_ROUTE_PAGE,
             \Magento\Store\Model\ScopeInterface::SCOPE_STORE
         );
-        if (!$this->_objectManager->get('Magento\Cms\Helper\Page')->renderPage($this, $pageId)) {
+        /** @var \Magento\Cms\Helper\Page $pageHelper */
+        $pageHelper = $this->_objectManager->get('Magento\Cms\Helper\Page');
+        if (!$pageHelper->renderPage($this, $pageId)) {
             $this->_forward('defaultNoRoute');
         }
     }
diff --git a/app/code/Magento/Cms/Helper/Page.php b/app/code/Magento/Cms/Helper/Page.php
index 525f8e92305f4e6b006c257624868e1b45bd61ef..2b5923546f98f02f76d20a90c2fc49fa62c81954 100644
--- a/app/code/Magento/Cms/Helper/Page.php
+++ b/app/code/Magento/Cms/Helper/Page.php
@@ -87,6 +87,7 @@ class Page extends \Magento\Framework\App\Helper\AbstractHelper
     protected $_escaper;
 
     /**
+     * @deprecated
      * @var \Magento\Framework\App\ViewInterface
      */
     protected $_view;
@@ -97,6 +98,8 @@ class Page extends \Magento\Framework\App\Helper\AbstractHelper
     protected $pageConfig;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\Helper\Context $context
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
      * @param \Magento\Cms\Model\Page $page
@@ -184,6 +187,7 @@ class Page extends \Magento\Framework\App\Helper\AbstractHelper
                 $this->_design->setDesignTheme($this->_page->getCustomTheme());
             }
         }
+        $resultPage = $this->_view->getPage();
         if ($this->_page->getPageLayout()) {
             if ($this->_page->getCustomPageLayout()
                 && $this->_page->getCustomPageLayout() != 'empty'
@@ -193,36 +197,34 @@ class Page extends \Magento\Framework\App\Helper\AbstractHelper
             } else {
                 $handle = $this->_page->getPageLayout();
             }
-            $this->pageConfig->setPageLayout($handle);
+            $resultPage->getConfig()->setPageLayout($handle);
         }
-        $this->_view->getPage()->initLayout();
-        $this->_view->getLayout()->getUpdate()->addHandle('cms_page_view');
-        $this->_view->addPageLayoutHandles(array('id' => $this->_page->getIdentifier()));
+        $resultPage->initLayout();
+        $resultPage->addHandle('cms_page_view');
+        $resultPage->addPageLayoutHandles(array('id' => $this->_page->getIdentifier()));
 
         $this->_eventManager->dispatch(
             'cms_page_render',
             array('page' => $this->_page, 'controller_action' => $action)
         );
 
-        $this->_view->loadLayoutUpdates();
         if ($this->_page->getCustomLayoutUpdateXml() && $inRange) {
             $layoutUpdate = $this->_page->getCustomLayoutUpdateXml();
         } else {
             $layoutUpdate = $this->_page->getLayoutUpdateXml();
         }
         if (!empty($layoutUpdate)) {
-            $this->_view->getLayout()->getUpdate()->addUpdate($layoutUpdate);
+            $resultPage->getLayout()->getUpdate()->addUpdate($layoutUpdate);
         }
-        $this->_view->generateLayoutXml()->generateLayoutBlocks();
 
-        $contentHeadingBlock = $this->_view->getLayout()->getBlock('page_content_heading');
+        $contentHeadingBlock = $resultPage->getLayout()->getBlock('page_content_heading');
         if ($contentHeadingBlock) {
             $contentHeading = $this->_escaper->escapeHtml($this->_page->getContentHeading());
             $contentHeadingBlock->setContentHeading($contentHeading);
         }
 
         /* @TODO: Move catalog and checkout storage types to appropriate modules */
-        $messageBlock = $this->_view->getLayout()->getMessagesBlock();
+        $messageBlock = $resultPage->getLayout()->getMessagesBlock();
         $messageBlock->addStorageType($this->messageManager->getDefaultGroup());
         $messageBlock->addMessages($this->messageManager->getMessages(true));
 
diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json
index d021717c8946db19bd5d767a7b460fc8ec91496a..62fdca41185aa9c69fe18c776b89537604d42d26 100644
--- a/app/code/Magento/Cms/composer.json
+++ b/app/code/Magento/Cms/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-email": "0.1.0-alpha101",
-        "magento/module-ui": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-email": "0.1.0-alpha102",
+        "magento/module-ui": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml
index 957342f77380898e1443e4d388b8db005757a14e..91b64bb3b15b5c385943b5966124abe5ad67f1a3 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="editor"/>
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <link src="jquery/fileUploader/bootstrap.js"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Cms\Block\Adminhtml\Block\Edit" name="cms_block_edit"/>
-    </referenceContainer>
+    <update handle="editor"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Cms\Block\Adminhtml\Block\Edit" name="cms_block_edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_index.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_index.xml
index e9e74c3dd24cf3178ad9df9e742d71c63cf1b20d..019f014b89768f91a9ba0ea40fcef1b575050b71 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_index.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <ui_component name="cms_block_listing" component="listing" />
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <ui_component name="cms_block_listing" component="listing"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_listing.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_listing.xml
index 29bb9e9f047329138499c7fb5562685d24c6e353..2e640c408f33f49be2e27d698e2f078ef6014c69 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_listing.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_listing.xml
@@ -24,125 +24,127 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="listing">
-        <arguments>
-            <argument name="name" xsi:type="string">cms_block_listing</argument>
-            <argument name="dataSource" xsi:type="object">Magento\Cms\Model\Resource\Block\Grid\Collection</argument>
-            <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            <argument name="configuration" xsi:type="array">
-                <item name="page_actions" xsi:type="array">
-                    <item name="add" xsi:type="array">
-                        <item name="label" xsi:type="string" translate="true">Add New Block</item>
-                    </item>
-                </item>
-            </argument>
-            <argument name="meta" xsi:type="array">
-                <item name="defaults" xsi:type="array">
-                    <item name="visible" xsi:type="boolean">true</item>
-                    <item name="filterable" xsi:type="boolean">true</item>
-                    <item name="sortable" xsi:type="boolean">true</item>
-                </item>
-                <item name="index_field" xsi:type="string">block_id</item>
-                <item name="item_action" xsi:type="string">edit</item>
-                <item name="fields" xsi:type="array">
-                    <item name="block_id" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">ID</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">text</item>
-                        <item name="filter_type" xsi:type="string">filter_range</item>
-                    </item>
-                    <item name="title" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Title</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">text</item>
-                        <item name="filter_type" xsi:type="string">filter_input</item>
-                    </item>
-                    <item name="identifier" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Identifier</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">text</item>
-                        <item name="filter_type" xsi:type="string">filter_input</item>
+    <body>
+        <referenceBlock name="listing">
+            <arguments>
+                <argument name="name" xsi:type="string">cms_block_listing</argument>
+                <argument name="dataSource" xsi:type="object">Magento\Cms\Model\Resource\Block\Grid\Collection</argument>
+                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                <argument name="configuration" xsi:type="array">
+                    <item name="page_actions" xsi:type="array">
+                        <item name="add" xsi:type="array">
+                            <item name="label" xsi:type="string" translate="true">Add New Block</item>
+                        </item>
                     </item>
-                    <item name="store_id" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Store View</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">store</item>
-                        <item name="sortable" xsi:type="boolean">false</item>
-                        <item name="filter_type" xsi:type="string">filter_store</item>
-                        <item name="options_provider" xsi:type="string">Magento\Ui\DataProvider\Options\Store</item>
+                </argument>
+                <argument name="meta" xsi:type="array">
+                    <item name="defaults" xsi:type="array">
+                        <item name="visible" xsi:type="boolean">true</item>
+                        <item name="filterable" xsi:type="boolean">true</item>
+                        <item name="sortable" xsi:type="boolean">true</item>
                     </item>
-                    <item name="is_active" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Status</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">text</item>
-                        <item name="filter_type" xsi:type="string">filter_select</item>
-                        <item name="options" xsi:type="array">
-                            <item name="disable" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">Disabled</item>
-                            </item>
-                            <item name="enable" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Enabled</item>
+                    <item name="index_field" xsi:type="string">block_id</item>
+                    <item name="item_action" xsi:type="string">edit</item>
+                    <item name="fields" xsi:type="array">
+                        <item name="block_id" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">ID</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">text</item>
+                            <item name="filter_type" xsi:type="string">filter_range</item>
+                        </item>
+                        <item name="title" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Title</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">text</item>
+                            <item name="filter_type" xsi:type="string">filter_input</item>
+                        </item>
+                        <item name="identifier" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Identifier</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">text</item>
+                            <item name="filter_type" xsi:type="string">filter_input</item>
+                        </item>
+                        <item name="store_id" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Store View</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">store</item>
+                            <item name="sortable" xsi:type="boolean">false</item>
+                            <item name="filter_type" xsi:type="string">filter_store</item>
+                            <item name="options_provider" xsi:type="string">Magento\Ui\DataProvider\Options\Store</item>
+                        </item>
+                        <item name="is_active" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Status</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">text</item>
+                            <item name="filter_type" xsi:type="string">filter_select</item>
+                            <item name="options" xsi:type="array">
+                                <item name="disable" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">Disabled</item>
+                                </item>
+                                <item name="enable" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Enabled</item>
+                                </item>
                             </item>
                         </item>
+                        <item name="creation_time" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Created</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">date</item>
+                            <item name="filter_type" xsi:type="string">filter_date</item>
+                        </item>
+                        <item name="update_time" xsi:type="array">
+                            <item name="title" xsi:type="string" translate="true">Modified</item>
+                            <item name="align" xsi:type="string">left</item>
+                            <item name="data_type" xsi:type="string">date</item>
+                            <item name="filter_type" xsi:type="string">filter_date</item>
+                        </item>
                     </item>
-                    <item name="creation_time" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Created</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">date</item>
-                        <item name="filter_type" xsi:type="string">filter_date</item>
+                </argument>
+                <argument name="row_data_provider" xsi:type="array">
+                    <item name="actions" xsi:type="array">
+                        <item name="class" xsi:type="string">Magento\Cms\Ui\DataProvider\Block\Row\Actions</item>
                     </item>
-                    <item name="update_time" xsi:type="array">
-                        <item name="title" xsi:type="string" translate="true">Modified</item>
-                        <item name="align" xsi:type="string">left</item>
-                        <item name="data_type" xsi:type="string">date</item>
-                        <item name="filter_type" xsi:type="string">filter_date</item>
+                    <item name="store_id" xsi:type="array">
+                        <item name="class" xsi:type="string">Magento\Ui\DataProvider\Row\Store</item>
                     </item>
-                </item>
-            </argument>
-            <argument name="row_data_provider" xsi:type="array">
-                <item name="actions" xsi:type="array">
-                    <item name="class" xsi:type="string">Magento\Cms\Ui\DataProvider\Block\Row\Actions</item>
-                </item>
-                <item name="store_id" xsi:type="array">
-                    <item name="class" xsi:type="string">Magento\Ui\DataProvider\Row\Store</item>
-                </item>
-            </argument>
-        </arguments>
-        <referenceBlock name="listing_before">
-            <block class="Magento\Ui\ListingContainer\Massaction\View" name="massaction_top">
-                <arguments>
-                    <argument name="content_template" xsi:type="string">Magento_Ui::listingcontainer/massaction/default.phtml</argument>
-                    <argument name="config" xsi:type="array">
-                        <item name="actions" xsi:type="array">
-                            <item name="delete" xsi:type="array">
-                                <item name="label" xsi:type="string" translate="true">Delete</item>
-                                <item name="url" xsi:type="string">cms/block/massDelete</item>
+                </argument>
+            </arguments>
+            <referenceBlock name="listing_before">
+                <block class="Magento\Ui\ListingContainer\Massaction\View" name="massaction_top">
+                    <arguments>
+                        <argument name="content_template" xsi:type="string">Magento_Ui::listingcontainer/massaction/default.phtml</argument>
+                        <argument name="config" xsi:type="array">
+                            <item name="actions" xsi:type="array">
+                                <item name="delete" xsi:type="array">
+                                    <item name="label" xsi:type="string" translate="true">Delete</item>
+                                    <item name="url" xsi:type="string">cms/block/massDelete</item>
+                                </item>
                             </item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <referenceBlock name="filter_base">
-                <arguments>
-                    <argument name="config" xsi:type="array">
-                        <item name="types" xsi:type="array">
-                            <item name="filter_store" xsi:type="array">
-                                <item name="content_template" xsi:type="string">Magento_Store/templates/filter/store.html</item>
-                                <item name="control" xsi:type="string">Magento_Store/js/listing/filter/store</item>
+                        </argument>
+                    </arguments>
+                </block>
+                <referenceBlock name="filter_base">
+                    <arguments>
+                        <argument name="config" xsi:type="array">
+                            <item name="types" xsi:type="array">
+                                <item name="filter_store" xsi:type="array">
+                                    <item name="content_template" xsi:type="string">Magento_Store/templates/filter/store.html</item>
+                                    <item name="control" xsi:type="string">Magento_Store/js/listing/filter/store</item>
+                                </item>
                             </item>
-                        </item>
-                    </argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="sorting_base">
-                <arguments>
-                    <argument name="config" xsi:type="array">
-                        <item name="field" xsi:type="string">block_id</item>
-                    </argument>
-                </arguments>
+                        </argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="sorting_base">
+                    <arguments>
+                        <argument name="config" xsi:type="array">
+                            <item name="field" xsi:type="string">block_id</item>
+                        </argument>
+                    </arguments>
+                </referenceBlock>
             </referenceBlock>
         </referenceBlock>
-    </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_new.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_new.xml
index 618ce5c81b9c96a340e27145dff7066486a5ce5b..4197a1f31142cb6a3d6e7fd6072d7926d25a0a1d 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_new.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_new.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="cms_block_edit"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml
index bf3d34736470d9c6a369256b8b6f65b2b57859d3..363c7bb3a3200d63b15be9bcad88bb57d07e12e2 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml
@@ -23,37 +23,39 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <link src="jquery/fileUploader/bootstrap.js"/>
     </head>
     <update handle="editor"/>
-    <referenceContainer name="content">
-        <block class="Magento\Cms\Block\Adminhtml\Page\Edit" name="cms_page_edit"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tabs" name="cms_page_edit_tabs">
-            <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Main" name="cms_page_edit_tab_main"/>
-            <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Content" name="cms_page_edit_tab_content"/>
-            <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Design" name="cms_page_edit_tab_design"/>
-            <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Meta" name="cms_page_edit_tab_meta"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">main_section</argument>
-                <argument name="block" xsi:type="string">cms_page_edit_tab_main</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">content_section</argument>
-                <argument name="block" xsi:type="string">cms_page_edit_tab_content</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">design_section</argument>
-                <argument name="block" xsi:type="string">cms_page_edit_tab_design</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">meta_section</argument>
-                <argument name="block" xsi:type="string">cms_page_edit_tab_meta</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Cms\Block\Adminhtml\Page\Edit" name="cms_page_edit"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tabs" name="cms_page_edit_tabs">
+                <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Main" name="cms_page_edit_tab_main"/>
+                <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Content" name="cms_page_edit_tab_content"/>
+                <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Design" name="cms_page_edit_tab_design"/>
+                <block class="Magento\Cms\Block\Adminhtml\Page\Edit\Tab\Meta" name="cms_page_edit_tab_meta"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">main_section</argument>
+                    <argument name="block" xsi:type="string">cms_page_edit_tab_main</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">content_section</argument>
+                    <argument name="block" xsi:type="string">cms_page_edit_tab_content</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">design_section</argument>
+                    <argument name="block" xsi:type="string">cms_page_edit_tab_design</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">meta_section</argument>
+                    <argument name="block" xsi:type="string">cms_page_edit_tab_meta</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_index.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_index.xml
index 56397a6e711b76d1d59121439db7bff71bbff7c1..a9d80999647e6a6b544bec40ab35d2d0f5416779 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_index.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <ui_component name="cms_page_listing" component="listing" />
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <ui_component name="cms_page_listing" component="listing"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_new.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_new.xml
index 369394cdf3c139cfdb3fbf234501fb5181d9015c..6b519ec3b2160b28ae49ec2fa0cbd293b7deaf2b 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_new.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_new.xml
@@ -23,6 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="cms_page_edit"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_wysiwyg_images_index.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_wysiwyg_images_index.xml
index d3dcb3de1e87a8b79e9f4d0dd74b4f4690907575..274227dfd4a7618cfc56ac511959ea6e3cfabde9 100644
--- a/app/code/Magento/Cms/view/adminhtml/layout/cms_wysiwyg_images_index.xml
+++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_wysiwyg_images_index.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="footer"/>
-    <remove name="left"/>
-    <referenceContainer name="content">
-        <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Content" name="wysiwyg_images.content" template="browser/content.phtml">
-            <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Tree" name="wysiwyg_images.tree" template="browser/tree.phtml"/>
-            <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Content\Uploader" name="wysiwyg_images.uploader" template="Magento_Cms::browser/content/uploader.phtml"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <remove name="footer"/>
+        <remove name="left"/>
+        <referenceContainer name="content">
+            <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Content" name="wysiwyg_images.content" template="browser/content.phtml">
+                <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Tree" name="wysiwyg_images.tree" template="browser/tree.phtml"/>
+                <block class="Magento\Cms\Block\Adminhtml\Wysiwyg\Images\Content\Uploader" name="wysiwyg_images.uploader" template="Magento_Cms::browser/content/uploader.phtml"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultindex.xml b/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultindex.xml
index d51e83b6d36626e5bb451e13422d5c32532b7fd7..11e1bc28e934433eb73289a5b94d39e60db58ad9 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultindex.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultindex.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="default_home_page" template="Magento_Cms::default/home.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="default_home_page" template="Magento_Cms::default/home.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultnoroute.xml b/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultnoroute.xml
index 07909c50537ab4f6d2355ff8371f280177c2157d..305ccbcf8db318031722ae59d8c5d4fa672f0f8d 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultnoroute.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_index_defaultnoroute.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="default_no_route" template="Magento_Cms::default/no-route.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="default_no_route" template="Magento_Cms::default/no-route.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_index_index.xml b/app/code/Magento/Cms/view/frontend/layout/cms_index_index.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_index_index.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_index_index.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_index_nocookies.xml b/app/code/Magento/Cms/view/frontend/layout/cms_index_nocookies.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_index_nocookies.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_index_nocookies.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_index_noroute.xml b/app/code/Magento/Cms/view/frontend/layout/cms_index_noroute.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_index_noroute.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_index_noroute.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/cms_page_view.xml b/app/code/Magento/Cms/view/frontend/layout/cms_page_view.xml
index bede1914e156a8bad458219da02aa44abab7655c..004f272b1c0e3ec3ce8c4f0d552f0e7d676c1451 100644
--- a/app/code/Magento/Cms/view/frontend/layout/cms_page_view.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/cms_page_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Cms\Block\Page" name="cms_page"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Cms\Block\Page" name="cms_page"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/default.xml b/app/code/Magento/Cms/view/frontend/layout/default.xml
index ddfc2668cb3f6522e1d5ab3662a9f9b7281ead82..354521e442c62cfe9538325e26a7f80401bfc77c 100644
--- a/app/code/Magento/Cms/view/frontend/layout/default.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/default.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="footer">
-        <container name="cms_footer_links_container" label="CMS Footer Links" htmlTag="div" htmlClass="links" before="footer_links">
-            <block class="Magento\Cms\Block\Block" name="cms_footer_links">
-                <arguments>
-                    <argument name="block_id" xsi:type="string">footer_links</argument>
-                </arguments>
-            </block>
-        </container>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="footer">
+            <container name="cms_footer_links_container" label="CMS Footer Links" htmlTag="div" htmlClass="links" before="footer_links">
+                <block class="Magento\Cms\Block\Block" name="cms_footer_links">
+                    <arguments>
+                        <argument name="block_id" xsi:type="string">footer_links</argument>
+                    </arguments>
+                </block>
+            </container>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Cms/view/frontend/layout/print.xml b/app/code/Magento/Cms/view/frontend/layout/print.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Cms/view/frontend/layout/print.xml
+++ b/app/code/Magento/Cms/view/frontend/layout/print.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json
index 6c63a63f59348b79f9d5fc4b2a2ee6c5f1f8b72b..fd023b122206a8cc39cef4a9f6ecf231e3f8f7a4 100644
--- a/app/code/Magento/CmsUrlRewrite/composer.json
+++ b/app/code/Magento/CmsUrlRewrite/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-url-rewrite": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-url-rewrite": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json
index 2caf5e9635208ab1b3cc0675f43b477f58e49f60..43d2b8fd4b2c15cc87ad5db1675e0af1e65c31ac 100644
--- a/app/code/Magento/ConfigurableImportExport/composer.json
+++ b/app/code/Magento/ConfigurableImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-catalog-import-export": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-import-export": "0.1.0-alpha101",
-        "magento/module-configurable-product": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-catalog-import-export": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-import-export": "0.1.0-alpha102",
+        "magento/module-configurable-product": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json
index b536fcfea121d53f8acd98372f00bba1382c2c59..fe5dafeb3680e0d39073bf5b3087fc2906f40cc8 100644
--- a/app/code/Magento/ConfigurableProduct/composer.json
+++ b/app/code/Magento/ConfigurableProduct/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-catalog-rule": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-webapi": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-catalog-rule": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-webapi": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit.xml
index 447b9bc1dea43261c20c1b76a89153adf5b7cef7..b16bdb2b7746d19525e4b18ad184a1ceb8af3d66 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" name="attribute_edit_js_configurable" template="Magento_ConfigurableProduct::catalog/product/attribute/js.phtml" after="attribute_edit_js"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" name="attribute_edit_js_configurable" template="Magento_ConfigurableProduct::catalog/product/attribute/js.phtml" after="attribute_edit_js"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit_product_tab_variations_popup.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit_product_tab_variations_popup.xml
index 2ceb7fecedb27b57d103d2314a04cb1351b31477..52df252054db1f6f27b73445abaa1b2f65e016a7 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit_product_tab_variations_popup.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_attribute_edit_product_tab_variations_popup.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="left"/>
-    <referenceBlock name="attribute_edit_content">
-        <arguments>
-            <argument name="template" xsi:type="string">Magento_Catalog::catalog/product/attribute/form.phtml</argument>
-        </arguments>
-        <container name="form" label="Form">
-            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Attribute\Edit\Tab\Variations\Main" as="main"/>
-            <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced-options"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
-            <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
-            <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front-options"/>
-        </container>
-    </referenceBlock>
+    <body>
+        <remove name="left"/>
+        <referenceBlock name="attribute_edit_content">
+            <arguments>
+                <argument name="template" xsi:type="string">Magento_Catalog::catalog/product/attribute/form.phtml</argument>
+            </arguments>
+            <container name="form" label="Form">
+                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Attribute\Edit\Tab\Variations\Main" as="main"/>
+                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Options" as="advanced-options"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Advanced" as="options"/>
+                <block class="Magento\Eav\Block\Adminhtml\Attribute\Edit\Options\Labels" as="labels"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" as="front-options"/>
+            </container>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_configurable.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_configurable.xml
index 45c110a4cfba7e5c73c65bb46dcc222bdd34c7f4..975ca7566f2b3e15d7abf06555c496cb0a234a96 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_configurable.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_configurable.xml
@@ -24,21 +24,23 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="catalog_product_superconfig_config"/>
     <head>
         <css src="Magento_ConfigurableProduct::css/configurable-product.css"/>
     </head>
-    <referenceBlock name="product_tabs">
-        <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
-            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+    <update handle="catalog_product_superconfig_config"/>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
+                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+                </block>
             </block>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">super_config</argument>
-            <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
-        </action>
-    </referenceBlock>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">super_config</argument>
+                <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_downloadable.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_downloadable.xml
index 8e9e19b1cd5d9f42784e00a04b178c7cf0d1a55f..296c6d1fcc45920c9d455e8164f0956a105b95e6 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_downloadable.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_downloadable.xml
@@ -25,17 +25,19 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_superconfig_config"/>
-    <referenceBlock name="product_tabs">
-        <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
-            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
+                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+                </block>
             </block>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">super_config</argument>
-            <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
-        </action>
-    </referenceBlock>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">super_config</argument>
+                <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_new.xml
index 9936ee8bc207a886c76bab0562cfb982e48dfc97..663b596b6de7430698b4fe91933d747cbbc4215a 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_new.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AttributeSelector" template="product/configurable/attribute-selector/js.phtml"/>
-        <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AttributeSelector" template="product/configurable/affected-attribute-set-selector/js.phtml"/>
-        <block class="Magento\Framework\View\Element\Template" template="Magento_ConfigurableProduct::product/configurable/stock/disabler.phtml"/>
-    </referenceContainer>
     <head>
         <css src="Magento_ConfigurableProduct::product/product.css"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="affected-attribute-set-form" template="Magento_ConfigurableProduct::product/configurable/affected-attribute-set-selector/form.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AttributeSelector" template="product/configurable/attribute-selector/js.phtml"/>
+            <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AttributeSelector" template="product/configurable/affected-attribute-set-selector/js.phtml"/>
+            <block class="Magento\Framework\View\Element\Template" template="Magento_ConfigurableProduct::product/configurable/stock/disabler.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="affected-attribute-set-form" template="Magento_ConfigurableProduct::product/configurable/affected-attribute-set-selector/form.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_set_edit.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_set_edit.xml
index 339aa7d30c304c07fbaf53a2d29769de69d1ca41..cb0a0d82ac6bede3a306318a44859cef6fb59085 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_set_edit.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_set_edit.xml
@@ -24,10 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Template"
-               name="adminhtml.catalog.product.set.edit.configurable"
-               template="Magento_ConfigurableProduct::catalog/product/attribute/set/js.phtml"
-               after="adminhtml.catalog.product.set.edit"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Template" name="adminhtml.catalog.product.set.edit.configurable" template="Magento_ConfigurableProduct::catalog/product/attribute/set/js.phtml" after="adminhtml.catalog.product.set.edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_simple.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_simple.xml
index 8e9e19b1cd5d9f42784e00a04b178c7cf0d1a55f..296c6d1fcc45920c9d455e8164f0956a105b95e6 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_simple.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_simple.xml
@@ -25,17 +25,19 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_superconfig_config"/>
-    <referenceBlock name="product_tabs">
-        <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
-            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
+                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+                </block>
             </block>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">super_config</argument>
-            <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
-        </action>
-    </referenceBlock>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">super_config</argument>
+                <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_superconfig_config.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_superconfig_config.xml
index 3de64f391f5bfeb97aa6cc7628e68fd48349a1e4..49baea81cefe8ba5b245c44eb6a9ca37d30b9ea3 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_superconfig_config.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_superconfig_config.xml
@@ -24,99 +24,101 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="admin.product.edit.tab.super.config.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="admin.product.edit.tab.super.config.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">configurable_associated_products_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\ConfigurableProduct\Model\Resource\Product\Collection\AssociatedProduct</argument>
-                <argument name="use_ajax" xsi:type="string">true</argument>
-                <argument name="default_sort" xsi:type="string">entity_id</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">0</argument>
-                <argument name="grid_url" xsi:type="url" path="*/product_superConfig/index">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AssociatedSelector\Backend\Grid\ColumnSet" as="grid.columnSet" name="admin.product.edit.tab.super.config.grid.columnSet">
+    <body>
+        <referenceBlock name="admin.product.edit.tab.super.config.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="admin.product.edit.tab.super.config.grid" as="grid">
                 <arguments>
-                    <argument name="id" xsi:type="string">super_product_links</argument>
+                    <argument name="id" xsi:type="string">configurable_associated_products_grid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\ConfigurableProduct\Model\Resource\Product\Collection\AssociatedProduct</argument>
+                    <argument name="use_ajax" xsi:type="string">true</argument>
+                    <argument name="default_sort" xsi:type="string">entity_id</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">0</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/product_superConfig/index">
+                        <param name="_current">1</param>
+                    </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                <block class="Magento\ConfigurableProduct\Block\Product\Configurable\AssociatedSelector\Backend\Grid\ColumnSet" as="grid.columnSet" name="admin.product.edit.tab.super.config.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="width" xsi:type="string">60px</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">entity_id</argument>
-                        <argument name="id" xsi:type="string">entity_id</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                        <argument name="renderer" xsi:type="string">Magento\ConfigurableProduct\Block\Product\Configurable\AssociatedSelector\Renderer\Id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="id" xsi:type="string">name</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="price">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Price</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="index" xsi:type="string">price</argument>
-                        <argument name="id" xsi:type="string">price</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku" name="admin.product.edit.tab.super.config.grid.sku">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">SKU</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">sku</argument>
-                        <argument name="id" xsi:type="string">sku</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="weight">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Weight</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">weight</argument>
-                        <argument name="id" xsi:type="string">weight</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="inventory_in_stock" after="admin.product.edit.tab.super.config.grid.sku">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Stock Availability</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">inventory_in_stock</argument>
-                        <argument name="id" xsi:type="string">inventory_in_stock</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                        <argument name="renderer" xsi:type="string">Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Grid\Renderer\Inventory</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="qty" after="admin.product.edit.tab.super.config.grid.sku">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Qty</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">qty</argument>
-                        <argument name="id" xsi:type="string">qty</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
+                        <argument name="id" xsi:type="string">super_product_links</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="width" xsi:type="string">60px</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">entity_id</argument>
+                            <argument name="id" xsi:type="string">entity_id</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                            <argument name="renderer" xsi:type="string">Magento\ConfigurableProduct\Block\Product\Configurable\AssociatedSelector\Renderer\Id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="id" xsi:type="string">name</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="price">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Price</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="index" xsi:type="string">price</argument>
+                            <argument name="id" xsi:type="string">price</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku" name="admin.product.edit.tab.super.config.grid.sku">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">SKU</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">sku</argument>
+                            <argument name="id" xsi:type="string">sku</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="weight">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Weight</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">weight</argument>
+                            <argument name="id" xsi:type="string">weight</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="inventory_in_stock" after="admin.product.edit.tab.super.config.grid.sku">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Stock Availability</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">inventory_in_stock</argument>
+                            <argument name="id" xsi:type="string">inventory_in_stock</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                            <argument name="renderer" xsi:type="string">Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Grid\Renderer\Inventory</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="qty" after="admin.product.edit.tab.super.config.grid.sku">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Qty</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">qty</argument>
+                            <argument name="id" xsi:type="string">qty</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_view_type_configurable.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_view_type_configurable.xml
index fadab3f38eb65af329ff2c1c3c9a2cc52a738afc..e1123470b78a1388db6d3698699f6ee37efbd700 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_view_type_configurable.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_view_type_configurable.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.composite.fieldset">
-        <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Composite\Fieldset\Configurable" name="product.composite.fieldset.configurable" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/configurable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.composite.fieldset">
+            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Composite\Fieldset\Configurable" name="product.composite.fieldset.configurable" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/configurable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_virtual.xml b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_virtual.xml
index 8e9e19b1cd5d9f42784e00a04b178c7cf0d1a55f..296c6d1fcc45920c9d455e8164f0956a105b95e6 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_virtual.xml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/layout/catalog_product_virtual.xml
@@ -25,17 +25,19 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_superconfig_config"/>
-    <referenceBlock name="product_tabs">
-        <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
-            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
-                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" name="admin.product.edit.tab.super.config.grid.container">
+                <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/generator.phtml" name="product-variations-generator" as="generator">
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-js-template.phtml" as="template"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute" template="Magento_ConfigurableProduct::catalog/product/edit/super/attribute-template.phtml" as="attribute-renderer"/>
+                    <block class="Magento\ConfigurableProduct\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix" template="Magento_ConfigurableProduct::catalog/product/edit/super/matrix.phtml" as="matrix"/>
+                </block>
             </block>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">super_config</argument>
-            <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
-        </action>
-    </referenceBlock>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">super_config</argument>
+                <argument name="block" xsi:type="string">admin.product.edit.tab.super.config.grid.container</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/catalog_product_view_type_configurable.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/catalog_product_view_type_configurable.xml
index 84348b125a86663e6425b8201b9a9315d397cd8f..6262dac74ba9aad921185158451bedf6ca715ae4 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/catalog_product_view_type_configurable.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/catalog_product_view_type_configurable.xml
@@ -26,17 +26,17 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-configurable"/>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="configurableproduct_product_view_head_components" template="Magento_ConfigurableProduct::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.configurable" as="product_type_data" template="Magento_Catalog::product/view/type/default.phtml"/>
+            <container name="product.info.configurable.extra" after="product.info.configurable" as="product_type_data_extra" label="Product Extra Info">
+                <block class="Magento\ConfigurableProduct\Block\Stockqty\Type\Configurable" template="Magento_CatalogInventory::stockqty/composite.phtml"/>
+            </container>
+        </referenceContainer>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="product/view/type/options/configurable.phtml"/>
+        </referenceBlock>
     </body>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="configurableproduct_product_view_head_components" template="Magento_ConfigurableProduct::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.configurable" as="product_type_data" template="Magento_Catalog::product/view/type/default.phtml"/>
-        <container name="product.info.configurable.extra" after="product.info.configurable" as="product_type_data_extra" label="Product Extra Info">
-            <block class="Magento\ConfigurableProduct\Block\Stockqty\Type\Configurable" template="Magento_CatalogInventory::stockqty/composite.phtml"/>
-        </container>
-    </referenceContainer>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="product/view/type/options/configurable.phtml"/>
-    </referenceBlock>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_configure_type_configurable.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_configure_type_configurable.xml
index 754470b8da2cedd6f9e21cc00509aa2af30e80cc..50f52bcd041b0c38502dc0bbba52215003b121be 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_configure_type_configurable.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_configure_type_configurable.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view_type_configurable"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
index cbbcbabe82f9011ab26cbaea9e0c00b551abe2d3..133665273315ff7f131be6788e3c3ab8cf3cc0ad 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,8 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/item/default.phtml" cacheable="false"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/item/default.phtml" cacheable="false"/>
+        </referenceBlock>
+    </body>
 </page>
-
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
index eb385afb16016c3cb74b2f89da37fab0b2b53641..a6759fc3b1cb8c0c087eb74e7b9904434e47e9d8 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.sidebar.item.renderers">
-        <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/sidebar/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.sidebar.item.renderers">
+            <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/sidebar/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
index 11fba2f08736889e77b7b6581a53c38e82159fd2..38fba8d1aeeb3c5ff2679f97322ba4b372498684 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.onepage.review.item.renderers">
-        <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::onepage/review/item.phtml" cacheable="false"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.onepage.review.item.renderers">
+            <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::onepage/review/item.phtml" cacheable="false"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json
index 93c08d22d692dbeef545ba0be9f937b73ebcdc21..8495841bb87a3406291f79ab3761c5526deeb6da 100644
--- a/app/code/Magento/Contact/composer.json
+++ b/app/code/Magento/Contact/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Contact/view/frontend/layout/contact_index_index.xml b/app/code/Magento/Contact/view/frontend/layout/contact_index_index.xml
index 64a6af6adc0fe52229ff3e171d2a0114422a56cf..143a51fb6f94bab2994050c54adc4a96c3c1a050 100644
--- a/app/code/Magento/Contact/view/frontend/layout/contact_index_index.xml
+++ b/app/code/Magento/Contact/view/frontend/layout/contact_index_index.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Contact Us</title>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="contactForm" template="Magento_Contact::form.phtml">
-            <container name="form.additional.info" label="Form Additional Info"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="contactForm" template="Magento_Contact::form.phtml">
+                <container name="form.additional.info" label="Form Additional Info"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Contact/view/frontend/layout/default.xml b/app/code/Magento/Contact/view/frontend/layout/default.xml
index a8f1e562d78bf2c1f3d4f929584f1b398e5c6591..781e2924388cd0df5da93bf3335594605aa775ab 100644
--- a/app/code/Magento/Contact/view/frontend/layout/default.xml
+++ b/app/code/Magento/Contact/view/frontend/layout/default.xml
@@ -24,13 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="footer_links">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="contact/contact/enabled"
-               name="contact-us-link">
-            <arguments>
-                <argument name="label" xsi:type="string">Contact Us</argument>
-                <argument name="path" xsi:type="string">contact</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="footer_links">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="contact/contact/enabled" name="contact-us-link">
+                <arguments>
+                    <argument name="label" xsi:type="string">Contact Us</argument>
+                    <argument name="path" xsi:type="string">contact</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Core/Model/Layout/Merge.php b/app/code/Magento/Core/Model/Layout/Merge.php
index cbb006b9c3e4575bc0ed283fe78e130bfdedcb32..4e9915d13e5c2ef8808d50a92cd2349cc5088759 100644
--- a/app/code/Magento/Core/Model/Layout/Merge.php
+++ b/app/code/Magento/Core/Model/Layout/Merge.php
@@ -142,14 +142,14 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
     protected $filesystem;
 
     /**
-     * @var \Magento\Framework\View\Page\Config
+     * @var string
      */
-    protected $pageConfig;
+    protected $pageLayout;
 
     /**
      * @var string
      */
-    protected $pageLayout;
+    protected $cacheSuffix;
 
     /**
      * Init merge model
@@ -164,8 +164,8 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
      * @param \Magento\Core\Model\Layout\Update\Validator $validator
      * @param \Magento\Framework\Logger $logger
      * @param \Magento\Framework\Filesystem $filesystem
-     * @param \Magento\Framework\View\Page\Config $pageConfig
      * @param \Magento\Framework\View\Design\ThemeInterface $theme Non-injectable theme instance
+     * @param string $cacheSuffix
      */
     public function __construct(
         \Magento\Framework\View\DesignInterface $design,
@@ -178,8 +178,8 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
         \Magento\Core\Model\Layout\Update\Validator $validator,
         \Magento\Framework\Logger $logger,
         \Magento\Framework\Filesystem $filesystem,
-        \Magento\Framework\View\Page\Config $pageConfig,
-        \Magento\Framework\View\Design\ThemeInterface $theme = null
+        \Magento\Framework\View\Design\ThemeInterface $theme = null,
+        $cacheSuffix = ''
     ) {
         $this->_theme = $theme ?: $design->getDesignTheme();
         $this->_store = $storeManager->getStore();
@@ -191,7 +191,7 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
         $this->_layoutValidator = $validator;
         $this->_logger = $logger;
         $this->filesystem = $filesystem;
-        $this->pageConfig = $pageConfig;
+        $this->cacheSuffix = $cacheSuffix;
     }
 
     /**
@@ -300,16 +300,11 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
     }
 
     /**
-     * If page layout not defined in page config model set page layout from page configuration
-     *
-     * @return $this
+     * @return string|null
      */
-    protected function processLayoutPage()
+    public function getPageLayout()
     {
-        if (!$this->pageConfig->getPageLayout() && $this->pageLayout) {
-            $this->pageConfig->setPageLayout($this->pageLayout);
-        }
-        return $this;
+        return $this->pageLayout;
     }
 
     /**
@@ -426,41 +421,22 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
         $this->addHandle($handles);
 
         $cacheId = $this->_getCacheId(md5(implode('|', $this->getHandles())));
-        $cacheIdPageLayout = $cacheId . '_' . self::PAGE_LAYOUT_CACHE_SUFFIX . '_' . $this->pageConfig->getPageLayout();
+        $cacheIdPageLayout = $cacheId . '_' . self::PAGE_LAYOUT_CACHE_SUFFIX;
         $result = $this->_loadCache($cacheId);
         if ($result) {
             $this->addUpdate($result);
-            $this->loadLayoutCache($cacheIdPageLayout);
+            $this->pageLayout = $this->_loadCache($cacheIdPageLayout);
             return $this;
         }
 
         foreach ($this->getHandles() as $handle) {
             $this->_merge($handle);
         }
-        $this->processLayoutPage();
-        $pageLayoutHandle = $this->pageConfig->getPageLayout();
-        if ($this->pageLayout) {
-            $this->_merge($pageLayoutHandle);
-            $this->addHandle($pageLayoutHandle);
-            $this->_saveCache($pageLayoutHandle, $cacheIdPageLayout);
-        }
 
         $layout = $this->asString();
         $this->_validateMergedLayout($cacheId, $layout);
         $this->_saveCache($layout, $cacheId, $this->getHandles());
-        return $this;
-    }
-
-    /**
-     * @param string $cacheIdPageLayout
-     * @return $this
-     */
-    protected function loadLayoutCache($cacheIdPageLayout)
-    {
-        $pageLayout = $this->_loadCache($cacheIdPageLayout);
-        if ($pageLayout) {
-            $this->pageConfig->setPageLayout($pageLayout);
-        }
+        $this->_saveCache((string)$this->pageLayout, $cacheIdPageLayout, $this->getHandles());
         return $this;
     }
 
@@ -636,7 +612,7 @@ class Merge implements \Magento\Framework\View\Layout\ProcessorInterface
         if ($this->_layoutUpdatesCache) {
             return $this->_layoutUpdatesCache;
         }
-        $cacheId = $this->_getCacheId();
+        $cacheId = $this->_getCacheId($this->cacheSuffix);
         $result = $this->_loadCache($cacheId);
         if ($result) {
             $result = $this->_loadXmlString($result);
diff --git a/app/code/Magento/Core/composer.json b/app/code/Magento/Core/composer.json
index 695029dc137e88952f4fe864be28090b05b2a5ea..e145c2943ff837a8bad7bc38fe9e4e6a80e9afdb 100644
--- a/app/code/Magento/Core/composer.json
+++ b/app/code/Magento/Core/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Core/etc/di.xml b/app/code/Magento/Core/etc/di.xml
index ef5a849457081a6a6d586967e50028471b769497..b19ce4ecde7ee3a91cc789faa0bc7cd2e1624b85 100644
--- a/app/code/Magento/Core/etc/di.xml
+++ b/app/code/Magento/Core/etc/di.xml
@@ -83,7 +83,7 @@
     <preference for="Magento\Framework\Pricing\Amount\AmountInterface" type="Magento\Framework\Pricing\Amount\Base" />
     <preference for="Magento\Framework\Stdlib\CookieManager" type="Magento\Framework\Stdlib\Cookie\PhpCookieManager" />
     <preference for="Magento\Framework\View\Page\FaviconInterface" type="Magento\Theme\Model\Favicon\Favicon" />
-    <preference for="Magento\Framework\Api\AttributeInterface" type="Magento\Framework\Service\Data\AttributeValue" />
+    <preference for="Magento\Framework\Api\Data\AttributeInterface" type="Magento\Framework\Service\Data\AttributeValue" />
     <type name="Magento\Framework\App\DefaultPath\DefaultPath">
         <arguments>
             <argument name="parts" xsi:type="array">
@@ -339,6 +339,21 @@
         </arguments>
     </virtualType>
 
+    <virtualType name="pageLayoutRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="move" xsi:type="string">Magento\Framework\View\Layout\Reader\Move</item>
+                <item name="remove" xsi:type="string">Magento\Framework\View\Layout\Reader\Remove</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Page\Layout\Reader">
+        <arguments>
+            <argument name="pageLayoutFileSource" xsi:type="object">pageLayoutFileCollectorAggregated</argument>
+            <argument name="reader" xsi:type="object">pageLayoutRenderPool</argument>
+        </arguments>
+    </type>
     <type name="Magento\Framework\View\PageLayout\File\Collector\Aggregated">
         <arguments>
             <argument name="baseFiles" xsi:type="object">pageFileSourceBaseSorted</argument>
diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json
index 53d46e89796428050d7e56d47bea6d70705d3a4a..cbc749a5bf0bf54a00736728ef57f3e72c84337d 100644
--- a/app/code/Magento/Cron/composer.json
+++ b/app/code/Magento/Cron/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json
index 953c93c3365e6459285d3abf1184a7b1f7d7a433..9d232c2af2a98857c7519f16e94adad9ed224be0 100644
--- a/app/code/Magento/CurrencySymbol/composer.json
+++ b/app/code/Magento/CurrencySymbol/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CurrencySymbol/view/adminhtml/layout/adminhtml_system_currencysymbol_index.xml b/app/code/Magento/CurrencySymbol/view/adminhtml/layout/adminhtml_system_currencysymbol_index.xml
index b29d8f31f33535c770f99043e35d668a5779e56c..fb8f5f51207c00c70bb19ea1eee1db1add2490c8 100644
--- a/app/code/Magento/CurrencySymbol/view/adminhtml/layout/adminhtml_system_currencysymbol_index.xml
+++ b/app/code/Magento/CurrencySymbol/view/adminhtml/layout/adminhtml_system_currencysymbol_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\CurrencySymbol\Block\Adminhtml\System\Currencysymbol" name="mage.system.currencysymbol" template="grid.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\CurrencySymbol\Block\Adminhtml\System\Currencysymbol" name="mage.system.currencysymbol" template="grid.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/Api/AccountManagementInterface.php b/app/code/Magento/Customer/Api/AccountManagementInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..cff1135d78b200a7a32ac4b7e2fc4b6f5ca02b09
--- /dev/null
+++ b/app/code/Magento/Customer/Api/AccountManagementInterface.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for managing customers accounts.
+ */
+interface AccountManagementInterface
+{
+    const DEFAULT_PASSWORD_LENGTH = 6;
+
+    /**
+     * Constants for the type of new account email to be sent
+     */
+    const NEW_ACCOUNT_EMAIL_REGISTERED = 'registered';
+
+    /**
+     * Welcome email, when confirmation is enabled
+     */
+    const NEW_ACCOUNT_EMAIL_CONFIRMATION = 'confirmation';
+
+    /**
+     * Create customer account. Perform necessary business operations like sending email.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @param string $password
+     * @param string $redirectUrl
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function createAccount(\Magento\Customer\Api\Data\CustomerInterface $customer, $password, $redirectUrl = '');
+
+    /**
+     * Create customer account using provided hashed password. Should not be exposed as a webapi.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @param string $hash Password hash that we can save directly
+     * @param string $redirectUrl URL fed to welcome email templates. Can be used by templates to, for example, direct
+     *                            the customer to a product they were looking at after pressing confirmation link.
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\InputException If bad input is provided
+     * @throws \Magento\Framework\Exception\State\InputMismatchException If the provided email is already used
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function createAccountWithPasswordHash(
+        \Magento\Customer\Api\Data\CustomerInterface $customer,
+        $hash,
+        $redirectUrl = ''
+    );
+
+    /**
+     * Validate customer data.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @return \Magento\Customer\Api\Data\ValidationResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function validate(\Magento\Customer\Api\Data\CustomerInterface $customer);
+
+    /**
+     * Check if customer can be deleted.
+     *
+     * @param int $customerId
+     * @return bool
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If group is not found
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function isReadonly($customerId);
+
+    /**
+     * Activate a customer account using a key that was sent in a confirmation e-mail.
+     *
+     * @param string $email
+     * @param string $confirmationKey
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function activate($email, $confirmationKey);
+
+    /**
+     * Authenticate a customer by username and password
+     *
+     * @param string $email
+     * @param string $password
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function authenticate($email, $password);
+
+    /**
+     * Change customer password.
+     *
+     * @param string $email
+     * @param string $currentPassword
+     * @param string $newPassword
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function changePassword($email, $currentPassword, $newPassword);
+
+    /**
+     * Send an email to the customer with a password reset link.
+     *
+     * @param string $email
+     * @param string $template
+     * @param int $websiteId
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function initiatePasswordReset($email, $template, $websiteId = null);
+
+    /**
+     * Reset customer password.
+     *
+     * @param string $email
+     * @param string $resetToken
+     * @param string $newPassword
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function resetPassword($email, $resetToken, $newPassword);
+
+    /**
+     * Check if password reset token is valid.
+     *
+     * @param int $customerId
+     * @param string $resetPasswordLinkToken
+     * @return bool True if the token is valid
+     * @throws \Magento\Framework\Exception\State\InputMismatchException If token is mismatched
+     * @throws \Magento\Framework\Exception\State\ExpiredException If token is expired
+     * @throws \Magento\Framework\Exception\InputException If token or customer id is invalid
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer doesn't exist
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function validateResetPasswordLinkToken($customerId, $resetPasswordLinkToken);
+
+    /**
+     * Gets the account confirmation status.
+     *
+     * @param int $customerId
+     * @return string
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getConfirmationStatus($customerId);
+
+    /**
+     * Resend confirmation email.
+     *
+     * @param string $email
+     * @param int $websiteId
+     * @param string $redirectUrl
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function resendConfirmation($email, $websiteId, $redirectUrl = '');
+
+    /**
+     * Check if given email is associated with a customer account in given website.
+     *
+     * @param string $customerEmail
+     * @param int $websiteId If not set, will use the current websiteId
+     * @return bool
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function isEmailAvailable($customerEmail, $websiteId = null);
+
+    /**
+     * Check store availability for customer given the customerId.
+     *
+     * @param int $customerWebsiteId
+     * @param int $storeId
+     * @return bool
+     */
+    public function isCustomerInStore($customerWebsiteId, $storeId);
+}
diff --git a/app/code/Magento/Customer/Api/AddressManagementInterface.php b/app/code/Magento/Customer/Api/AddressManagementInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..11b320e98b05e068c7c17ee21ff812d78f2b1cfe
--- /dev/null
+++ b/app/code/Magento/Customer/Api/AddressManagementInterface.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for managing customers addresses.
+ */
+interface AddressManagementInterface
+{
+    /**
+     * Validate customer address data.
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return \Magento\Customer\Api\Data\ValidationResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function validate(\Magento\Customer\Api\Data\AddressInterface $address);
+}
diff --git a/app/code/Magento/Customer/Api/AddressMetadataInterface.php b/app/code/Magento/Customer/Api/AddressMetadataInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..92fbea738562890dcae2679fedf91cfead772e4e
--- /dev/null
+++ b/app/code/Magento/Customer/Api/AddressMetadataInterface.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for retrieval information about customer address attributes metadata.
+ */
+interface AddressMetadataInterface extends MetadataInterface
+{
+    const ATTRIBUTE_SET_ID_ADDRESS = 2;
+
+    const ENTITY_TYPE_ADDRESS = 'customer_address';
+
+    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\Address';
+}
diff --git a/app/code/Magento/Customer/Api/AddressRepositoryInterface.php b/app/code/Magento/Customer/Api/AddressRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f7a1e069815c6e97244865f15de5149401553b16
--- /dev/null
+++ b/app/code/Magento/Customer/Api/AddressRepositoryInterface.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Api;
+
+/**
+ * Customer address CRUD interface.
+ */
+interface AddressRepositoryInterface
+{
+    /**
+     * Save customer address.
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return \Magento\Customer\Api\Data\AddressInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function save(\Magento\Customer\Api\Data\AddressInterface $address);
+
+    /**
+     * Retrieve customer address.
+     *
+     * @param int $addressId
+     * @return \Magento\Customer\Api\Data\AddressInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function get($addressId);
+
+    /**
+     * Retrieve customers addresses matching the specified criteria.
+     *
+     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @return \Magento\Customer\Api\Data\AddressSearchResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+
+    /**
+     * Delete customer address.
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function delete(\Magento\Customer\Api\Data\AddressInterface $address);
+
+    /**
+     * Delete customer address by ID.
+     *
+     * @param int $addressId
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function deleteById($addressId);
+}
diff --git a/app/code/Magento/Customer/Api/CustomerMetadataInterface.php b/app/code/Magento/Customer/Api/CustomerMetadataInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..c7c2448567fe942b040dce36223c0aa05a5ecc7c
--- /dev/null
+++ b/app/code/Magento/Customer/Api/CustomerMetadataInterface.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for retrieval information about customer attributes metadata.
+ */
+interface CustomerMetadataInterface extends MetadataInterface
+{
+    const ATTRIBUTE_SET_ID_CUSTOMER = 1;
+
+    const ENTITY_TYPE_CUSTOMER = 'customer';
+
+    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\Customer';
+}
diff --git a/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php b/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..cab779b8f699e2e7b3f98543f9060cdc38fb879f
--- /dev/null
+++ b/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Customer CRUD interface.
+ */
+interface CustomerRepositoryInterface
+{
+    /**
+     * Create customer.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\InputException If bad input is provided
+     * @throws \Magento\Framework\Exception\State\InputMismatchException If the provided email is already used
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function save(\Magento\Customer\Api\Data\CustomerInterface $customer);
+
+    /**
+     * Retrieve customer.
+     *
+     * @param string $email
+     * @param int|null $websiteId
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer with the specified ID does not exist.
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function get($email, $websiteId = null);
+
+    /**
+     * Retrieve customers which match a specified criteria.
+     *
+     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @return \Magento\Customer\Api\Data\CustomerSearchResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+
+    /**
+     * Delete customer.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function delete(\Magento\Customer\Api\Data\CustomerInterface $customer);
+
+    /**
+     * Delete customer by ID.
+     *
+     * @param int $customerId
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function deleteById($customerId);
+}
diff --git a/app/code/Magento/Customer/Api/Data/AddressInterface.php b/app/code/Magento/Customer/Api/Data/AddressInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..5116c7a1a420ed9f5ba6dc1ad1867ff21fb190a4
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/AddressInterface.php
@@ -0,0 +1,146 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
+
+/**
+ * Customer address interface.
+ */
+interface AddressInterface extends ExtensibleDataInterface
+{
+    /**
+     * Get ID
+     *
+     * @return int|null
+     */
+    public function getId();
+
+    /**
+     * Get customer ID
+     *
+     * @return int|null
+     */
+    public function getCustomerId();
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Customer\Api\Data\RegionInterface|null
+     */
+    public function getRegion();
+
+    /**
+     * Get country id
+     *
+     * @return int|null
+     */
+    public function getCountryId();
+
+    /**
+     * Get street
+     *
+     * @return string[]|null
+     */
+    public function getStreet();
+
+    /**
+     * Get company
+     *
+     * @return string|null
+     */
+    public function getCompany();
+
+    /**
+     * Get telephone number
+     *
+     * @return string|null
+     */
+    public function getTelephone();
+
+    /**
+     * Get fax number
+     *
+     * @return string|null
+     */
+    public function getFax();
+
+    /**
+     * Get postcode
+     *
+     * @return string|null
+     */
+    public function getPostcode();
+
+    /**
+     * Get city name
+     *
+     * @return string|null
+     */
+    public function getCity();
+
+    /**
+     * Get first name
+     *
+     * @return string|null
+     */
+    public function getFirstname();
+
+    /**
+     * Get last name
+     *
+     * @return string|null
+     */
+    public function getLastname();
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename();
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix();
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix();
+
+    /**
+     * Get Vat id
+     *
+     * @return string|null
+     */
+    public function getVatId();
+}
diff --git a/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..c73da297a2b897bcd55c2e65db9a3a19a44bebd2
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Interface for customer address search results.
+ */
+interface AddressSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+{
+    /**
+     * Get customer addresses list.
+     *
+     * @return \Magento\Customer\Api\Data\AddressInterface[]
+     */
+    public function getItems();
+}
diff --git a/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php b/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..76956a33f39c4dfe5ba737ab0391992ed897a176
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
@@ -0,0 +1,150 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Customer attribute metadata interface.
+ */
+interface AttributeMetadataInterface
+{
+    /**
+     * Retrieve code of the attribute.
+     *
+     * @return string
+     */
+    public function getAttributeCode();
+
+    /**
+     * Frontend HTML for input element.
+     *
+     * @return string
+     */
+    public function getFrontendInput();
+
+    /**
+     * Get template used for input (e.g. "date")
+     *
+     * @return string
+     */
+    public function getInputFilter();
+
+    /**
+     * Get label of the store.
+     *
+     * @return string
+     */
+    public function getStoreLabel();
+
+    /**
+     * Retrieve validation rules.
+     *
+     * @return \Magento\Customer\Service\V1\Data\Eav\ValidationRule[]
+     */
+    public function getValidationRules();
+
+    /**
+     * Number of lines of the attribute value.
+     *
+     * @return int
+     */
+    public function getMultilineCount();
+
+    /**
+     * Whether attribute is visible on frontend.
+     *
+     * @return bool
+     */
+    public function isVisible();
+
+    /**
+     * Whether attribute is required.
+     *
+     * @return bool
+     */
+    public function isRequired();
+
+    /**
+     * Get data model for attribute.
+     *
+     * @return string
+     */
+    public function getDataModel();
+
+    /**
+     * Return options of the attribute (key => value pairs for select)
+     *
+     * @return \Magento\Customer\Service\V1\Data\Eav\Option[]
+     */
+    public function getOptions();
+
+    /**
+     * Get class which is used to display the attribute on frontend.
+     *
+     * @return string
+     */
+    public function getFrontendClass();
+
+    /**
+     * Whether current attribute has been defined by a user.
+     *
+     * @return bool
+     */
+    public function isUserDefined();
+
+    /**
+     * Get attributes sort order.
+     *
+     * @return int
+     */
+    public function getSortOrder();
+
+    /**
+     * Get label which supposed to be displayed on frontend.
+     *
+     * @return string
+     */
+    public function getFrontendLabel();
+
+    /**
+     * Get the note attribute for the element.
+     *
+     * @return string
+     */
+    public function getNote();
+
+    /**
+     * Whether this is a system attribute.
+     *
+     * @return bool
+     */
+    public function isSystem();
+
+    /**
+     * Get backend type.
+     *
+     * @return string
+     */
+    public function getBackendType();
+}
diff --git a/app/code/Magento/Customer/Api/Data/CustomerInterface.php b/app/code/Magento/Customer/Api/Data/CustomerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..68d6a8632751da134a8dfba7b4bafa2ffa03dead
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/CustomerInterface.php
@@ -0,0 +1,167 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
+
+/**
+ * Customer interface.
+ */
+interface CustomerInterface extends ExtensibleDataInterface
+{
+    /**
+     * Get customer id
+     *
+     * @return int|null
+     */
+    public function getId();
+
+    /**
+     * Get group id
+     *
+     * @return int|null
+     */
+    public function getGroupId();
+
+    /**
+     * Get default billing address id
+     *
+     * @return int|null
+     */
+    public function getDefaultBilling();
+
+    /**
+     * Get default shipping address id
+     *
+     * @return int|null
+     */
+    public function getDefaultShipping();
+
+    /**
+     * Get confirmation
+     *
+     * @return string|null
+     */
+    public function getConfirmation();
+
+    /**
+     * Get created at time
+     *
+     * @return string|null
+     */
+    public function getCreatedAt();
+
+    /**
+     * Get created in area
+     *
+     * @return string|null
+     */
+    public function getCreatedIn();
+
+    /**
+     * Get date of birth
+     *
+     * @return string|null
+     */
+    public function getDob();
+
+    /**
+     * Get email address
+     *
+     * @return string
+     */
+    public function getEmail();
+
+    /**
+     * Get first name
+     *
+     * @return string
+     */
+    public function getFirstname();
+
+    /**
+     * Get gender
+     *
+     * @return string|null
+     */
+    public function getGender();
+
+    /**
+     * Get last name
+     *
+     * @return string
+     */
+    public function getLastname();
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename();
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix();
+
+    /**
+     * Get store id
+     *
+     * @return int|null
+     */
+    public function getStoreId();
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix();
+
+    /**
+     * Get tax Vat
+     *
+     * @return string|null
+     */
+    public function getTaxvat();
+
+    /**
+     * Get website id
+     *
+     * @return int|null
+     */
+    public function getWebsiteId();
+
+    /**
+     * Get customer addresses.
+     *
+     * @return \Magento\Customer\Api\Data\AddressInterface[]
+     */
+    public function getAddresses();
+}
diff --git a/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..702c2bea45b1e341dad643983a3955cd26b517c6
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Interface for customer search results.
+ */
+interface CustomerSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+{
+    /**
+     * Get customers list.
+     *
+     * @return \Magento\Customer\Api\Data\CustomerInterface[]
+     */
+    public function getItems();
+}
diff --git a/app/code/Magento/Customer/Api/Data/GroupInterface.php b/app/code/Magento/Customer/Api/Data/GroupInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..901776333ba408a61deac1139ec4ed65654edb37
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/GroupInterface.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
+
+/**
+ * Customer group interface.
+ */
+interface GroupInterface extends ExtensibleDataInterface
+{
+    /**
+     * Get id
+     *
+     * @return int
+     */
+    public function getId();
+
+    /**
+     * Get code
+     *
+     * @return string
+     */
+    public function getCode();
+
+    /**
+     * Get tax class id
+     *
+     * @return int
+     */
+    public function getTaxClassId();
+
+    /**
+     * Get tax class name
+     *
+     * @return string
+     */
+    public function getTaxClassName();
+}
diff --git a/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..61b28e75ef78a2b7c0ae4cca3f53a9d6761b51ec
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Interface for customer groups search results.
+ */
+interface GroupSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+{
+    /**
+     * Get customer groups list.
+     *
+     * @return \Magento\Customer\Api\Data\GroupInterface[]
+     */
+    public function getItems();
+}
diff --git a/app/code/Magento/Customer/Api/Data/RegionInterface.php b/app/code/Magento/Customer/Api/Data/RegionInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..ffcb8f275965238d3f4ed42cb3bd737d0a6791c9
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/RegionInterface.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Api\Data;
+
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
+
+/**
+ * Customer address region interface.
+ */
+interface RegionInterface extends ExtensibleDataInterface
+{
+    /**
+     * Get region code
+     *
+     * @return string
+     */
+    public function getRegionCode();
+
+    /**
+     * Get region
+     *
+     * @return string
+     */
+    public function getRegion();
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId();
+}
diff --git a/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php b/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f8895e8d762314e743a97d9eed503ed35dca4f1c
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Validation results interface.
+ */
+interface ValidationResultsInterface
+{
+    /**
+     * Check if the provided data is valid.
+     *
+     * @return bool
+     */
+    public function isValid();
+
+    /**
+     * Get error messages as array in case of validation failure, else return empty array.
+     *
+     * @return string[]
+     */
+    public function getMessages();
+}
diff --git a/app/code/Magento/Customer/Api/GroupManagementInterface.php b/app/code/Magento/Customer/Api/GroupManagementInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..a8a36ac8bab640e7778e80c6b9a0acd920b9ecdb
--- /dev/null
+++ b/app/code/Magento/Customer/Api/GroupManagementInterface.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for managing customer groups.
+ */
+interface GroupManagementInterface
+{
+    /**
+     * Check if customer group can be deleted.
+     *
+     * @param int $groupId
+     * @return bool
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If group is not found
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function isReadonly($groupId);
+
+    /**
+     * Get default customer group.
+     *
+     * @param int $storeId
+     * @return \Magento\Customer\Api\Data\GroupInterface
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getDefaultGroup($storeId = null);
+}
diff --git a/app/code/Magento/Customer/Api/GroupRepositoryInterface.php b/app/code/Magento/Customer/Api/GroupRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..a89bd29c2fbc27e51112f4d5417398ba4a9ee906
--- /dev/null
+++ b/app/code/Magento/Customer/Api/GroupRepositoryInterface.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Customer group CRUD interface
+ */
+interface GroupRepositoryInterface
+{
+    /**
+     * Save customer group.
+     *
+     * @param \Magento\Customer\Api\Data\GroupInterface $group
+     * @return \Magento\Customer\Api\Data\GroupInterface
+     * @throws \Magento\Framework\Exception\InputException If there is a problem with the input
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If a group ID is sent but the group does not exist
+     * @throws \Magento\Framework\Exception\State\InvalidTransitionException
+     *      If saving customer group with customer group code that is used by an existing customer group
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function save(\Magento\Customer\Api\Data\GroupInterface $group);
+
+    /**
+     * Get customer group by group ID.
+     *
+     * @param int $groupId
+     * @return \Magento\Customer\Api\Data\GroupInterface
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If $groupId is not found
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function get($groupId);
+
+    /**
+     * Retrieve customer groups.
+     *
+     * The list of groups can be filtered to exclude the NOT_LOGGED_IN group using the first parameter and/or it can
+     * be filtered by tax class.
+     *
+     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @return \Magento\Customer\Api\Data\GroupSearchResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+
+    /**
+     * Delete customer group.
+     *
+     * @param \Magento\Customer\Api\Data\GroupInterface $group
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\StateException If customer group cannot be deleted
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function delete(\Magento\Customer\Api\Data\GroupInterface $group);
+
+    /**
+     * Delete customer group by ID.
+     *
+     * @param int $groupId
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\StateException If customer group cannot be deleted
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function deleteById($groupId);
+}
diff --git a/app/code/Magento/Customer/Api/MetadataInterface.php b/app/code/Magento/Customer/Api/MetadataInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..63197ef988bf15f5cc0ea5e2f6946003c47a3d9f
--- /dev/null
+++ b/app/code/Magento/Customer/Api/MetadataInterface.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+/**
+ * Interface for getting attributes metadata. Note that this interface should not be used directly, use its children.
+ */
+interface MetadataInterface
+{
+    /**
+     * Retrieve all attributes filtered by form code
+     *
+     * @param string $formCode
+     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface[]
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getAttributes($formCode);
+
+    /**
+     * Retrieve attribute metadata.
+     *
+     * @param string $attributeCode
+     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getAttributeMetadata($attributeCode);
+
+    /**
+     * Get all attribute metadata.
+     *
+     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface[]
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getAllAttributesMetadata();
+
+    /**
+     *  Get custom attributes metadata for the given data interface.
+     *
+     * @param string $dataInterfaceName
+     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface[]
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getCustomAttributesMetadata($dataInterfaceName = '');
+}
diff --git a/app/code/Magento/Customer/Controller/Account.php b/app/code/Magento/Customer/Controller/Account.php
index 03c3636ed811e4c2ca4b526fcf46dbe86786af2a..89289194a1de90c7eb3ac63fa56fb5d1141c0d35 100644
--- a/app/code/Magento/Customer/Controller/Account.php
+++ b/app/code/Magento/Customer/Controller/Account.php
@@ -112,7 +112,6 @@ class Account extends \Magento\Framework\App\Action\Action
         } else {
             $this->_getSession()->setNoReferer(true);
         }
-        $this->_view->getPage()->getConfig()->addBodyClass('account');
         $result = parent::dispatch($request);
         $this->_getSession()->unsNoReferer(false);
         return $result;
diff --git a/app/code/Magento/Customer/Model/GroupRegistry.php b/app/code/Magento/Customer/Model/GroupRegistry.php
index 195496d8d87fcdd436f53c825c589953d2ef39e2..3fad639bdca8ffc1648c2138de5ed906c4f73d12 100644
--- a/app/code/Magento/Customer/Model/GroupRegistry.php
+++ b/app/code/Magento/Customer/Model/GroupRegistry.php
@@ -24,6 +24,7 @@
 
 namespace Magento\Customer\Model;
 
+use Magento\Customer\Service\V1\Data\CustomerGroup;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Customer\Model\GroupFactory;
 use Magento\Customer\Model\Group;
@@ -66,7 +67,7 @@ class GroupRegistry
         $group = $this->groupFactory->create();
         $group->load($groupId);
         if (is_null($group->getId()) || $group->getId() != $groupId) {
-            throw NoSuchEntityException::singleField('groupId', $groupId);
+            throw NoSuchEntityException::singleField(CustomerGroup::ID, $groupId);
         }
         $this->registry[$groupId] = $group;
         return $group;
diff --git a/app/code/Magento/Customer/README.md b/app/code/Magento/Customer/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f3de8700173ce1d4e79611ee4e08e0818e5d4f32
--- /dev/null
+++ b/app/code/Magento/Customer/README.md
@@ -0,0 +1 @@
+The Magento_Customer module serves to handle the customer data (Customer, Customer Address and Customer Group entities) both in the admin panel and the storefront.
diff --git a/app/code/Magento/Customer/Service/V1/CustomerGroupService.php b/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
index 52aa6be08a999c78da030bb7953d7fc05b1e5ead..d3d73a017342c8a2b9a973628b8c798adf81057e 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
@@ -226,9 +226,9 @@ class CustomerGroupService implements CustomerGroupServiceInterface
     /**
      * {@inheritdoc}
      */
-    public function getGroup($groupId)
+    public function getGroup($id)
     {
-        $customerGroup = $this->_groupRegistry->retrieve($groupId);
+        $customerGroup = $this->_groupRegistry->retrieve($id);
         $this->_customerGroupBuilder->setId($customerGroup->getId())
             ->setCode($customerGroup->getCode())
             ->setTaxClassId($customerGroup->getTaxClassId());
@@ -244,7 +244,7 @@ class CustomerGroupService implements CustomerGroupServiceInterface
             $storeId = $this->_storeManager->getStore()->getCode();
         }
         try {
-            $groupId = $this->_scopeConfig->getValue(
+            $id = $this->_scopeConfig->getValue(
                 \Magento\Customer\Service\V1\CustomerGroupServiceInterface::XML_PATH_DEFAULT_ID,
                 \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
                 $storeId
@@ -253,19 +253,19 @@ class CustomerGroupService implements CustomerGroupServiceInterface
             throw NoSuchEntityException::singleField('storeId', $storeId);
         }
         try {
-            return $this->getGroup($groupId);
+            return $this->getGroup($id);
         } catch (NoSuchEntityException $e) {
-            throw NoSuchEntityException::doubleField('groupId', $groupId, 'storeId', $storeId);
+            throw NoSuchEntityException::doubleField(CustomerGroup::ID, $id, 'storeId', $storeId);
         }
     }
 
     /**
      * {@inheritdoc}
      */
-    public function canDelete($groupId)
+    public function canDelete($id)
     {
-        $customerGroup = $this->_groupRegistry->retrieve($groupId);
-        return $groupId > 0 && !$customerGroup->usesAsDefault();
+        $customerGroup = $this->_groupRegistry->retrieve($id);
+        return $id > 0 && !$customerGroup->usesAsDefault();
     }
 
     /**
@@ -312,7 +312,7 @@ class CustomerGroupService implements CustomerGroupServiceInterface
     /**
      * {@inheritdoc}
      */
-    public function updateGroup($groupId, Data\CustomerGroup $group)
+    public function updateGroup($id, Data\CustomerGroup $group)
     {
         if (!$group->getCode()) {
             throw InputException::invalidFieldValue('code', $group->getCode());
@@ -321,9 +321,9 @@ class CustomerGroupService implements CustomerGroupServiceInterface
         /** @var /Magento/Customer/Model/Group $customerGroup */
         $customerGroup = null;
         try {
-            $customerGroup = $this->_groupRegistry->retrieve($groupId);
+            $customerGroup = $this->_groupRegistry->retrieve($id);
         } catch (NoSuchEntityException $e) {
-            throw NoSuchEntityException::singleField('id', $groupId);
+            throw NoSuchEntityException::singleField('id', $id);
         }
 
         $customerGroup->setCode($group->getCode());
@@ -376,18 +376,18 @@ class CustomerGroupService implements CustomerGroupServiceInterface
     /**
      * {@inheritdoc}
      */
-    public function deleteGroup($groupId)
+    public function deleteGroup($id)
     {
-        if (!$this->canDelete($groupId)) {
+        if (!$this->canDelete($id)) {
             throw new StateException('Cannot delete group.');
         }
 
         // Get group so we can throw an exception if it doesn't exist
-        $this->getGroup($groupId);
+        $this->getGroup($id);
         $customerGroup = $this->_groupFactory->create();
-        $customerGroup->setId($groupId);
+        $customerGroup->setId($id);
         $customerGroup->delete();
-        $this->_groupRegistry->remove($groupId);
+        $this->_groupRegistry->remove($id);
         return true;
     }
 }
diff --git a/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php b/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
index 98b8e7034d8f26dd202cd7a8989a2551ccce4dca..636c9878107f6e3beedbd29f0d78639b3413581a 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
@@ -61,11 +61,11 @@ interface CustomerGroupServiceInterface
     /**
      * Get a customer group by group ID.
      *
-     * @param string $groupId
-     * @throws \Magento\Framework\Exception\NoSuchEntityException If $groupId is not found
+     * @param string $id
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If $id is not found
      * @return \Magento\Customer\Service\V1\Data\CustomerGroup
      */
-    public function getGroup($groupId);
+    public function getGroup($id);
 
     /**
      * Get default group
@@ -79,11 +79,11 @@ interface CustomerGroupServiceInterface
     /**
      * Check if the group can be deleted
      *
-     * @param string $groupId
+     * @param string $id
      * @throws \Magento\Framework\Exception\NoSuchEntityException If group is not found
      * @return bool True, if this group can be deleted
      */
-    public function canDelete($groupId);
+    public function canDelete($id);
 
     /**
      * Create group
@@ -100,7 +100,7 @@ interface CustomerGroupServiceInterface
     /**
      * Update group
      *
-     * @param string $groupId
+     * @param string $id
      * @param \Magento\Customer\Service\V1\Data\CustomerGroup $group
      * @throws \Magento\Framework\Exception\InputException If there is a problem with the input
      * @throws \Magento\Framework\Exception\NoSuchEntityException If a group ID is sent but the group does not exist
@@ -109,16 +109,16 @@ interface CustomerGroupServiceInterface
      * @throws \Magento\Framework\Model\Exception If something goes wrong during save
      * @return bool True if this group was updated
      */
-    public function updateGroup($groupId, \Magento\Customer\Service\V1\Data\CustomerGroup $group);
+    public function updateGroup($id, \Magento\Customer\Service\V1\Data\CustomerGroup $group);
 
     /**
      * Delete group
      *
-     * @param string $groupId
-     * @throws \Magento\Framework\Exception\NoSuchEntityException If $groupId is not found
+     * @param string $id
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If $id is not found
      * @throws \Magento\Framework\Exception\StateException Thrown if cannot delete group
      * @throws \Exception If something goes wrong during delete
      * @return bool True if the group was deleted
      */
-    public function deleteGroup($groupId);
+    public function deleteGroup($id);
 }
diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json
index 94c4dc96e2d2d8f839979eb7e136849e60ff4492..b79356d0f0808673bcab828a64b0feb0801d3f28 100644
--- a/app/code/Magento/Customer/composer.json
+++ b/app/code/Magento/Customer/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-newsletter": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-review": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-authorization": "0.1.0-alpha101",
-        "magento/module-integration": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-newsletter": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-review": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-integration": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Customer/etc/webapi.xml b/app/code/Magento/Customer/etc/webapi.xml
index 4308398117b09dfe9cd53fae7f4c719db360a286..854d147619aa15daa5792fc669376210b5cd37a1 100644
--- a/app/code/Magento/Customer/etc/webapi.xml
+++ b/app/code/Magento/Customer/etc/webapi.xml
@@ -26,7 +26,7 @@
 <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd">
     <!-- Customer Group Service-->
-    <route url="/V1/customerGroups/:groupId" method="GET">
+    <route url="/V1/customerGroups/:id" method="GET">
         <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="getGroup"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
@@ -50,7 +50,7 @@
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
-    <route url="/V1/customerGroups/:groupId/permissions" method="GET">
+    <route url="/V1/customerGroups/:id/permissions" method="GET">
         <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="canDelete"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
@@ -74,13 +74,13 @@
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
-    <route url="/V1/customerGroups/:groupId" method="PUT">
+    <route url="/V1/customerGroups/:id" method="PUT">
         <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="updateGroup"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
-    <route url="/V1/customerGroups/:groupId" method="DELETE">
+    <route url="/V1/customerGroups/:id" method="DELETE">
         <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="deleteGroup"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
diff --git a/app/code/Magento/Customer/view/adminhtml/layout/customer_group_index.xml b/app/code/Magento/Customer/view/adminhtml/layout/customer_group_index.xml
index 5e440b2ebab0ba89494117c2a3f173ac79a0cbd7..8d19b1624d7783c7a6cc072fc1581f6887f7d73a 100644
--- a/app/code/Magento/Customer/view/adminhtml/layout/customer_group_index.xml
+++ b/app/code/Magento/Customer/view/adminhtml/layout/customer_group_index.xml
@@ -23,50 +23,51 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Adminhtml\Group" name="adminhtml.block.customer.group.grid.container">
-            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.customer.group.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">customerGroupGrid</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\Customer\Model\Resource\Group\Grid\ServiceCollection</argument>
-                    <argument name="default_sort" xsi:type="string">type</argument>
-                    <argument name="default_dir" xsi:type="string">asc</argument>
-                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.customer.group.grid.columnSet">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Adminhtml\Group" name="adminhtml.block.customer.group.grid.container">
+                <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.customer.group.grid" as="grid">
                     <arguments>
-                        <argument name="rowUrl" xsi:type="array">
-                            <item name="path" xsi:type="string">customer/*/edit</item>
-                            <item name="extraParamsTemplate" xsi:type="array">
-                                <item name="id" xsi:type="string">getId</item>
-                            </item>
-                        </argument>
+                        <argument name="id" xsi:type="string">customerGroupGrid</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\Customer\Model\Resource\Group\Grid\ServiceCollection</argument>
+                        <argument name="default_sort" xsi:type="string">type</argument>
+                        <argument name="default_dir" xsi:type="string">asc</argument>
+                        <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="time">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.customer.group.grid.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">ID</argument>
-                            <argument name="id" xsi:type="string">id</argument>
-                            <argument name="index" xsi:type="string">id</argument>
-                            <argument name="column_css_class" xsi:type="string">col-id</argument>
-                            <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Group</argument>
-                            <argument name="index" xsi:type="string">code</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="class_name">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Tax Class</argument>
-                            <argument name="index" xsi:type="string">tax_class_name</argument>
+                            <argument name="rowUrl" xsi:type="array">
+                                <item name="path" xsi:type="string">customer/*/edit</item>
+                                <item name="extraParamsTemplate" xsi:type="array">
+                                    <item name="id" xsi:type="string">getId</item>
+                                </item>
+                            </argument>
                         </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="time">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">ID</argument>
+                                <argument name="id" xsi:type="string">id</argument>
+                                <argument name="index" xsi:type="string">id</argument>
+                                <argument name="column_css_class" xsi:type="string">col-id</argument>
+                                <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Group</argument>
+                                <argument name="index" xsi:type="string">code</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="class_name">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Tax Class</argument>
+                                <argument name="index" xsi:type="string">tax_class_name</argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_edit.xml b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_edit.xml
index a10fef9f7f1307ba3b60e5777617bc1769111108..547edb9e6afd703a9909bed7184dc1bf66a8cc13 100644
--- a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_edit.xml
+++ b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_edit.xml
@@ -23,24 +23,26 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Adminhtml\Edit" name="customer_edit"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Customer\Block\Adminhtml\Edit\Tabs" name="customer_edit_tabs">
-            <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View" name="customer_edit_tab_view" template="tab/view.phtml">
-                <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\PersonalInfo" name="personal_info" template="tab/view/personal_info.phtml"/>
-                <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\Sales" name="sales" template="tab/view/sales.phtml"/>
-                <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\Accordion" name="accordion"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Adminhtml\Edit" name="customer_edit"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Customer\Block\Adminhtml\Edit\Tabs" name="customer_edit_tabs">
+                <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View" name="customer_edit_tab_view" template="tab/view.phtml">
+                    <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\PersonalInfo" name="personal_info" template="tab/view/personal_info.phtml"/>
+                    <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\Sales" name="sales" template="tab/view/sales.phtml"/>
+                    <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\Accordion" name="accordion"/>
+                </block>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">customer_edit_tab_view</argument>
+                    <argument name="block" xsi:type="string">customer_edit_tab_view</argument>
+                </action>
             </block>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">customer_edit_tab_view</argument>
-                <argument name="block" xsi:type="string">customer_edit_tab_view</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" template="Magento_Customer::edit/js.phtml" name="customer.edit.js" as="customer_edit_js"/>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" template="Magento_Customer::edit/js.phtml" name="customer.edit.js" as="customer_edit_js"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_grid_block.xml b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_grid_block.xml
index 1583c5863533cdf4c71be220be3feed9fad64ba2..5145af4f96773ff313930acf005b175ac9544aaa 100644
--- a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_grid_block.xml
+++ b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_grid_block.xml
@@ -23,167 +23,168 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="admin.block.customer.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="admin.block.customer.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">customerGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Customer\Model\Resource\Customer\Grid\ServiceCollection</argument>
-                <argument name="default_sort" xsi:type="string">entity_id</argument>
-                <argument name="default_dir" xsi:type="string">asc</argument>
-                <argument name="save_parameters_in_session" xsi:type="boolean">true</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="grid_url" xsi:type="url" path="customer/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="admin.block.customer.grid.massaction" as="grid.massaction">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="admin.block.customer.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="admin.block.customer.grid" as="grid">
                 <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
-                    <argument name="form_field_name" xsi:type="string">customer</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="delete" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Delete</item>
-                            <item name="url" xsi:type="string">customer/*/massDelete</item>
-                            <item name="confirm" xsi:type="string" translate="true">Are you sure you want to delete?</item>
-                        </item>
-                        <item name="newsletter_subscribe" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Subscribe to Newsletter</item>
-                            <item name="url" xsi:type="string">customer/*/massSubscribe</item>
-                        </item>
-                        <item name="newsletter_unsubscribe" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Unsubscribe from Newsletter</item>
-                            <item name="url" xsi:type="string">customer/*/massUnsubscribe</item>
-                        </item>
-                        <item name="assign_group" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Assign a Customer Group</item>
-                            <item name="url" xsi:type="string">customer/*/massAssignGroup</item>
-                            <item name="block_name" xsi:type="string">grid.groups</item>
-                        </item>
+                    <argument name="id" xsi:type="string">customerGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Customer\Model\Resource\Customer\Grid\ServiceCollection</argument>
+                    <argument name="default_sort" xsi:type="string">entity_id</argument>
+                    <argument name="default_dir" xsi:type="string">asc</argument>
+                    <argument name="save_parameters_in_session" xsi:type="boolean">true</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="grid_url" xsi:type="url" path="customer/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Massaction\Additional" name="admin.block.customer.grid.groups.massactions" as="grid.groups">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="admin.block.customer.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="fields" xsi:type="array">
-                            <item name="visibility" xsi:type="array">
-                                <item name="name" xsi:type="string">group</item>
-                                <item name="type" xsi:type="string">select</item>
-                                <item name="class" xsi:type="string">required-entry</item>
-                                <item name="label" xsi:type="string" translate="true">Group</item>
-                                <item name="values" xsi:type="string">Magento\Customer\Model\Config\Source\Group</item>
+                        <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
+                        <argument name="form_field_name" xsi:type="string">customer</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="delete" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Delete</item>
+                                <item name="url" xsi:type="string">customer/*/massDelete</item>
+                                <item name="confirm" xsi:type="string" translate="true">Are you sure you want to delete?</item>
+                            </item>
+                            <item name="newsletter_subscribe" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Subscribe to Newsletter</item>
+                                <item name="url" xsi:type="string">customer/*/massSubscribe</item>
+                            </item>
+                            <item name="newsletter_unsubscribe" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Unsubscribe from Newsletter</item>
+                                <item name="url" xsi:type="string">customer/*/massUnsubscribe</item>
+                            </item>
+                            <item name="assign_group" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Assign a Customer Group</item>
+                                <item name="url" xsi:type="string">customer/*/massAssignGroup</item>
+                                <item name="block_name" xsi:type="string">grid.groups</item>
                             </item>
                         </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Massaction\Additional" name="admin.block.customer.grid.groups.massactions" as="grid.groups">
+                        <arguments>
+                            <argument name="fields" xsi:type="array">
+                                <item name="visibility" xsi:type="array">
+                                    <item name="name" xsi:type="string">group</item>
+                                    <item name="type" xsi:type="string">select</item>
+                                    <item name="class" xsi:type="string">required-entry</item>
+                                    <item name="label" xsi:type="string" translate="true">Group</item>
+                                    <item name="values" xsi:type="string">Magento\Customer\Model\Config\Source\Group</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
                 </block>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="admin.block.customer.grid.columnSet" as="grid.columnSet">
-                <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">customer/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="id" xsi:type="string">entity_id</argument>
-                        <argument name="index" xsi:type="string">entity_id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Email</argument>
-                        <argument name="index" xsi:type="string">email</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="group">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Group</argument>
-                        <argument name="index" xsi:type="string">group_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Customer\Model\Config\Source\Group\Multiselect"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_telephone">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Phone</argument>
-                        <argument name="index" xsi:type="string">billing_telephone</argument>
-                        <argument name="column_css_class" xsi:type="string">col-phone</argument>
-                        <argument name="header_css_class" xsi:type="string">col-phone</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_postcode">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ZIP</argument>
-                        <argument name="index" xsi:type="string">billing_postcode</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_country_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Country</argument>
-                        <argument name="index" xsi:type="string">billing_country_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Locale\Country"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_region">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">State/Province</argument>
-                        <argument name="index" xsi:type="string">billing_region</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_since">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Customer Since</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="gmtoffset" xsi:type="boolean">true</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="website_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Web Site</argument>
-                        <argument name="column_css_class" xsi:type="string">col-store</argument>
-                        <argument name="header_css_class" xsi:type="string">col-store</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\AdminOptionHash"/>
-                        <argument name="index" xsi:type="string">website_id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Customer::customer">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="admin.block.customer.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="getter" xsi:type="string">getId</argument>
-                        <argument name="filter" xsi:type="boolean">false</argument>
-                        <argument name="sortable" xsi:type="boolean">false</argument>
-                        <argument name="index" xsi:type="string">stores</argument>
-                        <argument name="is_system" xsi:type="boolean">true</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="view_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">Edit</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">customer/*/edit</item>
-                                </item>
-                                <item name="field" xsi:type="string">id</item>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">customer/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="id" xsi:type="string">entity_id</argument>
+                            <argument name="index" xsi:type="string">entity_id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Email</argument>
+                            <argument name="index" xsi:type="string">email</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="group">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Group</argument>
+                            <argument name="index" xsi:type="string">group_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Customer\Model\Config\Source\Group\Multiselect"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_telephone">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Phone</argument>
+                            <argument name="index" xsi:type="string">billing_telephone</argument>
+                            <argument name="column_css_class" xsi:type="string">col-phone</argument>
+                            <argument name="header_css_class" xsi:type="string">col-phone</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_postcode">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ZIP</argument>
+                            <argument name="index" xsi:type="string">billing_postcode</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_country_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Country</argument>
+                            <argument name="index" xsi:type="string">billing_country_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Locale\Country"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_region">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">State/Province</argument>
+                            <argument name="index" xsi:type="string">billing_region</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_since">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Customer Since</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="gmtoffset" xsi:type="boolean">true</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="website_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Web Site</argument>
+                            <argument name="column_css_class" xsi:type="string">col-store</argument>
+                            <argument name="header_css_class" xsi:type="string">col-store</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\AdminOptionHash"/>
+                            <argument name="index" xsi:type="string">website_id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Customer::customer">
+                        <arguments>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="getter" xsi:type="string">getId</argument>
+                            <argument name="filter" xsi:type="boolean">false</argument>
+                            <argument name="sortable" xsi:type="boolean">false</argument>
+                            <argument name="index" xsi:type="string">stores</argument>
+                            <argument name="is_system" xsi:type="boolean">true</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="view_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">Edit</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">customer/*/edit</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">id</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_index.xml b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_index.xml
index 3fbd053f8873835b4ce7a9ab20c553e8cea650d9..94db943f0a8066c6481fce202d11b29a5bc832c6 100644
--- a/app/code/Magento/Customer/view/adminhtml/layout/customer_index_index.xml
+++ b/app/code/Magento/Customer/view/adminhtml/layout/customer_index_index.xml
@@ -23,12 +23,13 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="customer_index_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Adminhtml\Customer" name="admin.block.customer.grid.container">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Adminhtml\Customer" name="admin.block.customer.grid.container">
         </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account.xml
index 49482d28ca8a411fb111825baef1b95517eff5ab..556ec1560260baf94c75888e7306da7f79af45dc 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account.xml
@@ -23,30 +23,30 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Customer My Account (All Pages)" design_abstraction="custom">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Customer My Account (All Pages)" design_abstraction="custom">
     <body>
         <attribute name="class" value="account"/>
-    </body>
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\Framework\View\Element\Html\Links" name="customer_account_navigation" before="-" template="Magento_Customer::account/navigation.phtml">
-            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-link">
-                <arguments>
-                    <argument name="label" xsi:type="string">Account Dashboard</argument>
-                    <argument name="path" xsi:type="string">customer/account</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-edit-link">
-                <arguments>
-                    <argument name="label" xsi:type="string">Account Information</argument>
-                    <argument name="path" xsi:type="string">customer/account/edit</argument>
-                </arguments>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\Framework\View\Element\Html\Links" name="customer_account_navigation" before="-" template="Magento_Customer::account/navigation.phtml">
+                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-link">
+                    <arguments>
+                        <argument name="label" xsi:type="string">Account Dashboard</argument>
+                        <argument name="path" xsi:type="string">customer/account</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-edit-link">
+                    <arguments>
+                        <argument name="label" xsi:type="string">Account Information</argument>
+                        <argument name="path" xsi:type="string">customer/account/edit</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-address-link">
+                    <arguments>
+                        <argument name="label" xsi:type="string">Address Book</argument>
+                        <argument name="path" xsi:type="string">customer/address</argument>
+                    </arguments>
+                </block>
             </block>
-            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-address-link">
-                <arguments>
-                    <argument name="label" xsi:type="string">Address Book</argument>
-                    <argument name="path" xsi:type="string">customer/address</argument>
-                </arguments>
-            </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_confirmation.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_confirmation.xml
index 4bf5a631e735d355bc73666f08ae71454e75fad4..12e1460a659b544afcdd12585797ad635cfae25c 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_confirmation.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_confirmation.xml
@@ -23,11 +23,13 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Send confirmation link</title>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="accountConfirmation" template="Magento_Customer::form/confirmation.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="accountConfirmation" template="Magento_Customer::form/confirmation.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
index 7cec5d48ca8fe4ef79d1d12fb4328cc2b0190b1e..8e361bb4fea96cc18d424e6d21649012bb3b45b9 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
@@ -23,24 +23,26 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="customer_account_create_head_components" template="Magento_Customer::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="form/register.phtml" cacheable="false">
-            <container name="form.additional.info" label="invisible" as="form_additional_info"/>
-            <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
-        </block>
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="registerSubmitButton" xsi:type="string">.action.submit</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Framework\View\Element\Template" name="form_additional_info_customer" template="Magento_Customer::additionalinfocustomer.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="customer_account_create_head_components" template="Magento_Customer::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="form/register.phtml" cacheable="false">
+                <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+                <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
+            </block>
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="registerSubmitButton" xsi:type="string">.action.submit</item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Framework\View\Element\Template" name="form_additional_info_customer" template="Magento_Customer::additionalinfocustomer.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_createpassword.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_createpassword.xml
index fd0c4a6d112440b3abdf66968d2be8c6492192e1..8539dd455bff4250821d6922ecf5df0146761716 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_createpassword.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_createpassword.xml
@@ -23,16 +23,18 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Reset a Password</title>
     </head>
-    <referenceBlock name="root">
-        <action method="setHeaderTitle">
-            <argument translate="true" name="title" xsi:type="string">Reset a Password</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Account\Resetpassword" name="resetPassword" template="form/resetforgottenpassword.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="root">
+            <action method="setHeaderTitle">
+                <argument translate="true" name="title" xsi:type="string">Reset a Password</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Account\Resetpassword" name="resetPassword" template="form/resetforgottenpassword.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_edit.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_edit.xml
index 233afffab264b832deadc3b9f2e6740c3438887a..6e5bb7e3fc88259ff9368a152d81e2a47a2a8023 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_edit.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_edit.xml
@@ -25,15 +25,17 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="customer_account_edit_head_components" template="Magento_Customer::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Edit Account Information</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Form\Edit" name="customer_edit" template="form/edit.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="customer_account_edit_head_components" template="Magento_Customer::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Edit Account Information</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Form\Edit" name="customer_edit" template="form/edit.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
index 8c7a3d96ec8ff487da18ccd412ab4af42c3b66e4..242afb239603213303d74b98fd4935234638a113 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
@@ -23,18 +23,20 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Forgot Your Password</title>
     </head>
-    <referenceBlock name="root">
-        <action method="setHeaderTitle">
-            <argument translate="true" name="title" xsi:type="string">Password forgotten</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Account\Forgotpassword" name="forgotPassword" template="form/forgotpassword.phtml">
-            <container name="form.additional.info" label="invisible" as="form_additional_info"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="root">
+            <action method="setHeaderTitle">
+                <argument translate="true" name="title" xsi:type="string">Password forgotten</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Account\Forgotpassword" name="forgotPassword" template="form/forgotpassword.phtml">
+                <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_index.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_index.xml
index e101de356d8978b351115873668ce9ebb8caffa9..3271f5481d523f2aebfd782c09fd27e978a4244f 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_index.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_index.xml
@@ -23,16 +23,18 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">My Dashboard</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="customer_account_dashboard_top" as="top"/>
-        <block class="Magento\Customer\Block\Account\Dashboard\Info" name="customer_account_dashboard_info" as="info" template="account/dashboard/info.phtml"/>
-        <block class="Magento\Customer\Block\Account\Dashboard\Address" name="customer_account_dashboard_address" as="address" template="account/dashboard/address.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">My Dashboard</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="customer_account_dashboard_top" as="top"/>
+            <block class="Magento\Customer\Block\Account\Dashboard\Info" name="customer_account_dashboard_info" as="info" template="account/dashboard/info.phtml"/>
+            <block class="Magento\Customer\Block\Account\Dashboard\Address" name="customer_account_dashboard_address" as="address" template="account/dashboard/address.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
index 3ad7210093c136669c733d23a15ec686431376f5..7332bd8e83e3f23a6f9c707f581739c0f7bd52c4 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
@@ -23,24 +23,26 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <!-- customer.form.login.extra -->
-        <container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login container">
-            <block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="form/login.phtml" cacheable="false">
-                <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <!-- customer.form.login.extra -->
+            <container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login container">
+                <block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="form/login.phtml" cacheable="false">
+                    <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+                </block>
+                <block class="Magento\Customer\Block\Form\Login" name="customer.new" template="newcustomer.phtml" cacheable="false"/>
+            </container>
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="loginButton" xsi:type="string">.action.login</item>
+                    </argument>
+                </arguments>
             </block>
-            <block class="Magento\Customer\Block\Form\Login" name="customer.new" template="newcustomer.phtml" cacheable="false"/>
-        </container>
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="loginButton" xsi:type="string">.action.login</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Framework\View\Element\Template" name="form_additional_info_customer" template="Magento_Customer::additionalinfocustomer.phtml"/>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Framework\View\Element\Template" name="form_additional_info_customer" template="Magento_Customer::additionalinfocustomer.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_logoutsuccess.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_logoutsuccess.xml
index 58fc121782d9130aaf0d2dacc871f5b0388daae9..5f6ec4c13a84bdb749180cfdee1f0b56dd6a76ef 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_logoutsuccess.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_logoutsuccess.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument name="title" translate="true" xsi:type="string">You are now logged out</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="customer_logout" template="Magento_Customer::logout.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument name="title" translate="true" xsi:type="string">You are now logged out</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="customer_logout" template="Magento_Customer::logout.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_address_form.xml b/app/code/Magento/Customer/view/frontend/layout/customer_address_form.xml
index 29a96a4d6d691ad5e75e13975d942b45f7efcd41..d5afa6295e36dc59a0f04bf2f6d801f11a45a1bb 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_address_form.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_address_form.xml
@@ -25,15 +25,17 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="customer_page_head_components" template="Magento_Customer::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="customer-account-navigation-address-link">
-        <arguments>
-            <argument name="is_highlighted" xsi:type="boolean">true</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Address\Edit" name="customer_address_edit" template="address/edit.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="customer_page_head_components" template="Magento_Customer::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="customer-account-navigation-address-link">
+            <arguments>
+                <argument name="is_highlighted" xsi:type="boolean">true</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Address\Edit" name="customer_address_edit" template="address/edit.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_address_index.xml b/app/code/Magento/Customer/view/frontend/layout/customer_address_index.xml
index c9159675d91cfd08ddf2e0f26000540e537e98ec..8d80fc53f73166d093ff711d5b6cff96b24a9647 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_address_index.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_address_index.xml
@@ -25,10 +25,12 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="customer_address_head_components" template="Magento_Customer::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Address\Book" name="address_book" template="address/book.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="customer_address_head_components" template="Magento_Customer::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Address\Book" name="address_book" template="address/book.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Customer/view/frontend/layout/default.xml b/app/code/Magento/Customer/view/frontend/layout/default.xml
index 0fcd958c95b1b6f7752afb86ba43d72e50e7e6ac..08fa79ffa2b3cf1376f01d323646185e839b7373 100644
--- a/app/code/Magento/Customer/view/frontend/layout/default.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/default.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="top.links">
-        <block class="Magento\Customer\Block\Account\Link" name="my-account-link">
-            <arguments>
-                <argument name="label" xsi:type="string" translate="true">My Account</argument>
-            </arguments>
-        </block>
-        <block class="Magento\Customer\Block\Account\RegisterLink" name="register-link">
-            <arguments>
-                <argument name="label" xsi:type="string" translate="true">Register</argument>
-            </arguments>
-        </block>
-        <block class="Magento\Customer\Block\Account\AuthorizationLink" name="authorization-link" template="account/link/authorization.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="top.links">
+            <block class="Magento\Customer\Block\Account\Link" name="my-account-link">
+                <arguments>
+                    <argument name="label" xsi:type="string" translate="true">My Account</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Customer\Block\Account\RegisterLink" name="register-link">
+                <arguments>
+                    <argument name="label" xsi:type="string" translate="true">Register</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Customer\Block\Account\AuthorizationLink" name="authorization-link" template="account/link/authorization.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/CustomerImportExport/README.md b/app/code/Magento/CustomerImportExport/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..88c21e1e6fd82d04cf2cb2e1aeb3ea845c2a4f47
--- /dev/null
+++ b/app/code/Magento/CustomerImportExport/README.md
@@ -0,0 +1 @@
+The Magento_CustomerImportExport module handles the import and export of the customers data and related addresses.
diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json
index 364a34ece0fa8ebd0ed27e6e754feda60afb44db..4ed72ac9b8b1ef7920a188476ff017bb07a232c6 100644
--- a/app/code/Magento/CustomerImportExport/composer.json
+++ b/app/code/Magento/CustomerImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-import-export": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-import-export": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportcsv.xml b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportcsv.xml
index 3d849759843cc2c38e436bb2c73e87ecba6c21c8..2610f09e6fc0555830c0850663a247ea9ed81a12 100644
--- a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportcsv.xml
+++ b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_index_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="admin.block.customer.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="admin.block.customer.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportxml.xml b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportxml.xml
index 3d849759843cc2c38e436bb2c73e87ecba6c21c8..2610f09e6fc0555830c0850663a247ea9ed81a12 100644
--- a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportxml.xml
+++ b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_import_export_index_exportxml.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_index_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="admin.block.customer.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="admin.block.customer.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_index_grid_block.xml b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_index_grid_block.xml
index 57ca2d8cefb6be04b698be84768e065c5f173543..891ba65fcdf549da2a9b094cefbdf9c274300488 100644
--- a/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_index_grid_block.xml
+++ b/app/code/Magento/CustomerImportExport/view/adminhtml/layout/customer_index_grid_block.xml
@@ -23,22 +23,23 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="admin.block.customer.grid">
-        <block class="Magento\Backend\Block\Widget\Grid\Export" name="admin.block.customer.grid.export" as="grid.export">
-            <arguments>
-                <argument name="exportTypes" xsi:type="array">
-                    <item name="csv" xsi:type="array">
-                        <item name="urlPath" xsi:type="string">customer_import_export/*/exportCsv</item>
-                        <item name="label" xsi:type="string" translate="true">CSV</item>
-                    </item>
-                    <item name="excel" xsi:type="array">
-                        <item name="urlPath" xsi:type="string">customer_import_export/*/exportXml</item>
-                        <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                    </item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="admin.block.customer.grid">
+            <block class="Magento\Backend\Block\Widget\Grid\Export" name="admin.block.customer.grid.export" as="grid.export">
+                <arguments>
+                    <argument name="exportTypes" xsi:type="array">
+                        <item name="csv" xsi:type="array">
+                            <item name="urlPath" xsi:type="string">customer_import_export/*/exportCsv</item>
+                            <item name="label" xsi:type="string" translate="true">CSV</item>
+                        </item>
+                        <item name="excel" xsi:type="array">
+                            <item name="urlPath" xsi:type="string">customer_import_export/*/exportXml</item>
+                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/DesignEditor/composer.json b/app/code/Magento/DesignEditor/composer.json
index 393c9acaffad1f3120618d52c6ff597249b15d6a..8183ac314b0e2f174bc9b8450c24288790c401fa 100644
--- a/app/code/Magento/DesignEditor/composer.json
+++ b/app/code/Magento/DesignEditor/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_files_index.xml b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_files_index.xml
index 437d8353cc4737dae2e874d1dd6f5479111005d8..7bd931ef045a57b57a041c349ff40e7188e6d57f 100644
--- a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_files_index.xml
+++ b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_files_index.xml
@@ -23,15 +23,17 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="footer"/>
-    <referenceContainer name="left">
-        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content" name="editor_files.js" template="Magento_DesignEditor::editor/tools/files/js.phtml"/>
-        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Tree" name="editor_files.tree" template="Magento_DesignEditor::editor/tools/files/tree.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content" name="editor_files.content" template="Magento_DesignEditor::editor/tools/files/content.phtml">
-            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content\Uploader" name="editor_files.uploader" template="Magento_DesignEditor::editor/tools/files/content/uploader.phtml"/>
-        </block>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <remove name="footer"/>
+        <referenceContainer name="left">
+            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content" name="editor_files.js" template="Magento_DesignEditor::editor/tools/files/js.phtml"/>
+            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Tree" name="editor_files.tree" template="Magento_DesignEditor::editor/tools/files/tree.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content" name="editor_files.content" template="Magento_DesignEditor::editor/tools/files/content.phtml">
+                <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Files\Content\Uploader" name="editor_files.uploader" template="Magento_DesignEditor::editor/tools/files/content/uploader.phtml"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_firstentrance.xml b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_firstentrance.xml
index ad4e7f42bded231ab5176daccc15819a951000f3..10ad40fbd350e55971341aba0adb12ca22e060bc 100644
--- a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_firstentrance.xml
+++ b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_firstentrance.xml
@@ -28,14 +28,16 @@
         <link src="Magento_DesignEditor::js/bootstrap/edit.js"/>
         <css src="Magento_DesignEditor::css/styles.css"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Template" name="available.theme.list.container" as="theme_container" template="Magento_DesignEditor::theme/selector/first_entrance.phtml">
-            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Available" name="available.theme.list" template="Magento_DesignEditor::theme/list/available.phtml">
-                <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="design.editor.theme" as="theme" template="Magento_DesignEditor::theme/available.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Template" name="available.theme.list.container" as="theme_container" template="Magento_DesignEditor::theme/selector/first_entrance.phtml">
+                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Available" name="available.theme.list" template="Magento_DesignEditor::theme/list/available.phtml">
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="design.editor.theme" as="theme" template="Magento_DesignEditor::theme/available.phtml"/>
+                </block>
             </block>
-        </block>
-        <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
-        <block class="Magento\Backend\Block\Template" name="theme.dialog.edit" template="Magento_DesignEditor::theme/selector/theme_edit.phtml"/>
-        <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
-    </referenceContainer>
+            <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
+            <block class="Magento\Backend\Block\Template" name="theme.dialog.edit" template="Magento_DesignEditor::theme/selector/theme_edit.phtml"/>
+            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_index.xml b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_index.xml
index ec577a515dc550df5af7c40a3955d5164ca7aac3..5c683704e0ef4000b54eb90a675df8cfa83fee7d 100644
--- a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_index.xml
+++ b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_index.xml
@@ -28,32 +28,34 @@
         <link src="Magento_DesignEditor::js/bootstrap/edit.js"/>
         <css src="Magento_DesignEditor::css/styles.css"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tabs" name="theme.selector.tabs">
-            <action method="addTab">
-                <argument name="name" xsi:type="string">available_themes</argument>
-                <argument name="block" xsi:type="string">available.themes.tab</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">customizations</argument>
-                <argument name="block" xsi:type="string">customizations.themes.tab</argument>
-            </action>
-            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tab\Available" name="available.themes.tab">
-                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Available" name="available.theme.list" template="Magento_DesignEditor::theme/list/available.phtml">
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="available.theme.item" as="item" template="Magento_DesignEditor::theme/available.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tabs" name="theme.selector.tabs">
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">available_themes</argument>
+                    <argument name="block" xsi:type="string">available.themes.tab</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">customizations</argument>
+                    <argument name="block" xsi:type="string">customizations.themes.tab</argument>
+                </action>
+                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tab\Available" name="available.themes.tab">
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Available" name="available.theme.list" template="Magento_DesignEditor::theme/list/available.phtml">
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="available.theme.item" as="item" template="Magento_DesignEditor::theme/available.phtml"/>
+                    </block>
                 </block>
-            </block>
-            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tab\Customizations" name="customizations.themes.tab" template="Magento_DesignEditor::theme/selector/my_customizations_tab.phtml">
-                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Assigned" name="assigned.theme.list" template="Magento_DesignEditor::theme/list/customized.phtml">
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="assigned.theme" as="theme" template="Magento_DesignEditor::theme/customized.phtml"/>
-                </block>
-                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Unassigned" name="unassigned.theme.list" template="Magento_DesignEditor::theme/list/customized.phtml">
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="unassigned.theme" as="theme" template="Magento_DesignEditor::theme/customized.phtml"/>
+                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\Tab\Customizations" name="customizations.themes.tab" template="Magento_DesignEditor::theme/selector/my_customizations_tab.phtml">
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Assigned" name="assigned.theme.list" template="Magento_DesignEditor::theme/list/customized.phtml">
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="assigned.theme" as="theme" template="Magento_DesignEditor::theme/customized.phtml"/>
+                    </block>
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\SelectorList\Unassigned" name="unassigned.theme.list" template="Magento_DesignEditor::theme/list/customized.phtml">
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Theme" name="unassigned.theme" as="theme" template="Magento_DesignEditor::theme/customized.phtml"/>
+                    </block>
                 </block>
             </block>
-        </block>
-        <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
-        <block class="Magento\Backend\Block\Template" name="theme.dialog.edit" template="Magento_DesignEditor::theme/selector/theme_edit.phtml"/>
-        <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
-    </referenceContainer>
+            <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
+            <block class="Magento\Backend\Block\Template" name="theme.dialog.edit" template="Magento_DesignEditor::theme/selector/theme_edit.phtml"/>
+            <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_launch.xml b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_launch.xml
index bd87be2c15be7f8294262e9b4ecbf360d4da16c3..ba73337b7a0581b778b5a41102b478a75082310c 100644
--- a/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_launch.xml
+++ b/app/code/Magento/DesignEditor/view/adminhtml/layout/adminhtml_system_design_editor_launch.xml
@@ -24,52 +24,52 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <body>
-        <attribute name="id" value="html-body"/>
-    </body>
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <css src="Magento_DesignEditor::css/styles.css"/>
         <link src="Magento_DesignEditor::js/bootstrap/launch.js"/>
     </head>
-    <remove name="backend.page"/>
-    <referenceContainer name="root">
-        <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_DesignEditor::editor.phtml">
-            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Container" name="design_editor" template="Magento_DesignEditor::editor/container.phtml">
-                <block class="Magento\Backend\Block\Template" name="design_editor_toolbar" template="Magento_DesignEditor::editor/toolbar.phtml">
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons" name="design_editor_toolbar_buttons" template="Magento_DesignEditor::editor/toolbar/buttons.phtml">
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons\Edit" name="design_editor_toolbar_buttons_edit" template="Magento_DesignEditor::editor/toolbar/buttons/edit.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons\Save" name="design_editor_toolbar_buttons_save"/>
-                    </block>
-                </block>
-                <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
-                <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools" name="design_editor_tools" template="Magento_DesignEditor::editor/tools.phtml">
-                    <block class="Magento\Backend\Block\Template" name="design_editor_tools_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/super-handle.phtml"/>
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles" name="design_editor_tools_quick-styles" template="Magento_DesignEditor::editor/tools/tabs.phtml">
-                        <block class="Magento\Backend\Block\Template" name="design_editor_tools_quick-styles_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/handle.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Tabs\Body" name="design_editor_tools_quick-styles_tab_body" as="tab_body" template="Magento_DesignEditor::editor/tools/tabs/body.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Header" name="design_editor_tools_quick-styles_header" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Backgrounds" name="design_editor_tools_quick-styles_backgrounds" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Buttons" name="design_editor_tools_quick-styles_buttons" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Tips" name="design_editor_tools_quick-styles_tips" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Fonts" name="design_editor_tools_quick-styles_fonts" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+    <body>
+        <attribute name="id" value="html-body"/>
+        <remove name="backend.page"/>
+        <referenceContainer name="root">
+            <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_DesignEditor::editor.phtml">
+                <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Container" name="design_editor" template="Magento_DesignEditor::editor/container.phtml">
+                    <block class="Magento\Backend\Block\Template" name="design_editor_toolbar" template="Magento_DesignEditor::editor/toolbar.phtml">
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons" name="design_editor_toolbar_buttons" template="Magento_DesignEditor::editor/toolbar/buttons.phtml">
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons\Edit" name="design_editor_toolbar_buttons_edit" template="Magento_DesignEditor::editor/toolbar/buttons/edit.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Toolbar\Buttons\Save" name="design_editor_toolbar_buttons_save"/>
+                        </block>
                     </block>
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Block" name="design_editor_tools_block" template="Magento_DesignEditor::editor/tools/block.phtml"/>
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Settings" name="design_editor_tools_settings" template="Magento_DesignEditor::editor/tools/settings.phtml"/>
-                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code" name="design_editor_tools_code" template="Magento_DesignEditor::editor/tools/tabs.phtml">
-                        <block class="Magento\Backend\Block\Template" name="design_editor_tools_code_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/handle.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Tabs\Body" name="design_editor_tools_code_tab_body" as="tab_body" template="Magento_DesignEditor::editor/tools/tabs/body.phtml"/>
-                        <!-- Tab with CSS list -->
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Css" name="design_editor_tools_code_css" template="Magento_DesignEditor::editor/tools/code/css.phtml"/>
-                        <!-- Tab with JavaScript list -->
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Js" name="design_editor_tools_code_js" template="Magento_DesignEditor::editor/tools/code/js.phtml"/>
-                        <!-- Tab with Custom CSS -->
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Custom" name="design_editor_tools_code_custom" template="Magento_DesignEditor::editor/tools/code/custom.phtml"/>
-                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\ImageSizing" name="design_editor_tools_code_image_sizing" template="Magento_DesignEditor::editor/tools/code/image-sizing.phtml"/>
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Theme\Selector\StoreView" name="theme.selector.storeview" template="Magento_DesignEditor::theme/selector/storeview.phtml"/>
+                    <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools" name="design_editor_tools" template="Magento_DesignEditor::editor/tools.phtml">
+                        <block class="Magento\Backend\Block\Template" name="design_editor_tools_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/super-handle.phtml"/>
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles" name="design_editor_tools_quick-styles" template="Magento_DesignEditor::editor/tools/tabs.phtml">
+                            <block class="Magento\Backend\Block\Template" name="design_editor_tools_quick-styles_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/handle.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Tabs\Body" name="design_editor_tools_quick-styles_tab_body" as="tab_body" template="Magento_DesignEditor::editor/tools/tabs/body.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Header" name="design_editor_tools_quick-styles_header" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Backgrounds" name="design_editor_tools_quick-styles_backgrounds" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Buttons" name="design_editor_tools_quick-styles_buttons" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Tips" name="design_editor_tools_quick-styles_tips" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\QuickStyles\Fonts" name="design_editor_tools_quick-styles_fonts" template="Magento_DesignEditor::editor/tools/quick-styles/form.phtml"/>
+                        </block>
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Block" name="design_editor_tools_block" template="Magento_DesignEditor::editor/tools/block.phtml"/>
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Settings" name="design_editor_tools_settings" template="Magento_DesignEditor::editor/tools/settings.phtml"/>
+                        <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code" name="design_editor_tools_code" template="Magento_DesignEditor::editor/tools/tabs.phtml">
+                            <block class="Magento\Backend\Block\Template" name="design_editor_tools_code_tab_handle" as="tab_handle" template="Magento_DesignEditor::editor/tools/tabs/handle.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Tabs\Body" name="design_editor_tools_code_tab_body" as="tab_body" template="Magento_DesignEditor::editor/tools/tabs/body.phtml"/>
+                            <!-- Tab with CSS list -->
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Css" name="design_editor_tools_code_css" template="Magento_DesignEditor::editor/tools/code/css.phtml"/>
+                            <!-- Tab with JavaScript list -->
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Js" name="design_editor_tools_code_js" template="Magento_DesignEditor::editor/tools/code/js.phtml"/>
+                            <!-- Tab with Custom CSS -->
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\Custom" name="design_editor_tools_code_custom" template="Magento_DesignEditor::editor/tools/code/custom.phtml"/>
+                            <block class="Magento\DesignEditor\Block\Adminhtml\Editor\Tools\Code\ImageSizing" name="design_editor_tools_code_image_sizing" template="Magento_DesignEditor::editor/tools/code/image-sizing.phtml"/>
+                        </block>
                     </block>
                 </block>
+                <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
             </block>
-            <block class="Magento\Backend\Block\Template" name="theme.dialog" template="Magento_DesignEditor::dialog.phtml"/>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Dhl/README.md b/app/code/Magento/Dhl/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..dd890e936dc231213fd40b1c96a37cbe8b610a79
--- /dev/null
+++ b/app/code/Magento/Dhl/README.md
@@ -0,0 +1,2 @@
+The Magento_Dhl module implements the integration with the DHL shipping carrier.
+DHL is available for international shipments only.
diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json
index f08d5176930c250843380356d070d266bb80c3a3..38c788bfcc166c8cc23c2bdc7fd0629c7a5bbfcd 100644
--- a/app/code/Magento/Dhl/composer.json
+++ b/app/code/Magento/Dhl/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json
index 90f5c107c095e81fc3743a8bd55a2c0f90bfa6db..eb97b0d4378d9f9ff771e17312f72a5ce9b21800 100644
--- a/app/code/Magento/Directory/composer.json
+++ b/app/code/Magento/Directory/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Directory/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Directory/view/frontend/layout/catalog_category_view.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Directory/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Directory/view/frontend/layout/catalog_category_view.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_index.xml b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_index.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_index.xml
+++ b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_index.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_result.xml b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_result.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_result.xml
+++ b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_advanced_result.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_result_index.xml b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_result_index.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Directory/view/frontend/layout/catalogsearch_result_index.xml
+++ b/app/code/Magento/Directory/view/frontend/layout/catalogsearch_result_index.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Directory/view/frontend/layout/default.xml b/app/code/Magento/Directory/view/frontend/layout/default.xml
index aea7205e04a70bb18244c700521ae388d71936ee..380da5dd9d45c91dad4f4a3bc217c78990926e11 100644
--- a/app/code/Magento/Directory/view/frontend/layout/default.xml
+++ b/app/code/Magento/Directory/view/frontend/layout/default.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="header.panel">
-        <block class="Magento\Directory\Block\Currency" name="currency" before="store_language" template="currency.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="header.panel">
+            <block class="Magento\Directory\Block\Currency" name="currency" before="store_language" template="currency.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json
index be2ab99cc77725e1ed25a6bea6ece05aab07a317..cf0b3c8a8e20706b57d32fd149a98718c86899b2 100644
--- a/app/code/Magento/Downloadable/composer.json
+++ b/app/code/Magento/Downloadable/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-gift-message": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-msrp": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-gift-message": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-msrp": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_downloadable.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_downloadable.xml
index bb5bd6ce120ddd61d4b5f75254a2f99acdc7e389..8297bba95ef66941c66c4530a46a479fffc37a91 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_downloadable.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_downloadable.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">downloadable_items</argument>
-            <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">downloadable_items</argument>
+                <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_simple.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_simple.xml
index bb5bd6ce120ddd61d4b5f75254a2f99acdc7e389..8297bba95ef66941c66c4530a46a479fffc37a91 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_simple.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_simple.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">downloadable_items</argument>
-            <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">downloadable_items</argument>
+                <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_view_type_downloadable.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_view_type_downloadable.xml
index 30f822d9f24b65e0b4550eab0e42c82c34829430..0d2cb779b49ff55f60b8eb6df1c67262edd6c723 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_view_type_downloadable.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_view_type_downloadable.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.composite.fieldset">
-        <block class="Magento\Downloadable\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Downloadable" name="product.composite.fieldset.downloadable" before="product.composite.fieldset.options" template="product/composite/fieldset/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.composite.fieldset">
+            <block class="Magento\Downloadable\Block\Adminhtml\Catalog\Product\Composite\Fieldset\Downloadable" name="product.composite.fieldset.downloadable" before="product.composite.fieldset.options" template="product/composite/fieldset/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_virtual.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_virtual.xml
index bb5bd6ce120ddd61d4b5f75254a2f99acdc7e389..8297bba95ef66941c66c4530a46a479fffc37a91 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_virtual.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/catalog_product_virtual.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">downloadable_items</argument>
-            <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">downloadable_items</argument>
+                <argument name="block" xsi:type="string">Magento\Downloadable\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/customer_index_wishlist.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/customer_index_wishlist.xml
index 80f9ddfa3d603eb5c37743c32366fac8971d0805..590beebe9ba4e145506faa2955ae5f151e86057b 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/customer_index_wishlist.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/customer_index_wishlist.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer.wishlist.edit.tab">
-        <arguments>
-            <argument name="product_configuration_helpers" xsi:type="array">
-                <item name="downloadable" xsi:type="string">Magento\Downloadable\Helper\Catalog\Product\Configuration</item>
-            </argument>
-        </arguments>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer.wishlist.edit.tab">
+            <arguments>
+                <argument name="product_configuration_helpers" xsi:type="array">
+                    <item name="downloadable" xsi:type="string">Magento\Downloadable\Helper\Catalog\Product\Configuration</item>
+                </argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_new.xml
index 2487c0f8cdba3b0979381183831b52262615ed51..f04daedbce855e2d91c14b26909fb5d49ca60ba5 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_new.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
index 2487c0f8cdba3b0979381183831b52262615ed51..f04daedbce855e2d91c14b26909fb5d49ca60ba5 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_view.xml
index 6a6a9cca4ace4e74ee611b2783dfe9655dcab88a..ff64e5019845f1ec9cc4fa022bb5a67e03c775b4 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_view.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_creditmemo_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/creditmemo/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_new.xml
index 6111b9957b1e39346411b4ed51852a3c678d3c7f..09568a63da5f69d99c2cc69ce890cad72ad88842 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_updateqty.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_updateqty.xml
index 6111b9957b1e39346411b4ed51852a3c678d3c7f..09568a63da5f69d99c2cc69ce890cad72ad88842 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_updateqty.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_view.xml
index ba09092de3fd3b41ded1012c74d1cf68995e78c7..4805a2c41d44c3b556acf0e20a614530b9292b22 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_view.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_invoice_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/invoice/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_view.xml
index 8e19053b5e2da012c83e8ea77feea504320cf7af..946f3cad464dad967b27fe5894b6f7e0bbd54399 100644
--- a/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/Downloadable/view/adminhtml/layout/sales_order_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Downloadable\Block\Adminhtml\Sales\Items\Column\Downloadable\Name" name="column_name_downloadable" template="sales/items/column/downloadable/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/catalog_product_view_type_downloadable.xml b/app/code/Magento/Downloadable/view/frontend/layout/catalog_product_view_type_downloadable.xml
index 6ad0d48d9321cd95b894ea58c18e7a6b76f9cd61..7dc3d3f80dc4625016efed5e6abc195a7d2fe081 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/catalog_product_view_type_downloadable.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/catalog_product_view_type_downloadable.xml
@@ -26,39 +26,39 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-downloadable"/>
-    </body>
-    <referenceContainer name="product.info.main">
-        <block class="Magento\Downloadable\Block\Catalog\Product\Samples" name="product.info.downloadable.samples" as="samples" template="catalog/product/samples.phtml" after="product.price.tier" />
-    </referenceContainer>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Downloadable\Block\Catalog\Product\View\Type" name="product.info.downloadable" as="product_type_data" template="catalog/product/type.phtml">
-            <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" name="product.info.downloadable.extra" as="product_type_data_extra" template="stockqty/default.phtml"/>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\Downloadable\Block\Catalog\Product\Links" name="product.info.downloadable.options" as="type_downloadable_options" before="-" template="catalog/product/links.phtml">
-            <block class="Magento\Catalog\Pricing\Render" name="product.price.link" after="product.info.downloadable.options">
+        <referenceContainer name="product.info.main">
+            <block class="Magento\Downloadable\Block\Catalog\Product\Samples" name="product.info.downloadable.samples" as="samples" template="catalog/product/samples.phtml" after="product.price.tier" />
+        </referenceContainer>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Downloadable\Block\Catalog\Product\View\Type" name="product.info.downloadable" as="product_type_data" template="catalog/product/type.phtml">
+                <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" name="product.info.downloadable.extra" as="product_type_data_extra" template="stockqty/default.phtml"/>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\Downloadable\Block\Catalog\Product\Links" name="product.info.downloadable.options" as="type_downloadable_options" before="-" template="catalog/product/links.phtml">
+                <block class="Magento\Catalog\Pricing\Render" name="product.price.link" after="product.info.downloadable.options">
+                    <arguments>
+                        <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                        <argument name="price_type_code" xsi:type="string">link_price</argument>
+                    </arguments>
+                </block>
+            </block>
+        </referenceBlock>
+        <referenceContainer name="product.info.options.wrapper.bottom">
+            <block class="Magento\Catalog\Pricing\Render" name="product.price.final.copy" before="-">
                 <arguments>
                     <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                    <argument name="price_type_code" xsi:type="string">link_price</argument>
+                    <argument name="price_type_code" xsi:type="string">final_price</argument>
+                    <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+                    <argument name="zone" xsi:type="string">item_view</argument>
+                    <argument name="id_suffix" xsi:type="string">copy-</argument>
                 </arguments>
             </block>
-        </block>
-    </referenceBlock>
-    <referenceContainer name="product.info.options.wrapper.bottom">
-        <block class="Magento\Catalog\Pricing\Render" name="product.price.final.copy" before="-">
-            <arguments>
-                <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                <argument name="price_type_code" xsi:type="string">final_price</argument>
-                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-                <argument name="zone" xsi:type="string">item_view</argument>
-                <argument name="id_suffix" xsi:type="string">copy-</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="downloadable_page_head_components" template="Magento_Downloadable::js/components.phtml"/>
-    </referenceBlock>
-    <move element="product.info" destination="content" after="product.info.main" />
-    <move element="product.info.social" destination="product.info.options.wrapper.bottom" after="-" />
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="downloadable_page_head_components" template="Magento_Downloadable::js/components.phtml"/>
+        </referenceBlock>
+        <move element="product.info" destination="content" after="product.info.main" />
+        <move element="product.info.social" destination="product.info.options.wrapper.bottom" after="-" />
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_configure_type_downloadable.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_configure_type_downloadable.xml
index 71d0f188b857a3631389e92b341c7b81626ddcfa..41f332356e57cc0bc230c73d13beb6d20a58bab0 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_configure_type_downloadable.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_configure_type_downloadable.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view_type_downloadable"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
index d5b93ff7bf6ca27cef093e1ed55ce08baede5782..cfc6bde7d6c77967c163482f6064a982a7bfb07e 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="checkout/cart/item/default.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="additional.product.info">
-        <block class="Magento\Framework\View\Element\Template" name="downloadable.product.links" template="Magento_Downloadable::checkout/links.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="checkout/cart/item/default.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="additional.product.info">
+            <block class="Magento\Framework\View\Element\Template" name="downloadable.product.links" template="Magento_Downloadable::checkout/links.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
index 602e31c2b444595909a53b3072f5483e7393a108..d24c1538f35656b93a97b28ef2057c9f602ce39e 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.sidebar.item.renderers">
-        <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="Magento_Checkout::cart/sidebar/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.sidebar.item.renderers">
+            <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="Magento_Checkout::cart/sidebar/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_review_item_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_review_item_renderers.xml
index d37c5a9304470d61e0b2b5b29f3f67c9d5a0b764..ea24b2c6507c8d489ca2e14664dd7e8962b4c76a 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_review_item_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_review_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.onepage.review.item.renderers">
-        <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="Magento_Checkout::onepage/review/item.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.onepage.review.item.renderers">
+            <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="Magento_Checkout::onepage/review/item.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_success.xml
index a2a7cbb283d2c7b26aa012293151e5ed847284d0..e3a036c31232f251c7a63f4943c330d2920b3be3 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_onepage_success.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.success">
-        <block class="Magento\Downloadable\Block\Checkout\Success" name="downloadable.checkout.success" template="checkout/success.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.success">
+            <block class="Magento\Downloadable\Block\Checkout\Success" name="downloadable.checkout.success" template="checkout/success.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/customer_account.xml b/app/code/Magento/Downloadable/view/frontend/layout/customer_account.xml
index 1db5ed471e3c85637b36d8d7c1c1bb2d4da8a73e..b856127c048ad0b0e61fc6025626a468c4d04c93 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/customer_account.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-downloadable-products-link">
-            <arguments>
-                <argument name="path" xsi:type="string">downloadable/customer/products</argument>
-                <argument name="label" xsi:type="string">My Downloadable Products</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-downloadable-products-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">downloadable/customer/products</argument>
+                    <argument name="label" xsi:type="string">My Downloadable Products</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/downloadable_customer_products.xml b/app/code/Magento/Downloadable/view/frontend/layout/downloadable_customer_products.xml
index 8d516c4760ebd6157b3360db809af721f8d5ae4a..65959aede516e8095d40b91d0eb9e88f9542575e 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/downloadable_customer_products.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/downloadable_customer_products.xml
@@ -25,12 +25,14 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Downloadable\Block\Customer\Products\ListProducts" name="downloadable_customer_products_list" template="customer/products/list.phtml"/>
-    </referenceContainer>
-    <referenceBlock name="root">
-        <action method="setHeaderTitle">
-            <argument translate="true" name="title" xsi:type="string">My Downloadable Products</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Downloadable\Block\Customer\Products\ListProducts" name="downloadable_customer_products_list" template="customer/products/list.phtml"/>
+        </referenceContainer>
+        <referenceBlock name="root">
+            <action method="setHeaderTitle">
+                <argument translate="true" name="title" xsi:type="string">My Downloadable Products</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/multishipping_checkout_success.xml b/app/code/Magento/Downloadable/view/frontend/layout/multishipping_checkout_success.xml
index efa0545fdd86c9207b3b28749fc99eb22471bc60..b5664e26a04644663d4a02fd53fbf6d26a0c6336 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/multishipping_checkout_success.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/multishipping_checkout_success.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout_success">
-        <block class="Magento\Downloadable\Block\Checkout\Success" name="downloadable.checkout.success" template="checkout/success.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout_success">
+            <block class="Magento\Downloadable\Block\Checkout\Success" name="downloadable.checkout.success" template="checkout/success.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_creditmemo_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
index 28fba6b3cb016b9657e76856b21fd66682ff4344..4d03c0bd2aaff19fc4a27334068a6df913cf50dd 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.creditmemo.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable" as="downloadable" template="email/order/items/creditmemo/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.creditmemo.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable" as="downloadable" template="email/order/items/creditmemo/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_invoice_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_invoice_renderers.xml
index 755331cb482016b61620782671f290f7455fdb5e..42f41ec55e5748721a4c2ef4bf7bc017d5cb0605 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_invoice_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.invoice.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable" as="downloadable" template="email/order/items/invoice/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.invoice.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable" as="downloadable" template="email/order/items/invoice/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_renderers.xml
index 16547044fa542e10e740a8132641ec875a12ef71..8293fbc59282fee8a6cecd4a3777163f78765a38 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_email_order_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.email.order.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Order\Downloadable" as="downloadable" template="email/order/items/order/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Email\Items\Order\Downloadable" as="downloadable" template="email/order/items/order/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_creditmemo_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_creditmemo_renderers.xml
index 61db3d7f3922467c7b213daff79e802846f0e5fb..6da7463942acb36985d1ed27de27bc1af89ba52a 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.creditmemo.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/creditmemo/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.creditmemo.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/creditmemo/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_invoice_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_invoice_renderers.xml
index e64824cb739ffe738929f9fdd532f1a18c1c58dd..a10ea283679f3a9d383a7119a67e18ee70f770ad 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_invoice_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.invoice.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/invoice/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.invoice.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/invoice/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_item_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_item_renderers.xml
index c6f1071216d33f4f7dcebf33e95e2be84b9f8b7b..7ef6535ed3f1134801f5ed56282b8cc197f91485 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_item_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.items.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.items.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_creditmemo_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
index 60166ac7b2b78698465784ff3cb8e24b4cc7dc4b..9859f2cc6d44c919441ca949a8b44ef9ef29d42b 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.creditmemo.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/creditmemo/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.creditmemo.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/creditmemo/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_invoice_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_invoice_renderers.xml
index 2a9418920e1a4dca1bb08ee184ddc4c4d1d49526..578e57389ef19bc154fd5311ae38aec5ab9764e1 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_invoice_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.invoice.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/invoice/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.invoice.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/invoice/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_renderers.xml
index 02bb06e747ade6f581a2d82b0f4dc1bad56daf5b..26ed8b06aec0bb98889c8bcd3c205932ad8a9ed4 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/sales_order_print_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.renderers">
-        <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/items/renderer/downloadable.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.renderers">
+            <block class="Magento\Downloadable\Block\Sales\Order\Item\Renderer\Downloadable" as="downloadable" template="sales/order/items/renderer/downloadable.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/customer/products/list.phtml b/app/code/Magento/Downloadable/view/frontend/templates/customer/products/list.phtml
index 62dfb148d2d51ea240db3dd06ae49563835a35a1..a9c5acb82c51bafa53b259d84185ceda5eb7c3fb 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/customer/products/list.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/customer/products/list.phtml
@@ -31,7 +31,7 @@
 <?php if(count($_items)): ?>
     <div class="table-wrapper downloadable-products">
         <table id="my-downloadable-products-table" class="data table table-downloadable-products">
-            <caption class="table caption"><?php echo __('Downloadable Products') ?></caption>
+            <caption class="table-caption"><?php echo __('Downloadable Products') ?></caption>
             <thead>
                 <tr>
                     <th scope="col" class="col id"><?php echo __('Order #') ?></th>
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/creditmemo/items/renderer/downloadable.phtml b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/creditmemo/items/renderer/downloadable.phtml
index c097c3515f0e4d084cf1d1dfd16d0d920dc44161..8fb5221e91ab1a6ceeeb0f04f6835b093864dc93 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/creditmemo/items/renderer/downloadable.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/creditmemo/items/renderer/downloadable.phtml
@@ -30,7 +30,7 @@
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <?php foreach ($_options as $_option) : ?>
                     <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                     <?php if (!$this->getPrintStatus()): ?>
@@ -54,7 +54,7 @@
         <?php endif; ?>
         <?php /* downloadable */?>
         <?php if ($links = $this->getLinks()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <dt><?php echo $this->getLinksTitle() ?></dt>
                 <?php foreach ($links->getPurchasedItems() as $link): ?>
                     <dd><?php echo $this->escapeHtml($link->getLinkTitle()); ?></dd>
@@ -68,11 +68,6 @@
             <?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
-            <a href="#" id="order-item-gift-message-link-<?php echo $_item->getId() ?>" class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId() ?>"
-               data-item-id="<?php echo $_item->getId() ?>"><?php echo __('Gift Message') ?></a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/invoice/items/renderer/downloadable.phtml b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/invoice/items/renderer/downloadable.phtml
index fc18f0c56c08662526943c0e7721e6a4fceec6ac..71f7cb1974bb1b147f7bf1806073927cc82b4287 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/invoice/items/renderer/downloadable.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/invoice/items/renderer/downloadable.phtml
@@ -30,7 +30,7 @@
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <?php foreach ($_options as $_option) : ?>
                     <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                     <?php if (!$this->getPrintStatus()): ?>
@@ -54,7 +54,7 @@
         <?php endif; ?>
         <?php /* downloadable */ ?>
         <?php if ($links = $this->getLinks()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <dt><?php echo $this->getLinksTitle() ?></dt>
                 <?php foreach ($links->getPurchasedItems() as $link): ?>
                     <dd><?php echo $this->escapeHtml($link->getLinkTitle()); ?></dd>
@@ -67,11 +67,6 @@
             <?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
-            <a href="#" id="order-item-gift-message-link-<?php echo $_item->getId() ?>" class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId() ?>"
-               data-item-id="<?php echo $_item->getId() ?>"><?php echo __('Gift Message') ?></a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/items/renderer/downloadable.phtml b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/items/renderer/downloadable.phtml
index 46b9e5481a2525b0e4197297a478c8c02312d2fe..db0b497d773bfbe27f29f2c54e55b21eceb88cdd 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/sales/order/items/renderer/downloadable.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/sales/order/items/renderer/downloadable.phtml
@@ -29,7 +29,7 @@
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <?php foreach ($_options as $_option) : ?>
                     <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
                     <?php if (!$this->getPrintStatus()): ?>
@@ -55,7 +55,7 @@
         <?php endif; ?>
         <?php /* downloadable */ ?>
         <?php if ($links = $this->getLinks()): ?>
-            <dl class="item options links">
+            <dl class="item-options links">
                 <dt><?php echo $this->getLinksTitle() ?></dt>
                 <?php foreach ($links->getPurchasedItems() as $link): ?>
                     <dd><?php echo $this->escapeHtml($link->getLinkTitle()); ?></dd>
@@ -68,15 +68,6 @@
             <?php echo $addtInfoBlock->setItem($_item)->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item) && $_item->getGiftMessageId()): ?>
-            <a href="#"
-               id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
-               class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId()?>"
-               data-item-id="<?php echo $_item->getId()?>">
-                <?php echo __('Gift Message') ?>
-            </a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json
index 82a538e9635553c9b02490d54b972df33b23b629..9a831497ce6d460f8c12522fc772d5320b4fd1c3 100644
--- a/app/code/Magento/Eav/composer.json
+++ b/app/code/Magento/Eav/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json
index 1549a791c0be2069dc01960ffaf09a9a416550da..ba538dd16efe3d1f426ab81aeac9d102fe82d2d6 100644
--- a/app/code/Magento/Email/composer.json
+++ b/app/code/Magento/Email/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml
index 12368d58fa2ba78de56b5927e204cfe00ab58bb4..951f121eba7390e04b0e54e79b5cdaaf143ac1b5 100644
--- a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml
+++ b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml
@@ -27,4 +27,5 @@
     <head>
         <link src="Magento_Email::js/bootstrap.js"/>
     </head>
+    <body/>
 </page>
diff --git a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_grid_block.xml b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_grid_block.xml
index 8107c1e00ded69e1ae58a031808365d8968c7b4d..3de9d1e902a3798e37cbc66089e037d2374fc062 100644
--- a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_grid_block.xml
+++ b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_grid_block.xml
@@ -24,85 +24,87 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.system.email.template.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.email.template.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">systemEmailTemplateGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Email\Model\Resource\Template\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.email.template.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.system.email.template.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.system.email.template.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">adminhtml/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="id" xsi:type="string">systemEmailTemplateGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Email\Model\Resource\Template\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
-                    <argument name="empty_text" xsi:type="string" translate="true">No Templates Found</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="template_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.system.email.template.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">template_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Template</argument>
-                        <argument name="index" xsi:type="string">template_code</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="added_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Added</argument>
-                        <argument name="index" xsi:type="string">added_at</argument>
-                        <argument name="gmtoffset" xsi:type="string">1</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="modified_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Updated</argument>
-                        <argument name="index" xsi:type="string">modified_at</argument>
-                        <argument name="gmtoffset" xsi:type="string">1</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="subject">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Subject</argument>
-                        <argument name="index" xsi:type="string">template_subject</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Template Type</argument>
-                        <argument name="index" xsi:type="string">template_type</argument>
-                        <argument name="filter" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Filter\Type</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Renderer\Type</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="index" xsi:type="string">template_id</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Renderer\Action</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">adminhtml/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
+                        <argument name="empty_text" xsi:type="string" translate="true">No Templates Found</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="template_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">template_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Template</argument>
+                            <argument name="index" xsi:type="string">template_code</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="added_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Added</argument>
+                            <argument name="index" xsi:type="string">added_at</argument>
+                            <argument name="gmtoffset" xsi:type="string">1</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="modified_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Updated</argument>
+                            <argument name="index" xsi:type="string">modified_at</argument>
+                            <argument name="gmtoffset" xsi:type="string">1</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="subject">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Subject</argument>
+                            <argument name="index" xsi:type="string">template_subject</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Template Type</argument>
+                            <argument name="index" xsi:type="string">template_type</argument>
+                            <argument name="filter" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Filter\Type</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Renderer\Type</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="index" xsi:type="string">template_id</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Email\Block\Adminhtml\Template\Grid\Renderer\Action</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_index.xml b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_index.xml
index fe3c8049cd51b9dd46818ad04c25b6cb27210548..201215c44cd6a9d46950e27ea7485bc5bc1d7637 100644
--- a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_index.xml
+++ b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_email_template_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Email\Block\Adminhtml\Template" name="adminhtml.system.email.template.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Email\Block\Adminhtml\Template" name="adminhtml.system.email.template.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
index 538a74d73bb1b482fda7bb52b9d63c9217d85241..e17abff0071a6fcfcd654c11b9162779fb5e0e4e 100644
--- a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
+++ b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml
@@ -27,7 +27,7 @@
     <?php echo $this->getBlockHtml('formkey')?>
     <fieldset class="fieldset form-inline">
         <legend class="legend"><span><?php echo __('Load default template') ?></span></legend>
-        <div class="field required">
+        <div class="field">
             <label class="label" for="template_select"><?php echo __('Template') ?></label>
             <div class="control">
                 <select id="template_select" name="code" class="select required-entry">
diff --git a/app/code/Magento/Fedex/README.md b/app/code/Magento/Fedex/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ae9ba8e29601c88bcc9627800b191b8654171274
--- /dev/null
+++ b/app/code/Magento/Fedex/README.md
@@ -0,0 +1 @@
+The Magento_Fedex implements the integration with the FedEx shipping carrier.
diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json
index fecb102ae3b257b8bef18089df1fb4e2353b0088..360d368ae32b9ee27e752c173765512c9721a390 100644
--- a/app/code/Magento/Fedex/composer.json
+++ b/app/code/Magento/Fedex/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json
index 2f11b383ee6cad998ed5c4cb3833c597d64f3eb0..d656097e3ad17fcd5c8b98d88250bf1eb8c6f2a3 100644
--- a/app/code/Magento/GiftMessage/composer.json
+++ b/app/code/Magento/GiftMessage/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-multishipping": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-multishipping": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_index.xml b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_index.xml
index f81900e39874ce67f40b29388e19b8ad96e61b72..c8ecc390c162d17d0f386893a98cbb03b2441601 100644
--- a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_index.xml
+++ b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_index.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_item_extra_info">
-        <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="items_grid">
-        <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_item_extra_info">
+            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="items_grid">
+            <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_data.xml b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_data.xml
index f81900e39874ce67f40b29388e19b8ad96e61b72..c8ecc390c162d17d0f386893a98cbb03b2441601 100644
--- a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_data.xml
+++ b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_data.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_item_extra_info">
-        <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="items_grid">
-        <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_item_extra_info">
+            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="items_grid">
+            <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_items.xml b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_items.xml
index f81900e39874ce67f40b29388e19b8ad96e61b72..c8ecc390c162d17d0f386893a98cbb03b2441601 100644
--- a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_items.xml
+++ b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_create_load_block_items.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_item_extra_info">
-        <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="items_grid">
-        <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_item_extra_info">
+            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Giftoptions" name="gift_options_link" template="sales/order/create/giftoptions.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Items" name="gift_options_item_data" template="sales/order/create/items.phtml"/>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="items_grid">
+            <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\Create\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_view.xml
index 84c3c06ad63331e95af5d8a0586996592d9180f6..78863c4502d96e7629c19e07553041ea9c02f6ca 100644
--- a/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/GiftMessage/view/adminhtml/layout/sales_order_view.xml
@@ -27,14 +27,16 @@
     <head>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
-    <referenceBlock name="order_item_extra_info">
-        <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Giftoptions" name="gift_options_link" template="sales/order/view/giftoptions.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Items" name="gift_options_item_data" template="sales/order/view/items.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="order_tab_info">
-        <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
-            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_item_extra_info">
+            <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Giftoptions" name="gift_options_link" template="sales/order/view/giftoptions.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Items" name="gift_options_item_data" template="sales/order/view/items.phtml"/>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="order_tab_info">
+            <block class="Magento\Backend\Block\Template" name="popup_window" template="Magento_GiftMessage::popup.phtml">
+                <block class="Magento\GiftMessage\Block\Adminhtml\Sales\Order\View\Form" name="gift_options_form" template="giftoptionsform.phtml"/>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json
index b0991ae3b4afc4d6d24a78d46157989bdae2fedb..750f469cb8b73402c15b93ab0349ec8d5dba3f7b 100644
--- a/app/code/Magento/GoogleAdwords/composer.json
+++ b/app/code/Magento/GoogleAdwords/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleAdwords/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/GoogleAdwords/view/frontend/layout/checkout_onepage_success.xml
index 771022f1eff10d7400b4f76838d595286892e7be..ede28fd0d8b1139a783c6fc91ec0c04b669c9fb8 100644
--- a/app/code/Magento/GoogleAdwords/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/GoogleAdwords/view/frontend/layout/checkout_onepage_success.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\GoogleAdwords\Block\Code" name="google.adwords.code" template="code.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\GoogleAdwords\Block\Code" name="google.adwords.code" template="code.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json
index a3c047e0519827e58c953fd54451013942ad389f..1602b53b1f112f472387bc9822afd365500fddd5 100644
--- a/app/code/Magento/GoogleAnalytics/composer.json
+++ b/app/code/Magento/GoogleAnalytics/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleAnalytics/view/frontend/layout/default.xml b/app/code/Magento/GoogleAnalytics/view/frontend/layout/default.xml
index 8f228b649f330985f6b2a8125570cfde9a383d02..9ceb77e72476d2f8f0dbf8388fa938db30c4618c 100644
--- a/app/code/Magento/GoogleAnalytics/view/frontend/layout/default.xml
+++ b/app/code/Magento/GoogleAnalytics/view/frontend/layout/default.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="after.body.start">
-        <block class="Magento\GoogleAnalytics\Block\Ga" name="google_analytics" as="google_analytics" template="ga.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\GoogleAnalytics\Block\Ga" name="google_analytics" as="google_analytics" template="ga.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json
index 2b1c7d83207c0d7fc01717cc171b86000079b604..0f597bfd45316daec2f3b2c7e1e4c8213c302c86 100644
--- a/app/code/Magento/GoogleOptimizer/composer.json
+++ b/app/code/Magento/GoogleOptimizer/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-google-analytics": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-google-analytics": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/adminhtml_cms_page_edit.xml b/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/adminhtml_cms_page_edit.xml
index 21b5bc5e38cc5c5477dff8a9f5373f46722bbc5f..55c897a76e0571e6d1e6ed0580bc505d2ba747db 100644
--- a/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/adminhtml_cms_page_edit.xml
+++ b/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/adminhtml_cms_page_edit.xml
@@ -23,11 +23,13 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="cms_page_edit_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">google-experiment</argument>
-            <argument name="block" xsi:type="string">Magento\GoogleOptimizer\Block\Adminhtml\Cms\Page\Edit\Tab\Googleoptimizer</argument>
-        </action>
-    </referenceBlock>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="cms_page_edit_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">google-experiment</argument>
+                <argument name="block" xsi:type="string">Magento\GoogleOptimizer\Block\Adminhtml\Cms\Page\Edit\Tab\Googleoptimizer</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/catalog_product_new.xml
index bb6873e23ad03e77435ca8bb6ea56c849c8d146e..7dd544c19e83ab88aa24022537487d04d00c4075 100644
--- a/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/GoogleOptimizer/view/adminhtml/layout/catalog_product_new.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">google-experiment</argument>
-            <argument name="block" xsi:type="string">Magento\GoogleOptimizer\Block\Adminhtml\Catalog\Product\Edit\Tab\Googleoptimizer</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">google-experiment</argument>
+                <argument name="block" xsi:type="string">Magento\GoogleOptimizer\Block\Adminhtml\Catalog\Product\Edit\Tab\Googleoptimizer</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_category_view.xml
index 91a83d5bac467006d3395a4484c0d2787c16f510..8d527a6b6b317d8954d3fbdfc88654cb0c93cb74 100644
--- a/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_category_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="after.body.start">
-        <block class="Magento\GoogleOptimizer\Block\Code\Category" before="-" name="googleoptimizer.experiment.script"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\GoogleOptimizer\Block\Code\Category" before="-" name="googleoptimizer.experiment.script"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_product_view.xml
index 9167cac80984fb00dc304251a402769ab1d34cc9..f8499d20247e8f000cdd8589a3b43f57a16ee18f 100644
--- a/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/GoogleOptimizer/view/frontend/layout/catalog_product_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="after.body.start">
-        <block class="Magento\GoogleOptimizer\Block\Code\Product" before="-" name="googleoptimizer.experiment.script"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\GoogleOptimizer\Block\Code\Product" before="-" name="googleoptimizer.experiment.script"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleOptimizer/view/frontend/layout/cms_page_view.xml b/app/code/Magento/GoogleOptimizer/view/frontend/layout/cms_page_view.xml
index 9a0c00b8d54d82866570ddd61c15c5640f42ab01..a91f107dfabd04d32952829973ed2b678a8931c6 100644
--- a/app/code/Magento/GoogleOptimizer/view/frontend/layout/cms_page_view.xml
+++ b/app/code/Magento/GoogleOptimizer/view/frontend/layout/cms_page_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="after.body.start">
-        <block class="Magento\GoogleOptimizer\Block\Code\Page" before="-" name="googleoptimizer.experiment.script"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\GoogleOptimizer\Block\Code\Page" before="-" name="googleoptimizer.experiment.script"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleShopping/composer.json b/app/code/Magento/GoogleShopping/composer.json
index b099630b9d541a9891aae44a479b0fd49853f12e..5412013c680354f590cda08f9a009a327db60673 100644
--- a/app/code/Magento/GoogleShopping/composer.json
+++ b/app/code/Magento/GoogleShopping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml
index a0600a8c3194937b3de361f5e1f56c51da8abdc7..c5e4c760d1e9fba58c4a52508baf735f63dff8ce 100644
--- a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml
+++ b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml
@@ -27,9 +27,9 @@
     <head>
         <link src="Magento_GoogleShopping::js/bootstrap.js"/>
     </head>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="store_switcher"
-               template="Magento_Backend::store/switcher.phtml" />
-    </referenceContainer>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
index a7e7f571bc7e7830a68a0adeebe9d524c799b32b..b2cb89290a6b1ce5c4dcfb7967f29fafeff6c49a 100644
--- a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
+++ b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
@@ -24,54 +24,56 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="googleshopping.types.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.googleshopping.types.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">types_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\GoogleShopping\Model\Resource\Grid\Collection</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="googleshopping.types.grid.columnSet">
+    <body>
+        <referenceBlock name="googleshopping.types.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.googleshopping.types.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">types_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="params" xsi:type="array">
-                            <item name="_current" xsi:type="string">1</item>
-                        </item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\GoogleShopping\Model\Resource\Grid\Collection</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="attribute_set_name">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="googleshopping.types.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Attributes Set</argument>
-                        <argument name="index" xsi:type="string">attribute_set_name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="target_country">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Target Country</argument>
-                        <argument name="index" xsi:type="string">target_country</argument>
-                        <argument name="width" xsi:type="string">150px</argument>
-                        <argument name="renderer" xsi:type="string">Magento\GoogleShopping\Block\Adminhtml\Types\Renderer\Country</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="items_total">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Total Qty Content Items</argument>
-                        <argument name="index" xsi:type="string">items_total</argument>
-                        <argument name="width" xsi:type="string">150px</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
+                        <argument name="id" xsi:type="string">types_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="params" xsi:type="array">
+                                <item name="_current" xsi:type="string">1</item>
+                            </item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="attribute_set_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Attributes Set</argument>
+                            <argument name="index" xsi:type="string">attribute_set_name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="target_country">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Target Country</argument>
+                            <argument name="index" xsi:type="string">target_country</argument>
+                            <argument name="width" xsi:type="string">150px</argument>
+                            <argument name="renderer" xsi:type="string">Magento\GoogleShopping\Block\Adminhtml\Types\Renderer\Country</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="items_total">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Total Qty Content Items</argument>
+                            <argument name="index" xsi:type="string">items_total</argument>
+                            <argument name="width" xsi:type="string">150px</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_index.xml b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_index.xml
index 281d1e56d2f6388c9ad9a448e2ebca8a68384048..d0c6d06d9dc7fba5b1d2bd4e9930b3a32a864386 100644
--- a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_index.xml
+++ b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_googleshopping_types_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\GoogleShopping\Block\Adminhtml\Types" name="googleshopping.types.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\GoogleShopping\Block\Adminhtml\Types" name="googleshopping.types.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GoogleShopping/view/frontend/layout/cms_index_index.xml b/app/code/Magento/GoogleShopping/view/frontend/layout/cms_index_index.xml
index 7154d2ab1e15bc2132468eeec7b9fbce28052708..84cfe255c75e90b53f9ea6100b1c309bbf89d951 100644
--- a/app/code/Magento/GoogleShopping/view/frontend/layout/cms_index_index.xml
+++ b/app/code/Magento/GoogleShopping/view/frontend/layout/cms_index_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="after.body.start">
-        <block class="Magento\GoogleShopping\Block\SiteVerification"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\GoogleShopping\Block\SiteVerification"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json
index d30281c772946b4afebe9c26fbc26f989859d79a..bffb6804480a40fa9f13d28fc57c7c4ffa70c3c0 100644
--- a/app/code/Magento/GroupedImportExport/composer.json
+++ b/app/code/Magento/GroupedImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-import-export": "0.1.0-alpha101",
-        "magento/module-catalog-import-export": "0.1.0-alpha101",
-        "magento/module-grouped-product": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-import-export": "0.1.0-alpha102",
+        "magento/module-catalog-import-export": "0.1.0-alpha102",
+        "magento/module-grouped-product": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json
index 09b353c83260e9cb96092173c23d4685bcfead53..572384ad0c97c40eb8db9af67171ed142d717333 100644
--- a/app/code/Magento/GroupedProduct/composer.json
+++ b/app/code/Magento/GroupedProduct/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-msrp": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-msrp": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_grouped.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_grouped.xml
index de004287bbd550bb32b27e70b70b5cf82df31561..32f3a8b0c2fa6c94e927833ca027798124bb6818 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_grouped.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_grouped.xml
@@ -24,30 +24,32 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="groupedproduct_popup_grid"/>
     <head>
         <css src="Magento_GroupedProduct::css/grouped-product.css"/>
     </head>
-    <referenceBlock name="product_tabs">
-        <block class="Magento\GroupedProduct\Block\Product\Grouped\AssociatedProducts" name="catalog.product.edit.grouped.container" template="product/grouped/container.phtml">
-            <block class="Magento\Framework\View\Element\Template" name="catalog.product.edit.tab.super.container" template="Magento_GroupedProduct::product/grouped/grouped.phtml">
-                <block class="Magento\GroupedProduct\Block\Product\Grouped\AssociatedProducts\ListAssociatedProducts" name="catalog.product.edit.tab.super.list" as="list" template="product/grouped/list.phtml" />
-                <block class="Magento\Framework\View\Element\Template" name="catalog.product.edit.tab.super.grid.popup.container" as="catalog.product.group.grid.popup.container"/>
+    <update handle="groupedproduct_popup_grid"/>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\GroupedProduct\Block\Product\Grouped\AssociatedProducts" name="catalog.product.edit.grouped.container" template="product/grouped/container.phtml">
+                <block class="Magento\Framework\View\Element\Template" name="catalog.product.edit.tab.super.container" template="Magento_GroupedProduct::product/grouped/grouped.phtml">
+                    <block class="Magento\GroupedProduct\Block\Product\Grouped\AssociatedProducts\ListAssociatedProducts" name="catalog.product.edit.tab.super.list" as="list" template="product/grouped/list.phtml"/>
+                    <block class="Magento\Framework\View\Element\Template" name="catalog.product.edit.tab.super.grid.popup.container" as="catalog.product.group.grid.popup.container"/>
+                </block>
             </block>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">grouped</argument>
-            <argument name="block" xsi:type="string">catalog.product.edit.grouped.container</argument>
-        </action>
-        <referenceBlock name="product_tabs.customer_options">
-            <arguments>
-                <argument name="can_show" xsi:type="boolean">false</argument>
-            </arguments>
-        </referenceBlock>
-        <referenceBlock name="product_tabs.product-alerts">
-            <arguments>
-                <argument name="can_show" xsi:type="boolean">false</argument>
-            </arguments>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">grouped</argument>
+                <argument name="block" xsi:type="string">catalog.product.edit.grouped.container</argument>
+            </action>
+            <referenceBlock name="product_tabs.customer_options">
+                <arguments>
+                    <argument name="can_show" xsi:type="boolean">false</argument>
+                </arguments>
+            </referenceBlock>
+            <referenceBlock name="product_tabs.product-alerts">
+                <arguments>
+                    <argument name="can_show" xsi:type="boolean">false</argument>
+                </arguments>
+            </referenceBlock>
         </referenceBlock>
-    </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_new.xml
index e26f78d9cd00cef77da2dcf12c5e254d52f52f26..af4697006d5f16b6349ffca686757342413a078e 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\Framework\View\Element\Template" template="Magento_GroupedProduct::product/stock/disabler.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\Framework\View\Element\Template" template="Magento_GroupedProduct::product/stock/disabler.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_view_type_grouped.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_view_type_grouped.xml
index d7eb6329e387fce47016093b7fa35bdae7f82edd..389e59068827d74551e90cd4bde397f26450286b 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_view_type_grouped.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/catalog_product_view_type_grouped.xml
@@ -24,8 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.composite.fieldset">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Product\Composite\Fieldset\Grouped" name="product.composite.fieldset.grouped" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/grouped.phtml"/>
+    <body>
+        <referenceBlock name="product.composite.fieldset">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Product\Composite\Fieldset\Grouped" name="product.composite.fieldset.grouped" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/grouped.phtml"/>
+        </referenceBlock>
         <remove name="product.composite.fieldset.qty"/>
-    </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/groupedproduct_popup_grid.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/groupedproduct_popup_grid.xml
index d7f5b87fced0e30e4cd0064c142478ad6b87c16e..4d08fc48877bc09ce6c76547a43a73251b14fa6a 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/groupedproduct_popup_grid.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/groupedproduct_popup_grid.xml
@@ -24,56 +24,58 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="catalog.product.edit.tab.super.grid.popup.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="catalog.product.edit.tab.super.group.popup" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">grouped_grid_popup</argument>
-                <argument name="dataSource" xsi:type="object">Magento\GroupedProduct\Model\Resource\Product\Type\Grouped\AssociatedProductsCollection</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="default_sort" xsi:type="string">id</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">0</argument>
-                <argument name="grid_url" xsi:type="url" path="groupedProduct/edit/popup">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="catalog.product.edit.tab.super.group.popup.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="catalog.product.edit.tab.super.grid.popup.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="catalog.product.edit.tab.super.group.popup" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">grouped_grid_popup</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\GroupedProduct\Model\Resource\Product\Type\Grouped\AssociatedProductsCollection</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="default_sort" xsi:type="string">id</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">0</argument>
+                    <argument name="grid_url" xsi:type="url" path="groupedProduct/edit/popup">
+                        <param name="_current">1</param>
+                    </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="catalog.product.edit.tab.super.group.popup.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="type" xsi:type="string">skip-list</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Backend\Block\Widget\Grid\Column\Renderer\Checkbox</argument>
-                        <argument name="index" xsi:type="string">entity_id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="editable" xsi:type="string">1</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">SKU</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">sku</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="price">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Price</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="index" xsi:type="string">price</argument>
+                        <argument name="id" xsi:type="string">grouped_grid_popup</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="type" xsi:type="string">skip-list</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Backend\Block\Widget\Grid\Column\Renderer\Checkbox</argument>
+                            <argument name="index" xsi:type="string">entity_id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="editable" xsi:type="string">1</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">SKU</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">sku</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="price">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Price</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="index" xsi:type="string">price</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_new.xml
index 0d378f8b19a4f91ec1335718e8f60bc4b7229e22..3ec627616ff3158962f76fbd0a29b19b0360daca 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_new.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
index 0d378f8b19a4f91ec1335718e8f60bc4b7229e22..3ec627616ff3158962f76fbd0a29b19b0360daca 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_view.xml
index 40c89c4e475386d34fa11e09afb3c5fac1ff30f1..86c9d0d6dc685232eaa24b014dcb1479d040b752 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_view.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_creditmemo_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_new.xml
index 0d378f8b19a4f91ec1335718e8f60bc4b7229e22..3ec627616ff3158962f76fbd0a29b19b0360daca 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_updateqty.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_updateqty.xml
index 0d378f8b19a4f91ec1335718e8f60bc4b7229e22..3ec627616ff3158962f76fbd0a29b19b0360daca 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_updateqty.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_updateqty.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_view.xml
index 5839c6fae2394727a14895abf4181b1fa0a35f27..4ceb8d80d1c499164bb8014b2be727aa4149582c 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_view.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_invoice_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-<referenceBlock name="invoice_items">
-    <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-</referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_view.xml
index 0d378f8b19a4f91ec1335718e8f60bc4b7229e22..3ec627616ff3158962f76fbd0a29b19b0360daca 100644
--- a/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/GroupedProduct/view/adminhtml/layout/sales_order_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\GroupedProduct\Block\Adminhtml\Items\Column\Name\Grouped" name="column_name_grouped" template="Magento_Sales::items/column/name.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/base/layout/catalog_product_prices.xml b/app/code/Magento/GroupedProduct/view/base/layout/catalog_product_prices.xml
index 682cdc69cbea570dbafa7ae78e2202e0e8a84b59..dcbed312f8dcb55235c6ef9fae02686229ca6ce8 100644
--- a/app/code/Magento/GroupedProduct/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/GroupedProduct/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <referenceBlock name="render.product.prices">
         <arguments>
             <argument name="grouped" xsi:type="array">
@@ -36,4 +36,4 @@
             </argument>
         </arguments>
     </referenceBlock>
-</page>
+</layout>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_rss_feed_renderer_list.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_rss_feed_renderer_list.xml
index 6096237b090a741e757ce82d2dd49863331f7987..7fb78afd3aef788924b2a93d1c10a00cdc5b21ca 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_rss_feed_renderer_list.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_rss_feed_renderer_list.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Framework\Pricing\Render" name="product.price.render.grouped">
-        <arguments>
-            <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
-            <!-- set "override" configuration settings here -->
-        </arguments>
-    </block>
+    <body>
+        <block class="Magento\Framework\Pricing\Render" name="product.price.render.grouped">
+            <arguments>
+                <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument>
+                <!-- set "override" configuration settings here -->
+            </arguments>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_view_type_grouped.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_view_type_grouped.xml
index 506bf1718da08b33f165409a9949c31104089666..12da5e9a78b2c39eb61e5ccbede3f85c9c12f868 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_view_type_grouped.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/catalog_product_view_type_grouped.xml
@@ -26,15 +26,15 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-grouped"/>
+        <referenceContainer name="product.info.form.content">
+            <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" name="product.info.grouped" before="product.info.addtocart" template="product/view/type/grouped.phtml"/>
+            <container name="product.info.grouped.extra" after="product.info.grouped" before="product.info.grouped" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.grouped.extra">
+            <block class="Magento\GroupedProduct\Block\Stockqty\Type\Grouped" template="Magento_CatalogInventory::stockqty/composite.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" as="product.info.grouped" template="product/view/type/default.phtml"/>
+        </referenceContainer>
     </body>
-    <referenceContainer name="product.info.form.content">
-        <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" name="product.info.grouped" before="product.info.addtocart" template="product/view/type/grouped.phtml"/>
-        <container name="product.info.grouped.extra" after="product.info.grouped" before="product.info.grouped" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.grouped.extra">
-        <block class="Magento\GroupedProduct\Block\Stockqty\Type\Grouped" template="Magento_CatalogInventory::stockqty/composite.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" as="product.info.grouped" template="product/view/type/default.phtml"/>
-    </referenceContainer>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
index e28ab0ee9bed7cfdce3cf6c6fe3cc919726194d4..c1ce2219f26f1d2721aee6b6457c41936b62af50 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.item.renderers">
-        <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/item/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers">
+            <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/item/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
index f86ce5c6a1047b1a1d5e515a8a96f871333aac69..18df2b5f84990a568f30163a653a46fb4a70fdd3 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_sidebar_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.cart.sidebar.item.renderers">
-        <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/sidebar/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.cart.sidebar.item.renderers">
+            <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/sidebar/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
index 8cc7148842228af1b30c0e16230bb8d4e14d0914..d664b2bf2a90d8be6e48c80df3ba56ffd5423209 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_onepage_review_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.onepage.review.item.renderers">
-        <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::onepage/review/item.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.onepage.review.item.renderers">
+            <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::onepage/review/item.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_creditmemo_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
index 11fccaa410991a9cb419b6a17f77e917b97682c6..a0b1d8caef94f575e44ad5b9bbaafcdd24c9b68e 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
-    <referenceBlock name="sales.email.order.creditmemo.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/creditmemo/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.creditmemo.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/creditmemo/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_invoice_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_invoice_renderers.xml
index 46c53cfc1307221c3838354058c26f2523ba55ed..050eefe8bf1faf7b0ec21ae4773a2e4812342484 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_invoice_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Invoice Items List" design_abstraction="custom">
-    <referenceBlock name="sales.email.order.invoice.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/invoice/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.invoice.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/invoice/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_renderers.xml
index 675f206e4f31c649d1522c53e20b33546f09bcba..edea824faa38eae1fff00457f83303043b7bb035 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_email_order_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Order Items List" design_abstraction="custom">
-    <block name="sales.email.order.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/order/default.phtml"/>
-    </block>
+    <body>
+        <block name="sales.email.order.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Email\Items\Order\Grouped" as="grouped" template="Magento_Sales::email/items/order/default.phtml"/>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_guest_invoice.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_guest_invoice.xml
index e697612034cb5d5ebd51d14d231f31357b6e46bc..fb453a2fbce1bb54352757001afa37fa1c8c1717 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_guest_invoice.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_guest_invoice.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.invoice.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.invoice.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_creditmemo_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_creditmemo_renderers.xml
index c28802936da115257a65d9f9267631f2d14c0b96..512e144ef34b5915eb6a64192f110b1376373fc8 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_creditmemo_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.creditmemo.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/creditmemo/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.creditmemo.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/creditmemo/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_invoice_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_invoice_renderers.xml
index e697612034cb5d5ebd51d14d231f31357b6e46bc..fb453a2fbce1bb54352757001afa37fa1c8c1717 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_invoice_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.invoice.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.invoice.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_item_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_item_renderers.xml
index 2da4237857c1735ca6df6a519e777bcadcde0cd8..7a748b429aa96a6fcd77e3753711625583f6c751 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_item_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.items.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.items.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_creditmemo_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
index 6763f97aa426b6be382893ccb270f73213f77934..57bd922c5cdc818704d329a736d741eba0f3e069 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.creditmemo.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/creditmemo/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.creditmemo.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/creditmemo/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_invoice_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_invoice_renderers.xml
index 9b1db40e5efb9c2c0b99780f6153deed2991f5ff..b536fb121a7ac165cf18394e8e48b236079b35b1 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_invoice_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="checkout.order.print.invoice.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="checkout.order.print.invoice.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/invoice/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_renderers.xml
index fdbef13de242ac435fc8e0f96bcac71eea81c766..8df896026a08e9e411b72ed98e56560f384ff594 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/sales_order_print_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.renderers">
-        <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.renderers">
+            <block class="Magento\GroupedProduct\Block\Order\Item\Renderer\Grouped" as="grouped" template="Magento_Sales::order/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
index c1ded611880a2d907fc39c3469d4f8a2c3860ac2..f43d36539dc2bad67594fd7a398c193afd6d9ea2 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
+++ b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
@@ -36,12 +36,12 @@
 
 <div class="table-wrapper grouped">
     <table class="table data grouped" id="super-product-table">
-        <caption class="table caption"><?php echo __('Grouped product items') ?></caption>
+        <caption class="table-caption"><?php echo __('Grouped product items') ?></caption>
         <thead>
         <tr>
-            <th class="col item"><?php echo __('Product Name') ?></th>
+            <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
             <?php if ($_product->isSaleable()): ?>
-                <th class="col qty"><?php echo __('Qty') ?></th>
+                <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
             <?php endif; ?>
         </tr>
         </thead>
@@ -50,7 +50,7 @@
         <?php foreach ($_associatedProducts as $_item): ?>
         <tbody>
             <tr>
-                <td class="col item">
+                <td data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>" class="col item">
                     <strong class="product name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
                     <?php if ($this->getCanShowProductPrice($_product)): ?>
                         <?php if ($this->getCanShowProductPrice($_item)): ?>
@@ -59,7 +59,7 @@
                      <?php endif; ?>
                 </td>
                 <?php if ($_product->isSaleable()): ?>
-                <td class="col qty">
+                <td data-th="<?php echo $this->escapeHtml(__('Qty')); ?>"  class="col qty">
                 <?php if ($_item->isSaleable()) : ?>
                     <div class="control qty">
                         <input type="number" name="super_group[<?php echo $_item->getId() ?>]"
diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Filter.php b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Filter.php
index 126b9f51427e108bba49ed4328c2c80a10c57e2f..a8a10f5e6d92c0bfaeee556972ab696d1ab0ffba 100644
--- a/app/code/Magento/ImportExport/Block/Adminhtml/Export/Filter.php
+++ b/app/code/Magento/ImportExport/Block/Adminhtml/Export/Filter.php
@@ -101,9 +101,10 @@ class Filter extends \Magento\Backend\Block\Widget\Grid\Extended
             'image' => $this->getViewFileUrl('images/grid-cal.gif')
         );
         /** @var $selectBlock \Magento\Framework\View\Element\Html\Date */
-        $dateBlock = $this->_layout->getBlockFactory()->createBlock(
+        $dateBlock = $this->_layout->createBlock(
             'Magento\Framework\View\Element\Html\Date',
-            array('data' => $arguments)
+            '',
+            ['data' => $arguments]
         );
         $fromValue = null;
         $toValue = null;
@@ -172,9 +173,10 @@ class Filter extends \Magento\Backend\Block\Widget\Grid\Extended
                 'extra_params' => 'multiple="multiple" size="' . ($size > 5 ? 5 : ($size < 2 ? 2 : $size))
             );
             /** @var $selectBlock \Magento\Framework\View\Element\Html\Select */
-            $selectBlock = $this->_layout->getBlockFactory()->createBlock(
+            $selectBlock = $this->_layout->createBlock(
                 'Magento\Framework\View\Element\Html\Select',
-                array('data' => $arguments)
+                '',
+                ['data' => $arguments]
             );
             return $selectBlock->setOptions($options)->setValue($value)->getHtml();
         } else {
@@ -253,9 +255,10 @@ class Filter extends \Magento\Backend\Block\Widget\Grid\Extended
                 'class' => 'select select-export-filter'
             );
             /** @var $selectBlock \Magento\Framework\View\Element\Html\Select */
-            $selectBlock = $this->_layout->getBlockFactory()->createBlock(
+            $selectBlock = $this->_layout->createBlock(
                 'Magento\Framework\View\Element\Html\Select',
-                array('data' => $arguments)
+                '',
+                ['data' => $arguments]
             );
             return $selectBlock->setOptions($options)->setValue($value)->getHtml();
         } else {
diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json
index 0905015002e8b7b94b107615c4cf50d46a8fece8..29409c1ade12aafc56e32f13d922d46ed191742e 100644
--- a/app/code/Magento/ImportExport/composer.json
+++ b/app/code/Magento/ImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-indexer": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-indexer": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_export_index.xml b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_export_index.xml
index d07c5087acdcd5dff78b2b60e15c49b9fcac1835..1adae7c2e95896fc4d249f546205045da8935e70 100644
--- a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_export_index.xml
+++ b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_export_index.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Template" template="Magento_ImportExport::export/form/before.phtml" name="export.form.before" as="form_before"/>
-        <block class="Magento\ImportExport\Block\Adminhtml\Export\Edit" name="export.form.container"/>
-        <block class="Magento\ImportExport\Block\Adminhtml\Form\After" template="Magento_ImportExport::export/form/after.phtml" name="export.form.after" as="form_after"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Template" template="Magento_ImportExport::export/form/before.phtml" name="export.form.before" as="form_before"/>
+            <block class="Magento\ImportExport\Block\Adminhtml\Export\Edit" name="export.form.container"/>
+            <block class="Magento\ImportExport\Block\Adminhtml\Form\After" template="Magento_ImportExport::export/form/after.phtml" name="export.form.after" as="form_after"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_busy.xml b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_busy.xml
index da4b7e44fac53508e8f8950edb56fc5b6c5445fb..ffca0141a2ecba544039538607c06e553d9a5976 100644
--- a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_busy.xml
+++ b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_busy.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" template="Magento_ImportExport::busy.phtml" name="busy" as="busy"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" template="Magento_ImportExport::busy.phtml" name="busy" as="busy"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_index.xml b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_index.xml
index 464c563ece8231f877f07ba25fd54e72a41edeca..3eb7a4e7608d844a10590a89591db02f2633bc96 100644
--- a/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_index.xml
+++ b/app/code/Magento/ImportExport/view/adminhtml/layout/adminhtml_import_index.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\ImportExport\Block\Adminhtml\Import\Edit\Before" template="Magento_ImportExport::import/form/before.phtml" name="import.form.before" as="form_before"/>
-        <block class="Magento\ImportExport\Block\Adminhtml\Import\Edit" name="import.form.container"/>
-        <block class="Magento\ImportExport\Block\Adminhtml\Form\After" template="Magento_ImportExport::import/form/after.phtml" name="import.form.after" as="form_after"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\ImportExport\Block\Adminhtml\Import\Edit\Before" template="Magento_ImportExport::import/form/before.phtml" name="import.form.before" as="form_before"/>
+            <block class="Magento\ImportExport\Block\Adminhtml\Import\Edit" name="import.form.container"/>
+            <block class="Magento\ImportExport\Block\Adminhtml\Form\After" template="Magento_ImportExport::import/form/after.phtml" name="import.form.after" as="form_after"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json
index a7011031a7b8e050550e58ed8e2abdb0b8552590..e8570cbba88985275a17b8393b8bf1329181d871 100644
--- a/app/code/Magento/Indexer/composer.json
+++ b/app/code/Magento/Indexer/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-page-cache": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-page-cache": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list.xml b/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list.xml
index 114704ab23474dfc4d4657be43a3829a7c1ca76a..a5b2f3d0159ba30e2e01ef18958dabfd0470e71a 100644
--- a/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list.xml
+++ b/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="indexer_indexer_list_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Indexer\Block\Backend\Container" name="adminhtml.indexer.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Indexer\Block\Backend\Container" name="adminhtml.indexer.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list_grid.xml b/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list_grid.xml
index 14d756faa8b78a403450635eec04acb7e743ae0a..8ea495539b1ff9ab27ac1311d638b6f95fa13b72 100644
--- a/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list_grid.xml
+++ b/app/code/Magento/Indexer/view/adminhtml/layout/indexer_indexer_list_grid.xml
@@ -24,86 +24,88 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.indexer.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.indexer.grid" as="grid">
-            <arguments>
-                <argument name="use_ajax" xsi:type="string">0</argument>
-                <argument name="pager_visibility" xsi:type="string">0</argument>
-                <argument name="id" xsi:type="string">gridIndexer</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Indexer\Model\Indexer\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.indexer.grid.grid.massaction" as="grid.massaction">
+    <body>
+        <referenceBlock name="adminhtml.indexer.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.indexer.grid" as="grid">
                 <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">indexer_id</argument>
-                    <argument name="form_field_name" xsi:type="string">indexer_ids</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <updater>Magento\Indexer\Block\Backend\Grid\ItemsUpdater</updater>
-                        <item name="change_mode_onthefly" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Update on Save</item>
-                            <item name="url" xsi:type="string">*/indexer/massOnTheFly</item>
-                        </item>
-                        <item name="change_mode_changelog" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Update by Schedule</item>
-                            <item name="url" xsi:type="string">*/indexer/massChangelog</item>
-                        </item>
-                    </argument>
+                    <argument name="use_ajax" xsi:type="string">0</argument>
+                    <argument name="pager_visibility" xsi:type="string">0</argument>
+                    <argument name="id" xsi:type="string">gridIndexer</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Indexer\Model\Indexer\Collection</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.indexer.grid.columnSet">
-                <arguments>
-                    <argument name="id" xsi:type="string">indexer_grid</argument>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Indexer</argument>
-                        <argument name="width" xsi:type="string">180</argument>
-                        <argument name="align" xsi:type="string">left</argument>
-                        <argument name="index" xsi:type="string">title</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">indexer-title</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_description">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Description</argument>
-                        <argument name="index" xsi:type="string">description</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">indexer-description</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_mode">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Mode</argument>
-                        <argument name="getter" xsi:type="string">isScheduled</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Scheduled</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">indexer-mode</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_status">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.indexer.grid.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="getter" xsi:type="string">getStatus</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Status</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">indexer-status</argument>
+                        <argument name="massaction_id_field" xsi:type="string">indexer_id</argument>
+                        <argument name="form_field_name" xsi:type="string">indexer_ids</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
+                        <argument name="options" xsi:type="array">
+                            <updater>Magento\Indexer\Block\Backend\Grid\ItemsUpdater</updater>
+                            <item name="change_mode_onthefly" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Update on Save</item>
+                                <item name="url" xsi:type="string">*/indexer/massOnTheFly</item>
+                            </item>
+                            <item name="change_mode_changelog" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Update by Schedule</item>
+                                <item name="url" xsi:type="string">*/indexer/massChangelog</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_updated">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.indexer.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Updated</argument>
-                        <argument name="index" xsi:type="string">updated</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="getter" xsi:type="string">getLatestUpdated</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Updated</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        <argument name="id" xsi:type="string">indexer_grid</argument>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Indexer</argument>
+                            <argument name="width" xsi:type="string">180</argument>
+                            <argument name="align" xsi:type="string">left</argument>
+                            <argument name="index" xsi:type="string">title</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">indexer-title</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_description">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Description</argument>
+                            <argument name="index" xsi:type="string">description</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">indexer-description</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_mode">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Mode</argument>
+                            <argument name="getter" xsi:type="string">isScheduled</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Scheduled</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">indexer-mode</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_status">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="getter" xsi:type="string">getStatus</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Status</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">indexer-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="indexer_updated">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Updated</argument>
+                            <argument name="index" xsi:type="string">updated</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="getter" xsi:type="string">getLatestUpdated</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Indexer\Block\Backend\Grid\Column\Renderer\Updated</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Install/composer.json b/app/code/Magento/Install/composer.json
index 68903158c40f5d6392d2a21e81b5d9af0291c29d..1e7a486d77ab1d285c4c0ce11e1192bcede6e59b 100644
--- a/app/code/Magento/Install/composer.json
+++ b/app/code/Magento/Install/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-user": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-user": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Install/view/adminhtml/layout/default.xml b/app/code/Magento/Install/view/adminhtml/layout/default.xml
index 926dc03ac0142350ada1a9f092c03525e88d46ee..efbc5c389988e51125d157a801708e2de834a538 100644
--- a/app/code/Magento/Install/view/adminhtml/layout/default.xml
+++ b/app/code/Magento/Install/view/adminhtml/layout/default.xml
@@ -27,4 +27,5 @@
     <head>
         <link src="Magento_Install::survey_notification.js"/>
     </head>
+    <body/>
 </page>
diff --git a/app/code/Magento/Install/view/install/layout/install_wizard_config.xml b/app/code/Magento/Install/view/install/layout/install_wizard_config.xml
index 789941b22da00da52c9d36db82e908d1e871d144..569bfd08bf5dc6a02a0d3fa030907e73a7120514 100644
--- a/app/code/Magento/Install/view/install/layout/install_wizard_config.xml
+++ b/app/code/Magento/Install/view/install/layout/install_wizard_config.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="database">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="string">db/main.phtml</argument>
-        </action>
-        <action method="addDatabaseBlock">
-            <argument name="type" xsi:type="string">mysql4</argument>
-            <argument name="block" xsi:type="string">Magento\Install\Block\Db\Type\Mysql4</argument>
-            <argument name="template" xsi:type="string">db/mysql4.phtml</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="database">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="string">db/main.phtml</argument>
+            </action>
+            <action method="addDatabaseBlock">
+                <argument name="type" xsi:type="string">mysql4</argument>
+                <argument name="block" xsi:type="string">Magento\Install\Block\Db\Type\Mysql4</argument>
+                <argument name="template" xsi:type="string">db/mysql4.phtml</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json
index 68c297e7be756d005549a11b375b06b51c58fd06..ce0e0cb048915378706e436319d5b19cfd489300 100644
--- a/app/code/Magento/Integration/composer.json
+++ b/app/code/Magento/Integration/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-user": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-authorization": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-user": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_edit.xml b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_edit.xml
index 3a54525dece7a09ccb8ccb93e38f1ba179a3fc5d..0a3ed05282181619d18055c0a6c4a3341251c1ed 100644
--- a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_edit.xml
+++ b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_edit.xml
@@ -23,20 +23,22 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="editor"/>
-    <referenceContainer name="left">
-        <block class="Magento\Integration\Block\Adminhtml\Integration\Edit\Tabs" name="integration_edit_tabs">
-            <block class="Magento\Integration\Block\Adminhtml\Integration\Edit\Tab\Info" name="integration_edit_tab_info">
-                <block class="Magento\Integration\Block\Adminhtml\Integration\Tokens" name="integration_tokens"/>
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\Integration\Block\Adminhtml\Integration\Edit\Tabs" name="integration_edit_tabs">
+                <block class="Magento\Integration\Block\Adminhtml\Integration\Edit\Tab\Info" name="integration_edit_tab_info">
+                    <block class="Magento\Integration\Block\Adminhtml\Integration\Tokens" name="integration_tokens"/>
+                </block>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">info_section</argument>
+                    <argument name="block" xsi:type="string">integration_edit_tab_info</argument>
+                </action>
             </block>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">info_section</argument>
-                <argument name="block" xsi:type="string">integration_edit_tab_info</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Integration\Block\Adminhtml\Integration\Edit" name="integration_edit_content"/>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Integration\Block\Adminhtml\Integration\Edit" name="integration_edit_content"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_grid_block.xml b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_grid_block.xml
index 16623b926c1c6eb50d116e7b109c03672fa9f9ab..c0346681df307a7be60c6e54bff306febdacccad 100644
--- a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_grid_block.xml
+++ b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_grid_block.xml
@@ -26,73 +26,75 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="integration.grid.container">
-        <block class="Magento\Integration\Block\Adminhtml\Integration\Grid" name="integration.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">integrationGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Integration\Model\Resource\Integration\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="default_sort" xsi:type="string">integration_id</argument>
-                <argument name="default_dir" xsi:type="string">asc</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="integration.grid.columnSet">
+    <body>
+        <referenceBlock name="integration.grid.container">
+            <block class="Magento\Integration\Block\Adminhtml\Integration\Grid" name="integration.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string"></item>
+                    <argument name="id" xsi:type="string">integrationGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Integration\Model\Resource\Integration\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="default_sort" xsi:type="string">integration_id</argument>
+                    <argument name="default_dir" xsi:type="string">asc</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
-                    <argument name="empty_text" xsi:type="string" translate="true">No Integrations Found</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="integration.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="id" xsi:type="string">name</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Name</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Integration\Model\Integration\Source\Status"/>
-                        <argument name="index" xsi:type="string">status</argument>
-                        <argument name="id" xsi:type="string">status</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="activate">
-                    <arguments>
-                        <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Link\Activate</argument>
-                        <argument name="index" xsi:type="string">activate</argument>
-                        <argument name="id" xsi:type="string">activate</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="edit">
-                    <arguments>
-                        <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Button\Edit</argument>
-                        <argument name="index" xsi:type="string">edit</argument>
-                        <argument name="id" xsi:type="string">edit</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="delete">
-                    <arguments>
-                        <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Button\Delete</argument>
-                        <argument name="class" xsi:type="string">action delete</argument>
-                        <argument name="index" xsi:type="string">delete</argument>
-                        <argument name="id" xsi:type="string">delete</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string"/>
+                        </argument>
+                        <argument name="empty_text" xsi:type="string" translate="true">No Integrations Found</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="id" xsi:type="string">name</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Name</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Integration\Model\Integration\Source\Status"/>
+                            <argument name="index" xsi:type="string">status</argument>
+                            <argument name="id" xsi:type="string">status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="activate">
+                        <arguments>
+                            <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Link\Activate</argument>
+                            <argument name="index" xsi:type="string">activate</argument>
+                            <argument name="id" xsi:type="string">activate</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="edit">
+                        <arguments>
+                            <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Button\Edit</argument>
+                            <argument name="index" xsi:type="string">edit</argument>
+                            <argument name="id" xsi:type="string">edit</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="delete">
+                        <arguments>
+                            <argument name="renderer" xsi:type="string">Magento\Integration\Block\Adminhtml\Widget\Grid\Column\Renderer\Button\Delete</argument>
+                            <argument name="class" xsi:type="string">action delete</argument>
+                            <argument name="index" xsi:type="string">delete</argument>
+                            <argument name="id" xsi:type="string">delete</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_index.xml b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_index.xml
index 310e194d57c02daeac1b896aced4705c716368ba..e429758f03be25ff839f944048cfc73bb3bc0a70 100644
--- a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_index.xml
+++ b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_index.xml
@@ -30,8 +30,10 @@
         <css src="Magento_Integration::integration.css"/>
     </head>
     <update handle="adminhtml_integration_grid_block"/>
-    <referenceBlock name="content">
-        <block class="Magento\Backend\Block\Template" name="integration.popup.container" template="Magento_Integration::integration/popup_container.phtml" before="-"/>
-        <block class="Magento\Integration\Block\Adminhtml\Integration" name="integration.grid.container"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="content">
+            <block class="Magento\Backend\Block\Template" name="integration.popup.container" template="Magento_Integration::integration/popup_container.phtml" before="-"/>
+            <block class="Magento\Integration\Block\Adminhtml\Integration" name="integration.grid.container"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_new.xml b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_new.xml
index 82ffd3d25250e5946de706b4030da0574cdbdf40..272ebea7b66f6f95057cd7712b6201aa6deb493f 100644
--- a/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_new.xml
+++ b/app/code/Magento/Integration/view/adminhtml/layout/adminhtml_integration_new.xml
@@ -28,7 +28,9 @@
         <css src="Magento_Integration::integration.css"/>
     </head>
     <update handle="adminhtml_integration_edit"/>
-    <referenceBlock name="content">
-        <block class="Magento\Backend\Block\Template" name="integration.popup.container" template="Magento_Integration::integration/popup_container.phtml" before="-"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="content">
+            <block class="Magento\Backend\Block\Template" name="integration.popup.container" template="Magento_Integration::integration/popup_container.phtml" before="-"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json
index 96aa757a73d537b910057ea96e0967855d7857f1..ffd074ea7b3958dc6debee7cfc8bde81440773d4 100644
--- a/app/code/Magento/LayeredNavigation/composer.json
+++ b/app/code/Magento/LayeredNavigation/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/1column.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/1column.xml
index 54f9679596045450b67d424ea1d3f459491ff694..22426946b52ab6e53d9e610ce956e56808f49e83 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/1column.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/1column.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All One-Column Layout Pages" design_abstraction="page_layout">
-    <move element="catalog.leftnav" destination="content.top" after="-" />
+    <body>
+        <move element="catalog.leftnav" destination="content.top" after="-"/>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-left.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-left.xml
index eb3114fb730baec7c4ae1278892f96d74039327e..e0f2da887ce48c99d9cbc65565cfe7dfaa8c90ef 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-left.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-left.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Two-Column Layout Pages (Left Column)" design_abstraction="page_layout">
-    <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-"/>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-right.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-right.xml
index f663cb76215461a16375f8f5b82d0252050facaa..4ea17846df3bf7ca9858ee320fe7f3db2df4c514 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-right.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/2columns-right.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Two-Column Layout Pages (Right Column)" design_abstraction="page_layout">
-    <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-"/>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/3columns.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/3columns.xml
index 410e4c2b287a6eafa8000d5d5036d4f6ddfb298c..2f6c8e2219f8fec22e68e4bc6a498676d862b63e 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/3columns.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/3columns.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Three-Column Layout Pages" design_abstraction="page_layout">
-    <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-"/>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered.xml
index 545e86586b922eeb1268a9626e98011b03a831cf..f2b522c3b267bbc7b470dba30ee2128ed074ff81 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered.xml
@@ -26,11 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-with-filter"/>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\LayeredNavigation\Block\Navigation\Category" name="catalog.leftnav" before="-" template="layer/view.phtml">
+                <block class="Magento\LayeredNavigation\Block\Navigation\State\Category" name="catalog.navigation.state" as="state"/>
+                <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="catalog.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
+            </block>
+        </referenceContainer>
     </body>
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\LayeredNavigation\Block\Navigation\Category" name="catalog.leftnav" before="-" template="layer/view.phtml">
-            <block class="Magento\LayeredNavigation\Block\Navigation\State\Category" name="catalog.navigation.state" as="state" />
-            <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="catalog.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
-        </block>
-    </referenceContainer>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered_without_children.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered_without_children.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered_without_children.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalog_category_view_type_layered_without_children.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_advanced_result.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_advanced_result.xml
index a4c9f762b650159644c50d9dfd2546531e684dd5..cee0858beffcc52f6f4ac645471f7ca42ffd0604 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_advanced_result.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_advanced_result.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\LayeredNavigation\Block\Navigation\AdvancedSearch" name="advanced.search.leftnav" before="-" template="layer/view.phtml">
-            <block class="Magento\LayeredNavigation\Block\Navigation\State\AdvancedSearch" name="advanced.search.navigation.state" as="state" />
-            <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="advanced.search.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\LayeredNavigation\Block\Navigation\AdvancedSearch" name="advanced.search.leftnav" before="-" template="layer/view.phtml">
+                <block class="Magento\LayeredNavigation\Block\Navigation\State\AdvancedSearch" name="advanced.search.navigation.state" as="state"/>
+                <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="advanced.search.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_result_index.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_result_index.xml
index f755468c9d9b489bb21864b4c980331db2f91ee9..652df27893cd544eec9cfa8212517e4cdc6398db 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_result_index.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/catalogsearch_result_index.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\LayeredNavigation\Block\Navigation\Search" name="catalogsearch.leftnav" before="-" template="layer/view.phtml">
-            <block class="Magento\LayeredNavigation\Block\Navigation\State\Search" name="catalogsearch.navigation.state" as="state" />
-            <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="catalogsearch.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\LayeredNavigation\Block\Navigation\Search" name="catalogsearch.leftnav" before="-" template="layer/view.phtml">
+                <block class="Magento\LayeredNavigation\Block\Navigation\State\Search" name="catalogsearch.navigation.state" as="state"/>
+                <block class="Magento\LayeredNavigation\Block\Navigation\FilterRenderer" name="catalogsearch.navigation.renderer" as="renderer" template="layer/filter.phtml"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/layout/page_empty.xml b/app/code/Magento/LayeredNavigation/view/frontend/layout/page_empty.xml
index 8a61895abf5663c5c403f7fa2ccb37c857f84b8b..ed6a06f441256464d75d9afff78d4c22c277a096 100644
--- a/app/code/Magento/LayeredNavigation/view/frontend/layout/page_empty.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/layout/page_empty.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Empty Layout Pages" design_abstraction="page_layout">
-    <move element="catalog.leftnav" destination="category.product.list.additional" before="-" />
+    <body>
+        <move element="catalog.leftnav" destination="category.product.list.additional" before="-"/>
+    </body>
 </page>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block_exception.xml b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/1column.xml
similarity index 64%
rename from dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block_exception.xml
rename to app/code/Magento/LayeredNavigation/view/frontend/page_layout/1column.xml
index 84492d68410f5479f9764049ab8ac29524ffc512..bc17246516a05fb4c9406768dd4e980573a6698d 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block_exception.xml
+++ b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/1column.xml
@@ -23,11 +23,8 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
-    <block name="block1" class="Magento\Framework\View\Element\Text">
-        <container name="container" label="Container"/>
-        <action method="getChildBlock">
-            <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">container</argument>
-        </action>
-    </block>
-</layout>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All One-Column Layout Pages" design_abstraction="page_layout">
+    <body>
+        <move element="catalog.leftnav" destination="content.top" after="-" />
+    </body>
+</page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-left.xml b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-left.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1357dca043e3b11a6a126dcd498fde0d72fec169
--- /dev/null
+++ b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-left.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Two-Column Layout Pages (Left Column)" design_abstraction="page_layout">
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    </body>
+</page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-right.xml b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-right.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60523798c983713f03a57aa625f65184edd13f09
--- /dev/null
+++ b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-right.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Two-Column Layout Pages (Right Column)" design_abstraction="page_layout">
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    </body>
+</page>
diff --git a/app/code/Magento/LayeredNavigation/view/frontend/page_layout/3columns.xml b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/3columns.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41ac38458e97172283cf2edeab9538f7944a236c
--- /dev/null
+++ b/app/code/Magento/LayeredNavigation/view/frontend/page_layout/3columns.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="All Three-Column Layout Pages" design_abstraction="page_layout">
+    <body>
+        <move element="catalog.leftnav" destination="sidebar.main" before="-" />
+    </body>
+</page>
diff --git a/app/code/Magento/Log/composer.json b/app/code/Magento/Log/composer.json
index dd51872c27b5c9e55871adc33bad445019ff23fa..c84df82df44771d1adeeb65a258cb79a3708c5e7 100644
--- a/app/code/Magento/Log/composer.json
+++ b/app/code/Magento/Log/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Log/view/adminhtml/layout/customer_index_edit.xml b/app/code/Magento/Log/view/adminhtml/layout/customer_index_edit.xml
index 4af247fe6964caa47c85aebe2b5f66293efa3db2..fbe6fa112ccf88431064ba7056e27f3000879a57 100644
--- a/app/code/Magento/Log/view/adminhtml/layout/customer_index_edit.xml
+++ b/app/code/Magento/Log/view/adminhtml/layout/customer_index_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="personal_info">
-        <block class="Magento\Log\Block\Adminhtml\Customer\Edit\Tab\View\Status" name="view_customer_status" template="customer/status.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="personal_info">
+            <block class="Magento\Log\Block\Adminhtml\Customer\Edit\Tab\View\Status" name="view_customer_status" template="customer/status.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Log/view/adminhtml/layout/visitor_online_index.xml b/app/code/Magento/Log/view/adminhtml/layout/visitor_online_index.xml
index 3c464b5b86d173eea4ee4c17735262e77d74d0f7..ba54de5949082d852b1325749b559580de25ba79 100644
--- a/app/code/Magento/Log/view/adminhtml/layout/visitor_online_index.xml
+++ b/app/code/Magento/Log/view/adminhtml/layout/visitor_online_index.xml
@@ -24,106 +24,108 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Log\Block\Adminhtml\Online" name="adminhtml.block.log.online.grid.container">
-            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.log.online.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">onlineGrid</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\Log\Model\Resource\Visitor\Online\Grid\Collection</argument>
-                    <argument name="default_sort" xsi:type="string">last_activity</argument>
-                    <argument name="default_dir" xsi:type="string">DESC</argument>
-                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.log.online.grid.columnSet">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Log\Block\Adminhtml\Online" name="adminhtml.block.log.online.grid.container">
+                <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.log.online.grid" as="grid">
                     <arguments>
-                        <argument name="rowUrl" xsi:type="array">
-                            <item name="generatorClass" xsi:type="string">Magento\Log\Model\Resource\Visitor\Online\Grid\Row\UrlGenerator</item>
-                            <item name="path" xsi:type="string">customer/index/edit</item>
-                            <item name="extraParamsTemplate" xsi:type="array">
-                                <item name="id" xsi:type="string">getCustomerId</item>
-                            </item>
-                        </argument>
+                        <argument name="id" xsi:type="string">onlineGrid</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\Log\Model\Resource\Visitor\Online\Grid\Collection</argument>
+                        <argument name="default_sort" xsi:type="string">last_activity</argument>
+                        <argument name="default_dir" xsi:type="string">DESC</argument>
+                        <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_id">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.log.online.grid.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">ID</argument>
-                            <argument name="width" xsi:type="string">50px</argument>
-                            <argument name="align" xsi:type="string">right</argument>
-                            <argument name="type" xsi:type="string">number</argument>
-                            <argument name="default" xsi:type="string" translate="true">n/a</argument>
-                            <argument name="index" xsi:type="string">customer_id</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">First Name</argument>
-                            <argument name="default" xsi:type="string">Guest</argument>
-                            <argument name="index" xsi:type="string">customer_firstname</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Last Name</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="index" xsi:type="string">customer_lastname</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Email</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="index" xsi:type="string">customer_email</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="ip_address">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">IP Address</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="filter" xsi:type="string">0</argument>
-                            <argument name="renderer" xsi:type="string">Magento\Log\Block\Adminhtml\Online\Grid\Renderer\Ip</argument>
-                            <argument name="index" xsi:type="string">remote_addr</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="session_start_time">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Session Start Time</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="align" xsi:type="string">left</argument>
-                            <argument name="width" xsi:type="string">200px</argument>
-                            <argument name="type" xsi:type="string">datetime</argument>
-                            <argument name="index" xsi:type="string">first_visit_at</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_activity">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Last Activity</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="align" xsi:type="string">left</argument>
-                            <argument name="width" xsi:type="string">200px</argument>
-                            <argument name="type" xsi:type="string">datetime</argument>
-                            <argument name="index" xsi:type="string">last_visit_at</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Type</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="options" xsi:type="options" model="Magento\Customer\Model\Resource\Customer\CustomersTypeOptions"/>
-                            <argument name="index" xsi:type="string">visitor_type</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_url">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Last URL</argument>
-                            <argument name="default" xsi:type="string">n/a</argument>
-                            <argument name="linelength" xsi:type="string">60</argument>
-                            <argument name="type" xsi:type="string">wrapline</argument>
-                            <argument name="index" xsi:type="string">last_url</argument>
-                            <argument name="renderer" xsi:type="string">Magento\Log\Block\Adminhtml\Online\Grid\Renderer\Url</argument>
+                            <argument name="rowUrl" xsi:type="array">
+                                <item name="generatorClass" xsi:type="string">Magento\Log\Model\Resource\Visitor\Online\Grid\Row\UrlGenerator</item>
+                                <item name="path" xsi:type="string">customer/index/edit</item>
+                                <item name="extraParamsTemplate" xsi:type="array">
+                                    <item name="id" xsi:type="string">getCustomerId</item>
+                                </item>
+                            </argument>
                         </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_id">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">ID</argument>
+                                <argument name="width" xsi:type="string">50px</argument>
+                                <argument name="align" xsi:type="string">right</argument>
+                                <argument name="type" xsi:type="string">number</argument>
+                                <argument name="default" xsi:type="string" translate="true">n/a</argument>
+                                <argument name="index" xsi:type="string">customer_id</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">First Name</argument>
+                                <argument name="default" xsi:type="string">Guest</argument>
+                                <argument name="index" xsi:type="string">customer_firstname</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Last Name</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="index" xsi:type="string">customer_lastname</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Email</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="index" xsi:type="string">customer_email</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="ip_address">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">IP Address</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="filter" xsi:type="string">0</argument>
+                                <argument name="renderer" xsi:type="string">Magento\Log\Block\Adminhtml\Online\Grid\Renderer\Ip</argument>
+                                <argument name="index" xsi:type="string">remote_addr</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="session_start_time">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Session Start Time</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="align" xsi:type="string">left</argument>
+                                <argument name="width" xsi:type="string">200px</argument>
+                                <argument name="type" xsi:type="string">datetime</argument>
+                                <argument name="index" xsi:type="string">first_visit_at</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_activity">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Last Activity</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="align" xsi:type="string">left</argument>
+                                <argument name="width" xsi:type="string">200px</argument>
+                                <argument name="type" xsi:type="string">datetime</argument>
+                                <argument name="index" xsi:type="string">last_visit_at</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Type</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="options" xsi:type="options" model="Magento\Customer\Model\Resource\Customer\CustomersTypeOptions"/>
+                                <argument name="index" xsi:type="string">visitor_type</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_url">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Last URL</argument>
+                                <argument name="default" xsi:type="string">n/a</argument>
+                                <argument name="linelength" xsi:type="string">60</argument>
+                                <argument name="type" xsi:type="string">wrapline</argument>
+                                <argument name="index" xsi:type="string">last_url</argument>
+                                <argument name="renderer" xsi:type="string">Magento\Log\Block\Adminhtml\Online\Grid\Renderer\Url</argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json
index 393cf94bcb9ffe8cb78f62e80c7c78ca57dc81db..20d701c86dc8ca9b6c9af98425a058fd37816a37 100644
--- a/app/code/Magento/Msrp/composer.json
+++ b/app/code/Magento/Msrp/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-bundle": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-configurable-product": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-downloadable": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-grouped-product": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-bundle": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-configurable-product": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-downloadable": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-grouped-product": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Msrp/view/base/layout/catalog_product_prices.xml b/app/code/Magento/Msrp/view/base/layout/catalog_product_prices.xml
index 412fd66c24938358b1136aa78fbaf8ec8569396f..666392ad55eb76ee37fe626647bba56c6100870b 100644
--- a/app/code/Magento/Msrp/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/Msrp/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <referenceBlock name="render.product.prices">
         <arguments>
             <argument name="default" xsi:type="array">
@@ -36,4 +36,4 @@
             </argument>
         </arguments>
     </referenceBlock>
-</page>
+</layout>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Msrp/view/frontend/layout/catalog_category_view.xml
index 42d5c75c23c9c9c7114711dac24240e715aa6d7c..d0394612472487d2280716d167a997ba7d8f6ed0 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalog_category_view.xml
@@ -23,6 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_compare_index.xml b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_compare_index.xml
index fb3f982b1480bbe608db38f7270129c132760c68..38b5bcbf3aff22a3bf3685519ef11f2640fb9703 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_compare_index.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_compare_index.xml
@@ -23,6 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view.xml
index 2a3ed5938446a0a993ff95fbc9ccb9a320fd9b3e..600f2ab2eb289e718a4fb75828da6cf0c4c1d381 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view.xml
@@ -23,17 +23,19 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="msrp_popup"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <!--<update handle="MAP_price_msrp_item"/>-->
-    <referenceBlock name="product.price.final">
-        <arguments>
-            <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="product.price.tier">
-        <arguments>
-            <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-        </arguments>
-    </referenceBlock>
+    <update handle="msrp_popup"/>
+    <body>
+        <referenceBlock name="product.price.final">
+            <arguments>
+                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="product.price.tier">
+            <arguments>
+                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view_type_downloadable.xml b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view_type_downloadable.xml
index b32eb2095e5bfcfe8826ea764e6045fef8af332f..e600bbd9f31673bfb6b9752a2e9ea57b9acc674a 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view_type_downloadable.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalog_product_view_type_downloadable.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.info.downloadable.options">
-        <arguments>
-            <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-        </arguments>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.info.downloadable.options">
+            <arguments>
+                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_advanced_result.xml b/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_advanced_result.xml
index 7a9b18310ebc2ca32fdf9cbcbed1ddf125218c6c..ecbd0a3b84a5e99888a1299dd420fbf1fbb77171 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_advanced_result.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_advanced_result.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_result_index.xml b/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_result_index.xml
index 7a9b18310ebc2ca32fdf9cbcbed1ddf125218c6c..ecbd0a3b84a5e99888a1299dd420fbf1fbb77171 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_result_index.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/catalogsearch_result_index.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Msrp/view/frontend/layout/checkout_cart_index.xml
index 6e217b14c0baf22ce1d4af91e9e959d551cfb738..7fed1e1a490f2b8dcee38b9170cd58a0ff8f481c 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/checkout_cart_index.xml
@@ -25,11 +25,13 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
-    <referenceContainer name="checkout.cart.totals.container">
-        <block name="checkout.cart.totals.msrp" before="checkout.cart.totals" class="Magento\Msrp\Block\Total" template="cart/totals.phtml">
-            <arguments>
-                <argument name="original_block_name" xsi:type="string">checkout.cart.totals</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="checkout.cart.totals.container">
+            <block name="checkout.cart.totals.msrp" before="checkout.cart.totals" class="Magento\Msrp\Block\Total" template="cart/totals.phtml">
+                <arguments>
+                    <argument name="original_block_name" xsi:type="string">checkout.cart.totals</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_failure.xml b/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_failure.xml
index 7a9b18310ebc2ca32fdf9cbcbed1ddf125218c6c..ecbd0a3b84a5e99888a1299dd420fbf1fbb77171 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_failure.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_failure.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_success.xml
index 7a9b18310ebc2ca32fdf9cbcbed1ddf125218c6c..ecbd0a3b84a5e99888a1299dd420fbf1fbb77171 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/checkout_onepage_success.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/default.xml b/app/code/Magento/Msrp/view/frontend/layout/default.xml
index 5dc7606b9e4cc7d9a0c8c64d644d55dcbf5d25de..22a4676436286be0df43e4acd60f2374fb24826f 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/default.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/default.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="minicart.subtotal.container">
-        <block name="minicart.subtotal.msrp" before="minicart.subtotal" class="Magento\Msrp\Block\Total" template="cart/subtotal.phtml">
-            <arguments>
-                <argument name="original_block_name" xsi:type="string">minicart.subtotal</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="minicart.subtotal.container">
+            <block name="minicart.subtotal.msrp" before="minicart.subtotal" class="Magento\Msrp\Block\Total" template="cart/subtotal.phtml">
+                <arguments>
+                    <argument name="original_block_name" xsi:type="string">minicart.subtotal</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/msrp_popup.xml b/app/code/Magento/Msrp/view/frontend/layout/msrp_popup.xml
index 387ebce9dff5477b5797b14c9447caaaafd7c2d7..7005448fc08f340f61927a4d47030def77194fbd 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/msrp_popup.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/msrp_popup.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Msrp\Block\Popup" template="Magento_Msrp::popup.phtml" name="product.tooltip">
-            <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog\PositionAfter" name="map.shortcut.buttons"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Msrp\Block\Popup" template="Magento_Msrp::popup.phtml" name="product.tooltip">
+                <block class="Magento\Catalog\Block\ShortcutButtons\InCatalog\PositionAfter" name="map.shortcut.buttons"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/review_product_list.xml b/app/code/Magento/Msrp/view/frontend/layout/review_product_list.xml
index 2d12ad2c42d65c119567e7c64ed20520f52950ac..0e009c250f7b329efc2862c78c40197f87941ced 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/review_product_list.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/review_product_list.xml
@@ -24,6 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="msrp_popup"/>
     <!--<update handle="MAP_price_msrp_item"/>-->
+    <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_configure_type_downloadable.xml b/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
index 875a8e0f5d4873f87a01b8bb953330d8313e8be9..46e14f54c10665214d7df5fc5b5ac3556e2197a4 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.price.link">
-        <arguments>
-            <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-        </arguments>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.price.link">
+            <arguments>
+                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_index.xml b/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_index.xml
index c5bcdcee81f2b9f806313108f0e564fe16030841..d9a47e655d3c77150c64c488dc39c78e7a7aec83 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_index.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/wishlist_index_index.xml
@@ -24,6 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="msrp_popup"/>
     <!--<update handle="MAP_price_msrp_wishlist_item"/>-->
+    <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/wishlist_search_view.xml b/app/code/Magento/Msrp/view/frontend/layout/wishlist_search_view.xml
index c5bcdcee81f2b9f806313108f0e564fe16030841..d9a47e655d3c77150c64c488dc39c78e7a7aec83 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/wishlist_search_view.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/wishlist_search_view.xml
@@ -24,6 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="msrp_popup"/>
     <!--<update handle="MAP_price_msrp_wishlist_item"/>-->
+    <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Msrp/view/frontend/layout/wishlist_shared_index.xml b/app/code/Magento/Msrp/view/frontend/layout/wishlist_shared_index.xml
index c5bcdcee81f2b9f806313108f0e564fe16030841..d9a47e655d3c77150c64c488dc39c78e7a7aec83 100644
--- a/app/code/Magento/Msrp/view/frontend/layout/wishlist_shared_index.xml
+++ b/app/code/Magento/Msrp/view/frontend/layout/wishlist_shared_index.xml
@@ -24,6 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="msrp_popup"/>
     <!--<update handle="MAP_price_msrp_wishlist_item"/>-->
+    <update handle="msrp_popup"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json
index 2afe71ca06bc993466de7d1e26eb09d23c450f66..9fe7e3d1c89a5bc7ac01e500e653b0a82bcb0587 100644
--- a/app/code/Magento/Multishipping/composer.json
+++ b/app/code/Magento/Multishipping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Multishipping/view/frontend/layout/checkout_cart_index.xml
index 03ae94aa6ec0303144e2aebed80c1a67cd978c86..c2fd51334593503e5bf99614814c78d066504a04 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/checkout_cart_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.cart.methods">
-        <block class="Magento\Multishipping\Block\Checkout\Link" name="checkout.cart.methods.multishipping" template="checkout/link.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="checkout.cart.methods">
+            <block class="Magento\Multishipping\Block\Checkout\Link" name="checkout.cart.methods.multishipping" template="checkout/link.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout.xml
index 18c7d65ef502456d8479d381291669f1c48c44d1..e8a3480cf514ad7e326e74011677c5d002197b1a 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Multishipping Checkout" design_abstraction="custom">
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\Multishipping\Block\Checkout\State" name="checkout_state" template="checkout/state.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Multishipping Checkout" design_abstraction="custom">
+    <body>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\Multishipping\Block\Checkout\State" name="checkout_state" template="checkout/state.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editaddress.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editaddress.xml
index d8187323bdd6550ec78bcd7f385970a39bcd7320..2cfbd16f25580ec5afe42d734ca03d440ff54d87 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editaddress.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editaddress.xml
@@ -26,9 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
     <update handle="multishipping_checkout_customer_address"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Edit Address</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Edit Address</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editbilling.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editbilling.xml
index 7be0dc65ed0112ade7eafebe9d44a8e80f4ec562..7656d86bc3530895e473b7909b1988932adbb401 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editbilling.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editbilling.xml
@@ -26,9 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
     <update handle="multishipping_checkout_customer_address"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Change Billing Address</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Change Billing Address</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editshipping.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editshipping.xml
index 6b4e23f0fb9514b687f6a801fa49210d2cf0ec19..b027e6d01f8bace8f72ceafeac4ce9fb656b602f 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editshipping.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_editshipping.xml
@@ -26,9 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
     <update handle="multishipping_checkout_customer_address"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Edit Shipping Address</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Edit Shipping Address</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newbilling.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newbilling.xml
index 1acdd242f1f7d8aae3c954a394de14bd3e201fa9..99f806da4c3d81c7d9be4aeb3e9debb7a96ccfaa 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newbilling.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newbilling.xml
@@ -26,9 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
     <update handle="multishipping_checkout_customer_address"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Create Billing Address</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Create Billing Address</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newshipping.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newshipping.xml
index e8aa583a078b7e2bbf0a4e3885cc89e3ae57646f..94ad8ddd91736fb8d51ee204142014e94d666772 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newshipping.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_newshipping.xml
@@ -26,9 +26,11 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
     <update handle="multishipping_checkout_customer_address"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Create Shipping Address</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Create Shipping Address</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_select.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_select.xml
index b3471c835c5aeeb8672b671c2c2fdbc6dfa68d88..4b66aaeec4ac10b5e8c37f943b0d7315e73990f9 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_select.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_select.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Multishipping Checkout Shipping Address Selection" design_abstraction="custom">
     <update handle="multishipping_checkout"/>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Address\Select" name="checkout_address_select" template="checkout/address/select.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Address\Select" name="checkout_address_select" template="checkout/address/select.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_selectbilling.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_selectbilling.xml
index 479dadbb5b210e79e8b8be3182b7246359355b74..3306df8d9ed142f59ac5735a52fbc6c38f2876df 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_selectbilling.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_address_selectbilling.xml
@@ -25,12 +25,14 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument name="label" translate="true" xsi:type="string">Change Billing Address</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Address\Select" name="checkout_address_select" template="checkout/address/select.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument name="label" translate="true" xsi:type="string">Change Billing Address</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Address\Select" name="checkout_address_select" template="checkout/address/select.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_addresses.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_addresses.xml
index c8b2aab23f1364205cf6c44d088deb0b5bbd3c0b..d37a985de67fc80455baadf925d633d1824cbdb5 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_addresses.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_addresses.xml
@@ -25,22 +25,24 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <update handle="checkout_cart_item_renderers" />
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Ship to Multiple Addresses</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Addresses" name="checkout_addresses" template="checkout/addresses.phtml" cacheable="false">
-            <arguments>
-                <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
-            </arguments>
-            <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list" />
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Template" name="multishipping_checkout_addresses_page_head_components" template="Magento_Multishipping::js/components.phtml"/>
-    </referenceBlock>
+    <update handle="checkout_cart_item_renderers"/>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Ship to Multiple Addresses</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Addresses" name="checkout_addresses" template="checkout/addresses.phtml" cacheable="false">
+                <arguments>
+                    <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
+                </arguments>
+                <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
+            </block>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Template" name="multishipping_checkout_addresses_page_head_components" template="Magento_Multishipping::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_billing.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_billing.xml
index c8758d5e7fe215744dd8f757e2cc2275c0aaee07..ce46b58c92a8f000c74e9f9a4adf30fffda6cac9 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_billing.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_billing.xml
@@ -25,18 +25,20 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Billing Information</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Billing" name="checkout_billing" template="checkout/billing.phtml" cacheable="false">
-            <container name="payment_methods_before" label="Payment Methods Before"/>
-            <container name="payment_methods_after" label="Payment Methods After"/>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="multishipping_checkout_billing_page_head_components" template="Magento_Checkout::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Billing Information</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Billing" name="checkout_billing" template="checkout/billing.phtml" cacheable="false">
+                <container name="payment_methods_before" label="Payment Methods Before"/>
+                <container name="payment_methods_after" label="Payment Methods After"/>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="multishipping_checkout_billing_page_head_components" template="Magento_Checkout::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_customer_address.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_customer_address.xml
index 62246576f0ed0b4fbadeb2b0e607852dd1d57dc1..5e02b419d081ac9148437fc4e3d3136cdd80b90a 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_customer_address.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_customer_address.xml
@@ -24,8 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Multishipping Checkout Customer Address Edit Form" design_abstraction="custom">
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Address\Edit" name="customer_address_edit" template="address/edit.phtml" cacheable="false"/>
-    </referenceContainer>
     <update handle="customer_form_template_handle"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Address\Edit" name="customer_address_edit" template="address/edit.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_login.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_login.xml
index 37a53f1a41b130406446f1a1e1ef69b23787995f..47196c16860a51a65e168a5d7e64b32c85409751 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_login.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_login.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account_login"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_overview.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_overview.xml
index ffb18b54235561ada59d94df8c65ff1143514f5d..e21a4468041b764ea849aa0c000106bd5c9870c8 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_overview.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_overview.xml
@@ -25,28 +25,30 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <update handle="checkout_cart_item_renderers" />
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="label" xsi:type="string">Review Order</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Overview" name="checkout_overview" template="checkout/overview.phtml">
-            <arguments>
-                <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
-                <argument name="row_renderer_template" xsi:type="string">Magento_Multishipping::checkout/overview/item.phtml</argument>
-            </arguments>
-            <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list" />
-            <block class="Magento\Multishipping\Block\Checkout\Payment\Info" name="payment_info">
-                <action method="setInfoTemplate">
-                    <argument name="method" xsi:type="string"/>
-                    <argument name="template" xsi:type="string"/>
-                </action>
+    <update handle="checkout_cart_item_renderers"/>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="label" xsi:type="string">Review Order</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Overview" name="checkout_overview" template="checkout/overview.phtml">
+                <arguments>
+                    <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
+                    <argument name="row_renderer_template" xsi:type="string">Magento_Multishipping::checkout/overview/item.phtml</argument>
+                </arguments>
+                <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
+                <block class="Magento\Multishipping\Block\Checkout\Payment\Info" name="payment_info">
+                    <action method="setInfoTemplate">
+                        <argument name="method" xsi:type="string"/>
+                        <argument name="template" xsi:type="string"/>
+                    </action>
+                </block>
+                <block class="Magento\Checkout\Block\Cart\Totals" name="totals"/>
+                <container name="checkout.multishipping.overview.items.after" as="items_after" label="Overview Items After"/>
             </block>
-            <block class="Magento\Checkout\Block\Cart\Totals" name="totals"/>
-            <container name="checkout.multishipping.overview.items.after" as="items_after" label="Overview Items After"/>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_register.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_register.xml
index a214c13248a0459baa4f84a878374fe20b7d5f8a..f7f42ac062bb73afd84327ba4b799412df9d7671 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_register.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_register.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account_create"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_shipping.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_shipping.xml
index 766b3c130db75b8925a7fdb759537b638fd78b56..e6f33e72815d3d7ace3ea166e908ea466d5f57f6 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_shipping.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_shipping.xml
@@ -25,25 +25,27 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <update handle="checkout_cart_item_renderers" />
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Select Shipping Method</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Shipping" name="checkout_shipping" template="checkout/shipping.phtml" cacheable="false">
-            <arguments>
-                <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
-            </arguments>
-            <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
-            <block class="Magento\Multishipping\Block\Checkout\Billing\Items" name="checkout_billing_items" template="Magento_Multishipping::checkout/billing/items.phtml" cacheable="false">
+    <update handle="checkout_cart_item_renderers"/>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Select Shipping Method</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Shipping" name="checkout_shipping" template="checkout/shipping.phtml" cacheable="false">
                 <arguments>
                     <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
-                    <argument name="renderer_list_name" xsi:type="string">checkout.cart.item.renderers</argument>
                 </arguments>
+                <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
+                <block class="Magento\Multishipping\Block\Checkout\Billing\Items" name="checkout_billing_items" template="Magento_Multishipping::checkout/billing/items.phtml" cacheable="false">
+                    <arguments>
+                        <argument name="renderer_template" xsi:type="string">Magento_Multishipping::checkout/item/default.phtml</argument>
+                        <argument name="renderer_list_name" xsi:type="string">checkout.cart.item.renderers</argument>
+                    </arguments>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_success.xml b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_success.xml
index de3b3eefb5b211b286dcbad71402ff4f3f7c7988..81708f4c40c2667901aa1e5d49682533c60e6a83 100644
--- a/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_success.xml
+++ b/app/code/Magento/Multishipping/view/frontend/layout/multishipping_checkout_success.xml
@@ -25,12 +25,14 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="multishipping_checkout"/>
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument translate="true" name="title" xsi:type="string">Your order has been received.</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Multishipping\Block\Checkout\Success" name="checkout_success" template="checkout/success.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument translate="true" name="title" xsi:type="string">Your order has been received.</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Multishipping\Block\Checkout\Success" name="checkout_success" template="checkout/success.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
index a794983aa282290d083c828eb19726a4d7a4868c..2aea13745e908e6e98ffa3c922d151128411b76c 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
@@ -37,13 +37,13 @@
     <input type="hidden" name="new_address" value="0" id="add_new_address_flag"/>
     <div class="table-wrapper">
         <table class="items data table" id="multiship-addresses-table">
-            <caption class="table caption"><?php echo __('Please select a shipping address for applicable items.') ?></caption>
+            <caption class="table-caption"><?php echo __('Please select a shipping address for applicable items.') ?></caption>
             <thead>
             <tr>
-                <th class="col product"><?php echo __('Product') ?></th>
-                <th class="col qty"><?php echo __('Qty') ?></th>
-                <th class="col address"><?php echo __('Send To') ?></th>
-                <th class="col actions">&nbsp;</th>
+                <th class="col product" scope="col"><?php echo __('Product') ?></th>
+                <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
+                <th class="col address" scope="col"><?php echo __('Send To') ?></th>
+                <th class="col actions" scope="col">&nbsp;</th>
             </tr>
             </thead>
             <tbody>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing/items.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing/items.phtml
index 4a0c41bae0b87db48a135de608e9877650fd2c23..e0a8bbe6a556bd1d26aef949ecd521ac9d3d21a3 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing/items.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing/items.phtml
@@ -32,10 +32,11 @@
         <p><?php echo __('Shipping is not applicable.') ?></p>
         <div class="table-wrapper">
             <table class="items data table" id="unavailable-shipping-table">
+                <caption class="table-caption"><?php echo __('Other items in your order') ?></caption>
                 <thead>
                     <tr>
-                        <th class="col item"><?php echo __('Product Name') ?></th>
-                        <th class="col qty"><?php echo __('Qty') ?></th>
+                        <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
+                        <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
                     </tr>
                 </thead>
                 <tbody>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/item/default.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/item/default.phtml
index 25a38acf6b4c5cb97c82c6ebad4e7cca9c937335..e0b37533d9660983fc38704c6d589cf0d27a3000 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/item/default.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/item/default.phtml
@@ -22,26 +22,24 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 ?>
-<div class="product details product-item-details">
-    <strong class="product name product-item-name"><a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->escapeHtml($this->getProductName()) ?></a></strong>
-    <?php if ($_options = $this->getOptionList()): ?>
-        <dl class="item-options">
-            <?php foreach ($_options as $_option) : ?>
-                <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
-                <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
-                <dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="tooltip wrapper"<?php endif; ?>>
-                    <?php echo $_formatedOptionValue['value'] ?>
-                    <?php if (isset($_formatedOptionValue['full_view'])): ?>
-                        <dl class="item options tooltip content">
-                            <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
-                            <dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
-                        </dl>
-                    <?php endif; ?>
-                </dd>
-            <?php endforeach; ?>
-        </dl>
-    <?php endif; ?>
-    <?php if ($addtInfoBlock = $this->getProductAdditionalInformationBlock()): ?>
-        <?php echo $addtInfoBlock->setItem($this->getItem())->toHtml() ?>
-    <?php endif; ?>
-</div>
+<strong class="product name product-item-name"><a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->escapeHtml($this->getProductName()) ?></a></strong>
+<?php if ($_options = $this->getOptionList()): ?>
+    <dl class="item-options">
+        <?php foreach ($_options as $_option) : ?>
+            <?php $_formatedOptionValue = $this->getFormatedOptionValue($_option) ?>
+            <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
+            <dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="tooltip wrapper"<?php endif; ?>>
+                <?php echo $_formatedOptionValue['value'] ?>
+                <?php if (isset($_formatedOptionValue['full_view'])): ?>
+                    <dl class="item options tooltip content">
+                        <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
+                        <dd><?php echo $_formatedOptionValue['full_view'] ?></dd>
+                    </dl>
+                <?php endif; ?>
+            </dd>
+        <?php endforeach; ?>
+    </dl>
+<?php endif; ?>
+<?php if ($addtInfoBlock = $this->getProductAdditionalInformationBlock()): ?>
+    <?php echo $addtInfoBlock->setItem($this->getItem())->toHtml() ?>
+<?php endif; ?>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/overview.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/overview.phtml
index 49f433cf6e56239b61052fc05675b5e50dc8cdc2..4cfcacd32205449c8c083db1869818ba9d069808 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/overview.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/overview.phtml
@@ -98,15 +98,16 @@
                 <div class="box box-items">
                     <div class="box-content">
                         <div class="table-wrapper">
-                            <table class="items data table order review" id="overview-table-<?php echo $_address->getId() ?>">
+                            <table class="items data table table-order-review" id="overview-table-<?php echo $_address->getId() ?>">
+                                <caption class="table-caption"><?php echo __('Order Review') ?></caption>
                                 <thead>
                                 <tr>
-                                    <th class="col item"><?php echo __('Item') ?>
+                                    <th class="col item" scope="col"><?php echo __('Item') ?>
                                         <a href="<?php echo $this->getAddressesEditUrl() ?>" class="action edit"><span><?php echo __('Edit') ?></span></a>
                                     </th>
-                                    <th class="col price"><?php echo __('Price') ?></th>
-                                    <th class="col qty"><?php echo __('Qty') ?></th>
-                                    <th class="col subtotal"><?php echo __('Subtotal') ?></th>
+                                    <th class="col price" scope="col"><?php echo __('Price') ?></th>
+                                    <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
+                                    <th class="col subtotal" scope="col"><?php echo __('Subtotal') ?></th>
                                 </tr>
                                 </thead>
                                 <tfoot>
@@ -135,13 +136,14 @@
             </strong>
             <?php $mergedCells = ($this->helper('Magento\Tax\Helper\Data')->displayCartBothPrices() ? 2 : 1); ?>
             <div class="table-wrapper">
-                <table class="items data table order review" id="virtual-overview-table">
+                <table class="items data table table-order-review" id="virtual-overview-table">
+                    <caption class="table-caption"><?php echo __('Items') ?></caption>
                     <thead>
                         <tr>
-                            <th class="col item"><?php echo __('Product Name') ?></th>
-                            <th class="col price"><?php echo __('Price') ?></th>
-                            <th class="col qty"><?php echo __('Qty') ?></th>
-                            <th class="col subtotal"><?php echo __('Subtotal') ?></th>
+                            <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
+                            <th class="col price" scope="col"><?php echo __('Price') ?></th>
+                            <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
+                            <th class="col subtotal" scope="col"><?php echo __('Subtotal') ?></th>
                         </tr>
                     </thead>
                     <tfoot>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
index 32f81f575cc28a813ad1ecc506d65702ab1139d1..fc03ee38027f2900279bc6f17098829d8a62451a 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
@@ -97,11 +97,11 @@
                 <div class="box-content">
                     <div class="table-wrapper">
                         <table class="items data table" id="shipping-table-<?php echo $_address->getId() ?>">
-                            <caption class="table caption"><?php echo __('Items') ?></caption>
+                            <caption class="table-caption"><?php echo __('Items') ?></caption>
                             <thead>
                             <tr>
-                                <th class="col item"><?php echo __('Product Name') ?></th>
-                                <th class="col qty"><?php echo __('Qty') ?></th>
+                                <th class="col item" scope="col"><?php echo __('Product Name') ?></th>
+                                <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
                             </tr>
                             </thead>
                             <tbody>
diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json
index 91cd02eaba6e63927dc48b333d43d5eb8b9a39c3..33f0cdcbb30c016c62ae546ccf2952a807b6fe13 100644
--- a/app/code/Magento/Newsletter/composer.json
+++ b/app/code/Magento/Newsletter/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-email": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-email": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_block.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_block.xml
index 40c0719855ca2b5149e56a133bdb92a9a7a7cc52..235afc7eb2189290349bb2f408489ed8dfc82ca5 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_block.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_block.xml
@@ -24,82 +24,84 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.newsletter.problem.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.newslettrer.problem.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">problemGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Grid\Collection</argument>
-                <argument name="message_block_visibility" xsi:type="string">true</argument>
-                <argument name="use_ajax" xsi:type="string">true</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.problem.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.newsletter.problem.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.newslettrer.problem.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">problemGrid</argument>
-                    <argument name="empty_text" xsi:type="string" translate="true">We found no problems.</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Grid\Collection</argument>
+                    <argument name="message_block_visibility" xsi:type="string">true</argument>
+                    <argument name="use_ajax" xsi:type="string">true</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="checkbox">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.problem.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="filter" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Problem\Grid\Filter\Checkbox</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Problem\Grid\Renderer\Checkbox</argument>
-                        <argument name="header_css_class" xsi:type="string">col-select</argument>
-                        <argument name="column_css_class" xsi:type="string">col-select</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">problem_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscriber">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Subscriber</argument>
-                        <argument name="format" xsi:type="string">#$subscriber_id $customer_name ($subscriber_email)</argument>
-                        <argument name="index" xsi:type="string">subscriber_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-subscriber col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-subscriber col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue_start">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Queue Start Date</argument>
-                        <argument name="index" xsi:type="string">queue_start_at</argument>
-                        <argument name="gmtoffset" xsi:type="string">true</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="header_css_class" xsi:type="string">col-start col-date</argument>
-                        <argument name="column_css_class" xsi:type="string">col-start col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Queue Subject</argument>
-                        <argument name="index" xsi:type="string">template_subject</argument>
-                        <argument name="header_css_class" xsi:type="string">col-subject</argument>
-                        <argument name="column_css_class" xsi:type="string">col-subject</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_code">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Error Code</argument>
-                        <argument name="index" xsi:type="string">problem_error_code</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="header_css_class" xsi:type="string">col-error-code</argument>
-                        <argument name="column_css_class" xsi:type="string">col-error-code</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_text">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Error Text</argument>
-                        <argument name="index" xsi:type="string">problem_error_text</argument>
-                        <argument name="header_css_class" xsi:type="string">col-error</argument>
-                        <argument name="column_css_class" xsi:type="string">col-error</argument>
+                        <argument name="id" xsi:type="string">problemGrid</argument>
+                        <argument name="empty_text" xsi:type="string" translate="true">We found no problems.</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="checkbox">
+                        <arguments>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="filter" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Problem\Grid\Filter\Checkbox</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Problem\Grid\Renderer\Checkbox</argument>
+                            <argument name="header_css_class" xsi:type="string">col-select</argument>
+                            <argument name="column_css_class" xsi:type="string">col-select</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">problem_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscriber">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Subscriber</argument>
+                            <argument name="format" xsi:type="string">#$subscriber_id $customer_name ($subscriber_email)</argument>
+                            <argument name="index" xsi:type="string">subscriber_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-subscriber col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-subscriber col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue_start">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Queue Start Date</argument>
+                            <argument name="index" xsi:type="string">queue_start_at</argument>
+                            <argument name="gmtoffset" xsi:type="string">true</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="header_css_class" xsi:type="string">col-start col-date</argument>
+                            <argument name="column_css_class" xsi:type="string">col-start col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Queue Subject</argument>
+                            <argument name="index" xsi:type="string">template_subject</argument>
+                            <argument name="header_css_class" xsi:type="string">col-subject</argument>
+                            <argument name="column_css_class" xsi:type="string">col-subject</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Error Code</argument>
+                            <argument name="index" xsi:type="string">problem_error_code</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="header_css_class" xsi:type="string">col-error-code</argument>
+                            <argument name="column_css_class" xsi:type="string">col-error-code</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="problem_text">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Error Text</argument>
+                            <argument name="index" xsi:type="string">problem_error_text</argument>
+                            <argument name="header_css_class" xsi:type="string">col-error</argument>
+                            <argument name="column_css_class" xsi:type="string">col-error</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_index.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_index.xml
index 2848a297bff886b0158f43c05f5cc7243dcc4b2e..9bfc79441e808661e50a9d4346d553202636b4a8 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_index.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_problem_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="newsletter_problem_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Newsletter\Block\Adminhtml\Problem" name="adminhtml.newsletter.problem.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Newsletter\Block\Adminhtml\Problem" name="adminhtml.newsletter.problem.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml
index a1e2c94672271e86f518dd2db7c0be8b57940a8d..3a0481969fd07b526ddc2d658760126a61281603 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="editor"/>
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <link src="jquery/fileUploader/bootstrap.js"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Newsletter\Block\Adminhtml\Queue\Edit" name="queue_edit" template="queue/edit.phtml"/>
-    </referenceContainer>
+    <update handle="editor"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Newsletter\Block\Adminhtml\Queue\Edit" name="queue_edit" template="queue/edit.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_grid_block.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_grid_block.xml
index 54aacfec6e1156eb70a1622b248eef4da57aa8bf..1c90cb174f6182eec78534b5dc84c7a777221899 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_grid_block.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_grid_block.xml
@@ -24,103 +24,105 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.newsletter.queue.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.newsletter.queue.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">queueGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Queue\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">start_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newsletter.queue.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.newsletter.queue.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.newsletter.queue.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">queueGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Queue\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">start_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newsletter.queue.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">queue_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="start_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Queue Start</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">queue_start_at</argument>
-                        <argument name="gmtoffset" xsi:type="string">1</argument>
-                        <argument name="default" xsi:type="string"> ---- </argument>
-                        <argument name="header_css_class" xsi:type="string">col-start</argument>
-                        <argument name="column_css_class" xsi:type="string">col-start</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="finish_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Queue End</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">queue_finish_at</argument>
-                        <argument name="gmtoffset" xsi:type="string">1</argument>
-                        <argument name="default" xsi:type="string"> ---- </argument>
-                        <argument name="header_css_class" xsi:type="string">col-finish</argument>
-                        <argument name="column_css_class" xsi:type="string">col-finish</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="newsletter_subject">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Subject</argument>
-                        <argument name="index" xsi:type="string">newsletter_subject</argument>
-                        <argument name="header_css_class" xsi:type="string">col-subject</argument>
-                        <argument name="column_css_class" xsi:type="string">col-subject</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="index" xsi:type="string">queue_status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Newsletter\Model\Queue\Options\Status"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscribers_sent">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Processed</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">subscribers_sent</argument>
-                        <argument name="header_css_class" xsi:type="string">col-processed</argument>
-                        <argument name="column_css_class" xsi:type="string">col-processed</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscribers_total">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Recipients</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">subscribers_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-recipients</argument>
-                        <argument name="column_css_class" xsi:type="string">col-recipients</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="no_link" xsi:type="string">1</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Queue\Grid\Renderer\Action</argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="queue_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">queue_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="start_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Queue Start</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">queue_start_at</argument>
+                            <argument name="gmtoffset" xsi:type="string">1</argument>
+                            <argument name="default" xsi:type="string"> ---- </argument>
+                            <argument name="header_css_class" xsi:type="string">col-start</argument>
+                            <argument name="column_css_class" xsi:type="string">col-start</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="finish_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Queue End</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">queue_finish_at</argument>
+                            <argument name="gmtoffset" xsi:type="string">1</argument>
+                            <argument name="default" xsi:type="string"> ---- </argument>
+                            <argument name="header_css_class" xsi:type="string">col-finish</argument>
+                            <argument name="column_css_class" xsi:type="string">col-finish</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="newsletter_subject">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Subject</argument>
+                            <argument name="index" xsi:type="string">newsletter_subject</argument>
+                            <argument name="header_css_class" xsi:type="string">col-subject</argument>
+                            <argument name="column_css_class" xsi:type="string">col-subject</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="index" xsi:type="string">queue_status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Newsletter\Model\Queue\Options\Status"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscribers_sent">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Processed</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">subscribers_sent</argument>
+                            <argument name="header_css_class" xsi:type="string">col-processed</argument>
+                            <argument name="column_css_class" xsi:type="string">col-processed</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscribers_total">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Recipients</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">subscribers_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-recipients</argument>
+                            <argument name="column_css_class" xsi:type="string">col-recipients</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="no_link" xsi:type="string">1</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Newsletter\Block\Adminhtml\Queue\Grid\Renderer\Action</argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_index.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_index.xml
index f3788862ccd7e5d7572dbaea1b80fe22ee60adc7..d0a101eabf959df0d5f000cb34a4081080b20657 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_index.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="newsletter_queue_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Template" template="Magento_Newsletter::queue/list.phtml" name="adminhtml.newsletter.queue.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Template" template="Magento_Newsletter::queue/list.phtml" name="adminhtml.newsletter.queue.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_preview.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_preview.xml
index 1e069ffb69ec6e93748a17022a86b02043bb92ff..92c69ce2bbd8d450914b70946ede02b3f031fa8b 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_preview.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_preview.xml
@@ -23,16 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="id" value="html-body"/>
         <attribute name="class" value="preview-window"/>
+        <remove name="backend.page"/>
+        <referenceContainer name="root">
+            <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Newsletter::preview/iframeswitcher.phtml">
+                <block class="Magento\Newsletter\Block\Adminhtml\Queue\Preview\Form" name="preview_form"/>
+                <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/>
+            </block>
+        </referenceContainer>
     </body>
-    <remove name="backend.page"/>
-    <referenceContainer name="root">
-        <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Newsletter::preview/iframeswitcher.phtml">
-            <block class="Magento\Newsletter\Block\Adminhtml\Queue\Preview\Form" name="preview_form"/>
-            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml" />
-        </block>
-    </referenceContainer>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml
index 2682a0d9d449fc70c04260ed5b6c1660fcd7f9bf..f11023b9d44681024e0f7957d45961a986934ab4 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml
@@ -24,161 +24,163 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.newsletter.subscriber.container">
-        <block class="Magento\Newsletter\Block\Adminhtml\Subscriber\Grid" name="adminhtml.newslettrer.subscriber.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">subscriberGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Subscriber\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">subscriber_id</argument>
-                <argument name="default_dir" xsi:type="string">desc</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.newslettrer.subscriber.grid.massaction" as="grid.massaction">
+    <body>
+        <referenceBlock name="adminhtml.newsletter.subscriber.container">
+            <block class="Magento\Newsletter\Block\Adminhtml\Subscriber\Grid" name="adminhtml.newslettrer.subscriber.grid" as="grid">
                 <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">subscriber_id</argument>
-                    <argument name="form_field_name" xsi:type="string">subscriber</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="unsubscribe" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Unsubscribe</item>
-                            <item name="url" xsi:type="string">*/*/massUnsubscribe</item>
-                        </item>
-                        <item name="delete" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Delete</item>
-                            <item name="url" xsi:type="string">*/*/massDelete</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">subscriberGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\Resource\Subscriber\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">subscriber_id</argument>
+                    <argument name="default_dir" xsi:type="string">desc</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.newslettrer.subscriber.grid.export" as="grid.export">
-                <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportXml</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.subscriber.grid.columnSet" as="grid.columnSet">
-                <arguments>
-                    <argument name="id" xsi:type="string">problemGrid</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscriber_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">subscriber_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.newslettrer.subscriber.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Email</argument>
-                        <argument name="index" xsi:type="string">subscriber_email</argument>
-                        <argument name="header_css_class" xsi:type="string">col-email</argument>
-                        <argument name="column_css_class" xsi:type="string">ccol-email</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Type</argument>
-                        <argument name="index" xsi:type="string">type</argument>
-                        <argument name="type" xsi:type="string">options</argument>
+                        <argument name="massaction_id_field" xsi:type="string">subscriber_id</argument>
+                        <argument name="form_field_name" xsi:type="string">subscriber</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
                         <argument name="options" xsi:type="array">
-                            <item name="guest" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Guest</item>
+                            <item name="unsubscribe" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Unsubscribe</item>
+                                <item name="url" xsi:type="string">*/*/massUnsubscribe</item>
                             </item>
-                            <item name="customer" xsi:type="array">
-                                <item name="value" xsi:type="string">2</item>
-                                <item name="label" xsi:type="string" translate="true">Customer</item>
+                            <item name="delete" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Delete</item>
+                                <item name="url" xsi:type="string">*/*/massDelete</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-type</argument>
-                        <argument name="column_css_class" xsi:type="string">col-type</argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.newslettrer.subscriber.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Customer First Name</argument>
-                        <argument name="index" xsi:type="string">customer_firstname</argument>
-                        <argument name="default" xsi:type="string">----</argument>
-                        <argument name="header_css_class" xsi:type="string">col-first-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-first-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Customer Last Name</argument>
-                        <argument name="index" xsi:type="string">customer_lastname</argument>
-                        <argument name="default" xsi:type="string">----</argument>
-                        <argument name="header_css_class" xsi:type="string">col-last-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-last-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="index" xsi:type="string">subscriber_status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="array">
-                            <item name="status_not_active" xsi:type="array">
-                                <item name="value" xsi:type="string">2</item>
-                                <item name="label" xsi:type="string" translate="true">Not Activated</item>
-                            </item>
-                            <item name="status_subscribed" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Subscribed</item>
-                            </item>
-                            <item name="status_unsubscribed" xsi:type="array">
-                                <item name="value" xsi:type="string">3</item>
-                                <item name="label" xsi:type="string" translate="true">Unsubscribed</item>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
                             </item>
-                            <item name="status_unconfirmed" xsi:type="array">
-                                <item name="value" xsi:type="string">4</item>
-                                <item name="label" xsi:type="string" translate="true">Unconfirmed</item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportXml</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="website">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Web Site</argument>
-                        <argument name="index" xsi:type="string">website_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
-                        <argument name="header_css_class" xsi:type="string">col-website</argument>
-                        <argument name="column_css_class" xsi:type="string">col-website</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="group">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store</argument>
-                        <argument name="index" xsi:type="string">group_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\GroupOptionHash"/>
-                        <argument name="header_css_class" xsi:type="string">col-store</argument>
-                        <argument name="column_css_class" xsi:type="string">col-store</argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.subscriber.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store View</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\StoreOptionHash"/>
-                        <argument name="header_css_class" xsi:type="string">col-store-view</argument>
-                        <argument name="column_css_class" xsi:type="string">col-store-view</argument>
+                        <argument name="id" xsi:type="string">problemGrid</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="subscriber_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">subscriber_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Email</argument>
+                            <argument name="index" xsi:type="string">subscriber_email</argument>
+                            <argument name="header_css_class" xsi:type="string">col-email</argument>
+                            <argument name="column_css_class" xsi:type="string">ccol-email</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Type</argument>
+                            <argument name="index" xsi:type="string">type</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="guest" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Guest</item>
+                                </item>
+                                <item name="customer" xsi:type="array">
+                                    <item name="value" xsi:type="string">2</item>
+                                    <item name="label" xsi:type="string" translate="true">Customer</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-type</argument>
+                            <argument name="column_css_class" xsi:type="string">col-type</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Customer First Name</argument>
+                            <argument name="index" xsi:type="string">customer_firstname</argument>
+                            <argument name="default" xsi:type="string">----</argument>
+                            <argument name="header_css_class" xsi:type="string">col-first-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-first-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Customer Last Name</argument>
+                            <argument name="index" xsi:type="string">customer_lastname</argument>
+                            <argument name="default" xsi:type="string">----</argument>
+                            <argument name="header_css_class" xsi:type="string">col-last-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-last-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="index" xsi:type="string">subscriber_status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="status_not_active" xsi:type="array">
+                                    <item name="value" xsi:type="string">2</item>
+                                    <item name="label" xsi:type="string" translate="true">Not Activated</item>
+                                </item>
+                                <item name="status_subscribed" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Subscribed</item>
+                                </item>
+                                <item name="status_unsubscribed" xsi:type="array">
+                                    <item name="value" xsi:type="string">3</item>
+                                    <item name="label" xsi:type="string" translate="true">Unsubscribed</item>
+                                </item>
+                                <item name="status_unconfirmed" xsi:type="array">
+                                    <item name="value" xsi:type="string">4</item>
+                                    <item name="label" xsi:type="string" translate="true">Unconfirmed</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="website">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Web Site</argument>
+                            <argument name="index" xsi:type="string">website_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
+                            <argument name="header_css_class" xsi:type="string">col-website</argument>
+                            <argument name="column_css_class" xsi:type="string">col-website</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="group">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store</argument>
+                            <argument name="index" xsi:type="string">group_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\GroupOptionHash"/>
+                            <argument name="header_css_class" xsi:type="string">col-store</argument>
+                            <argument name="column_css_class" xsi:type="string">col-store</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store View</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\StoreOptionHash"/>
+                            <argument name="header_css_class" xsi:type="string">col-store-view</argument>
+                            <argument name="column_css_class" xsi:type="string">col-store-view</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportcsv.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportcsv.xml
index 336a9fd0439cdd0bf95035b4982b9de2e0036e9c..0b7df028d2bf858dfc5b1b5ddb22e174c4721d71 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportcsv.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="newsletter_subscriber_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.newsletter.subscriber.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.newsletter.subscriber.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportxml.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportxml.xml
index 336a9fd0439cdd0bf95035b4982b9de2e0036e9c..0b7df028d2bf858dfc5b1b5ddb22e174c4721d71 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportxml.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_exportxml.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="newsletter_subscriber_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.newsletter.subscriber.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.newsletter.subscriber.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_index.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_index.xml
index 0dc3e9547480815707849a3f82b70175c999e1ee..d1f92978c8fd48546ca085ee047f97373ebfb1d3 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_index.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="newsletter_subscriber_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Newsletter\Block\Adminhtml\Subscriber" name="adminhtml.newsletter.subscriber.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Newsletter\Block\Adminhtml\Subscriber" name="adminhtml.newsletter.subscriber.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml
index b3f1a249f4b70efa8ad3556ad7181b1ac3ddde6b..ea25023bc3f01faa561c039c7577477478b0ca21 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="editor"/>
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <link src="jquery/fileUploader/bootstrap.js"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Newsletter\Block\Adminhtml\Template\Edit" name="template_edit" template="template/edit.phtml"/>
-    </referenceContainer>
+    <update handle="editor"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Newsletter\Block\Adminhtml\Template\Edit" name="template_edit" template="template/edit.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml
index 1e069ffb69ec6e93748a17022a86b02043bb92ff..92c69ce2bbd8d450914b70946ede02b3f031fa8b 100644
--- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml
+++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml
@@ -23,16 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="id" value="html-body"/>
         <attribute name="class" value="preview-window"/>
+        <remove name="backend.page"/>
+        <referenceContainer name="root">
+            <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Newsletter::preview/iframeswitcher.phtml">
+                <block class="Magento\Newsletter\Block\Adminhtml\Queue\Preview\Form" name="preview_form"/>
+                <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/>
+            </block>
+        </referenceContainer>
     </body>
-    <remove name="backend.page"/>
-    <referenceContainer name="root">
-        <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Newsletter::preview/iframeswitcher.phtml">
-            <block class="Magento\Newsletter\Block\Adminhtml\Queue\Preview\Form" name="preview_form"/>
-            <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml" />
-        </block>
-    </referenceContainer>
 </page>
diff --git a/app/code/Magento/Newsletter/view/frontend/layout/customer_account.xml b/app/code/Magento/Newsletter/view/frontend/layout/customer_account.xml
index 4d6c92e79fa5a0dd083c970678342e99108b3c63..3ce8d1de58c7457992fb1cd078b3169d60b15c4a 100644
--- a/app/code/Magento/Newsletter/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Newsletter/view/frontend/layout/customer_account.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-newsletter-subscriptions-link">
-            <arguments>
-                <argument name="path" xsi:type="string">newsletter/manage</argument>
-                <argument name="label" xsi:type="string">Newsletter Subscriptions</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
-    <remove name="newsletter_subscription"/>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-newsletter-subscriptions-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">newsletter/manage</argument>
+                    <argument name="label" xsi:type="string">Newsletter Subscriptions</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <remove name="newsletter_subscription"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/frontend/layout/default.xml b/app/code/Magento/Newsletter/view/frontend/layout/default.xml
index 445bc811daa1067a04f4884168d676fefc6367d2..c353dafb57fe665b6228fc87daba46d1a59453ca 100644
--- a/app/code/Magento/Newsletter/view/frontend/layout/default.xml
+++ b/app/code/Magento/Newsletter/view/frontend/layout/default.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="newsletter_head_components" template="Magento_Newsletter::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="footer">
-        <block class="Magento\Newsletter\Block\Subscribe" name="form.subscribe" as="subscribe" before="-" template="subscribe.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="newsletter_head_components" template="Magento_Newsletter::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="footer">
+            <block class="Magento\Newsletter\Block\Subscribe" name="form.subscribe" as="subscribe" before="-" template="subscribe.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Newsletter/view/frontend/layout/newsletter_manage_index.xml b/app/code/Magento/Newsletter/view/frontend/layout/newsletter_manage_index.xml
index 1a7095f9563fefa2811c2090949a49e4be888014..4d6998dec8bf3500717a85611bf0bed9fbf90ae6 100644
--- a/app/code/Magento/Newsletter/view/frontend/layout/newsletter_manage_index.xml
+++ b/app/code/Magento/Newsletter/view/frontend/layout/newsletter_manage_index.xml
@@ -25,9 +25,11 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Customer\Block\Newsletter" name="customer_newsletter">
-            <container name="customer.newsletter.form.before" as="form_before" label="Newsletter Subscription Form Before" htmlTag="div" htmlClass="rewards"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Customer\Block\Newsletter" name="customer_newsletter">
+                <container name="customer.newsletter.form.before" as="form_before" label="Newsletter Subscription Form Before" htmlTag="div" htmlClass="rewards"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/OfflinePayments/README.md b/app/code/Magento/OfflinePayments/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2fe56f4276ea8a6793780013d03badcc88941a8f
--- /dev/null
+++ b/app/code/Magento/OfflinePayments/README.md
@@ -0,0 +1,5 @@
+The Magento_OfflinePayments module implements the payment methods which do not require interaction with a payment gateway (so called offline methods). These methods are the following:
+*Bank transfer
+*Cash on delivery
+*Check / Money Order
+*Purchase order
diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json
index 1296d8eb4dbbe3efe20ddb67128a1aa9a83d3dc0..3c2931a9f975ac6af9b44ac37157e07aee26050e 100644
--- a/app/code/Magento/OfflinePayments/composer.json
+++ b/app/code/Magento/OfflinePayments/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/OfflineShipping/README.md b/app/code/Magento/OfflineShipping/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..561ad8692c2652273ca782b06fa815f520818d95
--- /dev/null
+++ b/app/code/Magento/OfflineShipping/README.md
@@ -0,0 +1,6 @@
+The Magento_OfflineShipping module implements the shipping methods which do not involve a direct interaction with shipping carriers, so called offline shipping methods. Namely, the following:
+*Free Shipping
+*Flat Rate
+*Table Rates
+*Store Pickup
+
diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json
index 7e76bd9cad1a1a538137b42a374ab0ad04445c63..495d293b7df2a5e50865fe694685bb3930b85866 100644
--- a/app/code/Magento/OfflineShipping/composer.json
+++ b/app/code/Magento/OfflineShipping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-sales-rule": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-sales-rule": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ogone/README.md b/app/code/Magento/Ogone/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8bfa7fde90c0fe11bb0a71d0538dcc3657466702
--- /dev/null
+++ b/app/code/Magento/Ogone/README.md
@@ -0,0 +1 @@
+The Magento_Ogone module implements the integration with the Ogone payment service provider.
diff --git a/app/code/Magento/Ogone/composer.json b/app/code/Magento/Ogone/composer.json
index 4c0e0a5e85fa33203bed3df76b5972f506ec4444..c7f1e983301be6a0b35cc5c5cdebec65d5ff03da 100644
--- a/app/code/Magento/Ogone/composer.json
+++ b/app/code/Magento/Ogone/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ogone/view/frontend/layout/ogone_api_paypage.xml b/app/code/Magento/Ogone/view/frontend/layout/ogone_api_paypage.xml
index c39d0a8e4063becb64cfc36ea71d6b5c076f6ecd..dedc4853d540b5c783fb54d6687abed60401634d 100644
--- a/app/code/Magento/Ogone/view/frontend/layout/ogone_api_paypage.xml
+++ b/app/code/Magento/Ogone/view/frontend/layout/ogone_api_paypage.xml
@@ -23,20 +23,18 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="catalog.topnav"/>
-    <referenceContainer name="header-wrapper">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <remove name="catalog.topnav"/>
         <remove name="top.links"/>
         <remove name="top.search"/>
         <remove name="store_language"/>
         <remove name="top.container"/>
-    </referenceContainer>
-    <referenceBlock name="footer">
         <remove name="cms_footer_links"/>
         <remove name="footer_links"/>
         <remove name="store_switcher"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Ogone\Block\Paypage" name="ogone_paypage" template="paypage.phtml"/>
-    </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Ogone\Block\Paypage" name="ogone_paypage" template="paypage.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Ogone/view/frontend/layout/ogone_api_placeform.xml b/app/code/Magento/Ogone/view/frontend/layout/ogone_api_placeform.xml
index 415c897605f2ffccbbd664ea9b21b51993804122..2f7d28356d3f23bfa1687bb6c288cc72015ac4a5 100644
--- a/app/code/Magento/Ogone/view/frontend/layout/ogone_api_placeform.xml
+++ b/app/code/Magento/Ogone/view/frontend/layout/ogone_api_placeform.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Ogone\Block\Placeform" name="ogone_placeform" template="placeform.phtml" cacheable="false"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Ogone\Block\Placeform" name="ogone_placeform" template="placeform.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/PageCache/Block/Javascript.php b/app/code/Magento/PageCache/Block/Javascript.php
index 3a09798a9c073c30d252d73a7d77a64e716ec2ad..f060728dc004db94eff7ee6d3b223e1d01378fbc 100644
--- a/app/code/Magento/PageCache/Block/Javascript.php
+++ b/app/code/Magento/PageCache/Block/Javascript.php
@@ -28,27 +28,6 @@ namespace Magento\PageCache\Block;
  */
 class Javascript extends \Magento\Framework\View\Element\Template
 {
-    /**
-     * @var \Magento\PageCache\Helper\Data
-     */
-    protected $helper;
-
-    /**
-     * Constructor
-     *
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\PageCache\Helper\Data         $helper
-     * @param array                                  $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\PageCache\Helper\Data $helper,
-        array $data = array()
-    ) {
-        $this->helper = $helper;
-        parent::__construct($context, $data);
-    }
-
     /**
      * Retrieve script options encoded to json
      *
@@ -58,7 +37,7 @@ class Javascript extends \Magento\Framework\View\Element\Template
     {
         $params = array(
             'url' => $this->getUrl('page_cache/block/render/'),
-            'handles' => $this->helper->getActualHandles(),
+            'handles' => $this->_layout->getUpdate()->getHandles(),
             'versionCookieName' => \Magento\Framework\App\PageCache\Version::COOKIE_NAME
         );
         return json_encode($params);
diff --git a/app/code/Magento/PageCache/Helper/Data.php b/app/code/Magento/PageCache/Helper/Data.php
index bb02335b51a841cc6a3db2f078f11ea5a79a251f..e3f07c682e328002a8458c4d010a51977a31bde7 100644
--- a/app/code/Magento/PageCache/Helper/Data.php
+++ b/app/code/Magento/PageCache/Helper/Data.php
@@ -38,25 +38,6 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
      */
     const PRIVATE_MAX_AGE_CACHE = 31536000;
 
-    /**
-     * @var \Magento\Framework\App\View
-     */
-    protected $view;
-
-    /**
-     * Constructor
-     *
-     * @param \Magento\Framework\App\Helper\Context $context
-     * @param \Magento\Framework\App\View $view
-     */
-    public function __construct(
-        \Magento\Framework\App\Helper\Context $context,
-        \Magento\Framework\App\View $view
-    ) {
-        parent::__construct($context);
-        $this->view = $view;
-    }
-
     /**
      * Retrieve url
      *
@@ -68,14 +49,4 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     {
         return $this->_getUrl($route, $params);
     }
-
-    /**
-     * Get handles applied for current page
-     *
-     * @return array
-     */
-    public function getActualHandles()
-    {
-        return $this->view->getLayout()->getUpdate()->getHandles();
-    }
 }
diff --git a/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php b/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php
index 659973217162a1f9bbd73a02a65a4137aa8c2fa5..256eae35f394d9440c5f477b66098406dd42d176 100644
--- a/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php
+++ b/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php
@@ -23,6 +23,8 @@
  */
 namespace Magento\PageCache\Model\App\FrontController;
 
+use Magento\Framework\App\Response\Http as ResponseHttp;
+
 /**
  * Plugin for processing builtin cache
  */
@@ -49,6 +51,8 @@ class BuiltinPlugin
     protected $state;
 
     /**
+     * Constructor
+     *
      * @param \Magento\PageCache\Model\Config $config
      * @param \Magento\Framework\App\PageCache\Version $version
      * @param \Magento\Framework\App\PageCache\Kernel $kernel
@@ -70,40 +74,53 @@ class BuiltinPlugin
      * @param \Magento\Framework\App\FrontControllerInterface $subject
      * @param callable $proceed
      * @param \Magento\Framework\App\RequestInterface $request
-     * @return false|\Magento\Framework\App\Response\Http
+     * @return \Magento\Framework\Controller\ResultInterface|\Magento\Framework\App\Response\Http
      */
     public function aroundDispatch(
         \Magento\Framework\App\FrontControllerInterface $subject,
         \Closure $proceed,
         \Magento\Framework\App\RequestInterface $request
     ) {
-        if ($this->config->getType() == \Magento\PageCache\Model\Config::BUILT_IN && $this->config->isEnabled()) {
-            $this->version->process();
-            $response = $this->kernel->load();
-            if ($response === false) {
-                $response = $proceed($request);
-                $cacheControl = $response->getHeader('Cache-Control')['value'];
-                $this->addDebugHeader($response, 'X-Magento-Cache-Control', $cacheControl);
-                $this->kernel->process($response);
-                $this->addDebugHeader($response, 'X-Magento-Cache-Debug', 'MISS');
-            } else {
-                $this->addDebugHeader($response, 'X-Magento-Cache-Debug', 'HIT');
+        if (!$this->config->isEnabled() || $this->config->getType() != \Magento\PageCache\Model\Config::BUILT_IN) {
+            return $proceed($request);
+        }
+        $this->version->process();
+        $result = $this->kernel->load();
+        if ($result === false) {
+            $result = $proceed($request);
+            if ($result instanceof ResponseHttp) {
+                $this->addDebugHeaders($result);
+                $this->kernel->process($result);
             }
         } else {
-            return $response = $proceed($request);
+            $this->addDebugHeader($result, 'X-Magento-Cache-Debug', 'HIT');
         }
-        return $response;
+        return $result;
+    }
+
+    /**
+     * Set cache control
+     *
+     * @param ResponseHttp $result
+     * @return ResponseHttp
+     */
+    protected function addDebugHeaders(ResponseHttp $result)
+    {
+        $cacheControl = $result->getHeader('Cache-Control')['value'];
+        $this->addDebugHeader($result, 'X-Magento-Cache-Control', $cacheControl);
+        $this->addDebugHeader($result, 'X-Magento-Cache-Debug', 'MISS');
+        return $result;
     }
 
     /**
      * Add additional header for debug purpose
      *
-     * @param \Magento\Framework\App\Response\Http $response
+     * @param ResponseHttp $response
      * @param string $name
      * @param string $value
      * @return void
      */
-    protected function addDebugHeader(\Magento\Framework\App\Response\Http $response, $name, $value)
+    protected function addDebugHeader(ResponseHttp $response, $name, $value)
     {
         if ($this->state->getMode() == \Magento\Framework\App\State::MODE_DEVELOPER) {
             $response->setHeader($name, $value);
diff --git a/app/code/Magento/PageCache/Model/App/FrontController/MessageBox.php b/app/code/Magento/PageCache/Model/App/FrontController/MessageBox.php
index 624b9e1e3d9b6c67cc5f91da7780c1bd70592e8c..b3a89552f1da2068cd150aabb10f25a2ec8c80b0 100644
--- a/app/code/Magento/PageCache/Model/App/FrontController/MessageBox.php
+++ b/app/code/Magento/PageCache/Model/App/FrontController/MessageBox.php
@@ -24,7 +24,6 @@
 namespace Magento\PageCache\Model\App\FrontController;
 
 use Magento\Framework\App\FrontController;
-use Magento\Framework\App\ResponseInterface;
 use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
 use Magento\Framework\Stdlib\CookieManager;
 
@@ -100,12 +99,12 @@ class MessageBox
      * Set Cookie for msg box when it displays first
      *
      * @param FrontController $subject
-     * @param ResponseInterface $response
+     * @param \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface $result
      *
-     * @return ResponseInterface
+     * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function afterDispatch(FrontController $subject, ResponseInterface $response)
+    public function afterDispatch(FrontController $subject, $result)
     {
         if ($this->request->isPost() && $this->messageManager->hasMessages()) {
             $publicCookieMetadata = $this->cookieMetadataFactory->createPublicCookieMetadata()
@@ -114,6 +113,6 @@ class MessageBox
                 ->setHttpOnly(false);
             $this->cookieManager->setPublicCookie(self::COOKIE_NAME, 1, $publicCookieMetadata);
         }
-        return $response;
+        return $result;
     }
 }
diff --git a/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php b/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f119559ad6d2b62384fa36666e73b5857420942
--- /dev/null
+++ b/app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\PageCache\Model\Controller\Result;
+
+use Magento\Framework\App\Response\Http as ResponseHttp;
+
+/**
+ * Plugin for processing builtin cache
+ */
+class BuiltinPlugin
+{
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface
+     */
+    protected $config;
+
+    /**
+     * @var \Magento\Framework\App\PageCache\Version
+     */
+    protected $version;
+
+    /**
+     * @var \Magento\Framework\App\PageCache\Kernel
+     */
+    protected $kernel;
+
+    /**
+     * @var \Magento\Framework\App\State
+     */
+    protected $state;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\PageCache\Model\Config $config
+     * @param \Magento\Framework\App\PageCache\Version $version
+     * @param \Magento\Framework\App\PageCache\Kernel $kernel
+     * @param \Magento\Framework\App\State $state
+     */
+    public function __construct(
+        \Magento\PageCache\Model\Config $config,
+        \Magento\Framework\App\PageCache\Version $version,
+        \Magento\Framework\App\PageCache\Kernel $kernel,
+        \Magento\Framework\App\State $state
+    ) {
+        $this->config = $config;
+        $this->version = $version;
+        $this->kernel = $kernel;
+        $this->state = $state;
+    }
+
+    /**
+     * @param \Magento\Framework\Controller\ResultInterface $subject
+     * @param callable $proceed
+     * @param ResponseHttp $response
+     * @return \Magento\Framework\Controller\ResultInterface
+     */
+    public function aroundRenderResult(
+        \Magento\Framework\Controller\ResultInterface $subject,
+        \Closure $proceed,
+        ResponseHttp $response
+    ) {
+        $proceed($response);
+        if ($this->state->getMode() == \Magento\Framework\App\State::MODE_DEVELOPER) {
+            $cacheControl = $response->getHeader('Cache-Control')['value'];
+            $response->setHeader('X-Magento-Cache-Control', $cacheControl);
+            $response->setHeader('X-Magento-Cache-Debug', 'MISS');
+        }
+        $this->kernel->process($response);
+        return $subject;
+    }
+}
diff --git a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
index a24e27e91276f9102ec1a4b17cea8511ab809490..b1f8f62e44d1610424a26fbbca467131adbaa309 100644
--- a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
+++ b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php
@@ -26,11 +26,6 @@ namespace Magento\PageCache\Model\Observer;
 
 class ProcessLayoutRenderElement
 {
-    /**
-     * @var \Magento\PageCache\Helper\Data
-     */
-    protected $_helper;
-
     /**
      * Application config object
      *
@@ -40,29 +35,28 @@ class ProcessLayoutRenderElement
 
     /**
      * @param \Magento\PageCache\Model\Config $config
-     * @param \Magento\PageCache\Helper\Data $helper
      */
-    public function __construct(
-        \Magento\PageCache\Model\Config $config,
-        \Magento\PageCache\Helper\Data $helper
-    ) {
+    public function __construct(\Magento\PageCache\Model\Config $config)
+    {
         $this->_config = $config;
-        $this->_helper = $helper;
     }
 
     /**
      * Replace the output of the block, containing ttl attribute, with ESI tag
      *
      * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @param \Magento\Framework\View\Layout $layout
      * @return string
      */
-    protected function _wrapEsi(\Magento\Framework\View\Element\AbstractBlock $block)
-    {
+    protected function _wrapEsi(
+        \Magento\Framework\View\Element\AbstractBlock $block,
+        \Magento\Framework\View\Layout $layout
+    ) {
         $url = $block->getUrl(
             'page_cache/block/esi',
             array(
                 'blocks' => json_encode(array($block->getNameInLayout())),
-                'handles' => json_encode($this->_helper->getActualHandles())
+                'handles' => json_encode($layout->getUpdate()->getHandles())
             )
         );
         return sprintf('<esi:include src="%s" />', $url);
@@ -89,7 +83,7 @@ class ProcessLayoutRenderElement
                 $varnishIsEnabledFlag = ($this->_config->getType() == \Magento\PageCache\Model\Config::VARNISH);
                 $output = $transport->getData('output');
                 if ($varnishIsEnabledFlag && isset($blockTtl)) {
-                    $output = $this->_wrapEsi($block);
+                    $output = $this->_wrapEsi($block, $layout);
                 } elseif ($block->isScopePrivate()) {
                     $output = sprintf(
                         '<!-- BLOCK %1$s -->%2$s<!-- /BLOCK %1$s -->',
diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json
index a7436ff43866cf07ba2518735b48cc7a2f4b2376..173f05e07d6d0f8df8e9f6e2b07ebb3a2ea25d1c 100644
--- a/app/code/Magento/PageCache/composer.json
+++ b/app/code/Magento/PageCache/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/PageCache/etc/frontend/di.xml b/app/code/Magento/PageCache/etc/frontend/di.xml
index c2ea16a521e5cdc30446b216589afa3d6c996707..82ac58baf5e9ecf8e0256577b274e6e91913f925 100644
--- a/app/code/Magento/PageCache/etc/frontend/di.xml
+++ b/app/code/Magento/PageCache/etc/frontend/di.xml
@@ -29,6 +29,9 @@
         <plugin name="front-controller-varnish-cache" type="Magento\PageCache\Model\App\FrontController\VarnishPlugin"/>
         <plugin name="front-controller-message-box" type="Magento\PageCache\Model\App\FrontController\MessageBox" sortOrder="0"/>
     </type>
+    <type name="Magento\Framework\Controller\ResultInterface">
+        <plugin name="result-builtin-cache" type="Magento\PageCache\Model\Controller\Result\BuiltinPlugin"/>
+    </type>
     <type name="Magento\Framework\View\Layout">
         <plugin name="layout-model-caching-unique-name" type="Magento\PageCache\Model\Layout\LayoutPlugin"/>
     </type>
diff --git a/app/code/Magento/PageCache/view/adminhtml/layout/adminhtml_system_config_edit.xml b/app/code/Magento/PageCache/view/adminhtml/layout/adminhtml_system_config_edit.xml
index 133002c70d0048698561738a6b45fb9df11013a1..7aa74bac71d738b3fb1a6a16e1d2829860bfe3ce 100644
--- a/app/code/Magento/PageCache/view/adminhtml/layout/adminhtml_system_config_edit.xml
+++ b/app/code/Magento/PageCache/view/adminhtml/layout/adminhtml_system_config_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\PageCache\Block\System\Config\Form\Field\Export" template="Magento_PageCache::page_cache_validation.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\PageCache\Block\System\Config\Form\Field\Export" template="Magento_PageCache::page_cache_validation.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/PageCache/view/frontend/layout/default.xml b/app/code/Magento/PageCache/view/frontend/layout/default.xml
index 84a4ff5111220f390fd343b353571d5a6f42d4f4..58d159213507f6b2fceb44582c86febbb83b9f90 100644
--- a/app/code/Magento/PageCache/view/frontend/layout/default.xml
+++ b/app/code/Magento/PageCache/view/frontend/layout/default.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="pagecache_page_head_components" template="Magento_PageCache::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\PageCache\Block\Javascript" template="Magento_PageCache::javascript.phtml" name="pageCache" as="pageCache"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="pagecache_page_head_components" template="Magento_PageCache::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\PageCache\Block\Javascript" template="Magento_PageCache::javascript.phtml" name="pageCache" as="pageCache"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/PayPalRecurringPayment/README.md b/app/code/Magento/PayPalRecurringPayment/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..554fb0f97c210ec39e152e5fbe088e06cb790e6b
--- /dev/null
+++ b/app/code/Magento/PayPalRecurringPayment/README.md
@@ -0,0 +1,2 @@
+The Magento_PayPalRecurringPayment module enables recurring payments with PayPal payment system.
+Currently PayPal recurring payments in Magento are only available for the PayPal Express Checkout payment method.
diff --git a/app/code/Magento/PayPalRecurringPayment/composer.json b/app/code/Magento/PayPalRecurringPayment/composer.json
index 469fa538aaff615ea5fc4ac528c7993632f51fb4..79620286d9627dea9267f23d11566bdea6658c64 100644
--- a/app/code/Magento/PayPalRecurringPayment/composer.json
+++ b/app/code/Magento/PayPalRecurringPayment/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-paypal": "0.1.0-alpha101",
-        "magento/module-recurring-payment": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-paypal": "0.1.0-alpha102",
+        "magento/module-recurring-payment": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Payment/Block/Info/AbstractContainer.php b/app/code/Magento/Payment/Block/Info/AbstractContainer.php
index c7b83e1c5817e9553a7b59d2cf277c5dcc0b8a8a..428ed3ff8db01dda6102f6148693d1dce7f3373d 100644
--- a/app/code/Magento/Payment/Block/Info/AbstractContainer.php
+++ b/app/code/Magento/Payment/Block/Info/AbstractContainer.php
@@ -59,7 +59,7 @@ abstract class AbstractContainer extends \Magento\Framework\View\Element\Templat
     protected function _prepareLayout()
     {
         if ($info = $this->getPaymentInfo()) {
-            $this->setChild($this->_getInfoBlockName(), $this->_paymentData->getInfoBlock($info));
+            $this->setChild($this->_getInfoBlockName(), $this->_paymentData->getInfoBlock($info, $this->getLayout()));
         }
         return parent::_prepareLayout();
     }
diff --git a/app/code/Magento/Payment/Helper/Data.php b/app/code/Magento/Payment/Helper/Data.php
index f4e6db4ef45f23ec9279b346a8eef083331fef64..e595b00ef894c34a75acc12a6719faa5bf3535ef 100644
--- a/app/code/Magento/Payment/Helper/Data.php
+++ b/app/code/Magento/Payment/Helper/Data.php
@@ -29,6 +29,7 @@ use Magento\Payment\Block\Form;
 use Magento\Payment\Model\Info;
 use Magento\Framework\View\Element\Template;
 use Magento\Framework\View\LayoutInterface;
+use Magento\Framework\View\LayoutFactory;
 use Magento\Payment\Model\Method\AbstractMethod;
 use Magento\Payment\Model\MethodInterface;
 
@@ -82,7 +83,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
      *
      * @param \Magento\Framework\App\Helper\Context $context
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param LayoutInterface $layout
+     * @param LayoutFactory $layoutFactory
      * @param \Magento\Payment\Model\Method\Factory $paymentMethodFactory
      * @param \Magento\Core\Model\App\Emulation $appEmulation
      * @param \Magento\Payment\Model\Config $paymentConfig
@@ -91,7 +92,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     public function __construct(
         \Magento\Framework\App\Helper\Context $context,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        LayoutInterface $layout,
+        LayoutFactory $layoutFactory,
         \Magento\Payment\Model\Method\Factory $paymentMethodFactory,
         \Magento\Core\Model\App\Emulation $appEmulation,
         \Magento\Payment\Model\Config $paymentConfig,
@@ -99,7 +100,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     ) {
         parent::__construct($context);
         $this->_scopeConfig = $scopeConfig;
-        $this->_layout = $layout;
+        $this->_layout = $layoutFactory->create();
         $this->_methodFactory = $paymentMethodFactory;
         $this->_appEmulation = $appEmulation;
         $this->_paymentConfig = $paymentConfig;
@@ -201,12 +202,14 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
      * Retrieve payment information block
      *
      * @param Info $info
+     * @param \Magento\Framework\View\LayoutInterface $layout
      * @return Template
      */
-    public function getInfoBlock(Info $info)
+    public function getInfoBlock(Info $info, LayoutInterface $layout = null)
     {
+        $layout = $layout ?: $this->_layout;
         $blockType = $info->getMethodInstance()->getInfoBlockType();
-        $block = $this->_layout->createBlock($blockType);
+        $block = $layout->createBlock($blockType);
         $block->setInfo($info);
         return $block;
     }
diff --git a/app/code/Magento/Payment/README.md b/app/code/Magento/Payment/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a016bead0438ae77a20660c009482fec2d802a13
--- /dev/null
+++ b/app/code/Magento/Payment/README.md
@@ -0,0 +1,2 @@
+The Magento_Payment module provides the abstraction level for all payment methods, and all logic that should be used when adding a new payment method. This logic includes configuration models, separate models for payment data verification and so on.
+For example, Magento\Payment\Model\Method\AbstractMethod is an abstract model which should be extended by particular payment methods.
diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json
index 21703f3a7c300bf49f66c587e9984e97689d6e74..9b965355aa3e174a24db5b21a2b4e412e0ea74c5 100644
--- a/app/code/Magento/Payment/composer.json
+++ b/app/code/Magento/Payment/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-centinel": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-centinel": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Payment/view/frontend/templates/info/default.phtml b/app/code/Magento/Payment/view/frontend/templates/info/default.phtml
index ac25bb48acd938630352bd5d510cecbb2dea3f88..3f2bad1af621b557dbcdb7fa198775045893fc7a 100644
--- a/app/code/Magento/Payment/view/frontend/templates/info/default.phtml
+++ b/app/code/Magento/Payment/view/frontend/templates/info/default.phtml
@@ -32,9 +32,10 @@
 <?php if ($_specificInfo = $this->getSpecificInformation()):?>
     <dd class="content">
         <table class="data table">
+            <caption class="table-caption"><?php echo $this->escapeHtml($this->getMethod()->getTitle()) ?></caption>
             <?php foreach ($_specificInfo as $_label => $_value):?>
                 <tr>
-                    <th><?php echo $this->escapeHtml($_label)?></th>
+                    <th scope="row"><?php echo $this->escapeHtml($_label)?></th>
                     <td><?php echo nl2br(implode($this->getValueAsArray($_value, true), "\n"))?></td>
                 </tr>
             <?php endforeach; ?>
diff --git a/app/code/Magento/Paypal/README.md b/app/code/Magento/Paypal/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8f4453ae0a058f4fc387af036ccf0d190a85950d
--- /dev/null
+++ b/app/code/Magento/Paypal/README.md
@@ -0,0 +1,6 @@
+Module Magento\PayPal implements integration with the PayPal payment system. Namely, it enables the following payment methods:
+*PayPal Express Checkout
+*PayPal Payments Standard
+*PayPal Payments Pro
+*PayPal Credit
+*PayFlow Payment Gateway
diff --git a/app/code/Magento/Paypal/composer.json b/app/code/Magento/Paypal/composer.json
index d729bdac674af682e2ef4aa9cc8dec15543d783e..09d9c8a74bfe3711c1951d5604c80cfffe663f01 100644
--- a/app/code/Magento/Paypal/composer.json
+++ b/app/code/Magento/Paypal/composer.json
@@ -3,25 +3,25 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-centinel": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-centinel": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_paypal_reports_block.xml b/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_paypal_reports_block.xml
index 8d942d2b3fa4285551074f6acf12f8375300d386..1e67a91abfa7d3f7780afa098fee86ae6d253b8e 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_paypal_reports_block.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_paypal_reports_block.xml
@@ -24,116 +24,118 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.paypal.report.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="paypal.report.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">settlementGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Paypal\Model\Resource\Report\Settlement\Row\Collection</argument>
-                <argument name="default_sort" xsi:type="string">row_id</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid"/>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="paypal.report.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.paypal.report.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="paypal.report.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/details</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">settlementGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Paypal\Model\Resource\Report\Settlement\Row\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">row_id</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid"/>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="report_date">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="paypal.report.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Report Date</argument>
-                        <argument name="index" xsi:type="string">report_date</argument>
-                        <argument name="type" xsi:type="string">date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="account_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Merchant Account</argument>
-                        <argument name="index" xsi:type="string">account_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-merchant</argument>
-                        <argument name="column_css_class" xsi:type="string">col-merchant</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Transaction ID</argument>
-                        <argument name="index" xsi:type="string">transaction_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-transaction</argument>
-                        <argument name="column_css_class" xsi:type="string">col-transaction</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="invoice_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Invoice ID</argument>
-                        <argument name="index" xsi:type="string">invoice_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-invoice</argument>
-                        <argument name="column_css_class" xsi:type="string">col-invoice</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="paypal_reference_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">PayPal Reference ID</argument>
-                        <argument name="index" xsi:type="string">paypal_reference_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-reference</argument>
-                        <argument name="column_css_class" xsi:type="string">col-reference</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_event_code">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Event</argument>
-                        <argument name="index" xsi:type="string">transaction_event_code</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Paypal\Model\Resource\Report\Settlement\Options\TransactionEvents"/>
-                        <argument name="header_css_class" xsi:type="string">ol-event</argument>
-                        <argument name="column_css_class" xsi:type="string">ol-event</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_initiation_date">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Start Date</argument>
-                        <argument name="index" xsi:type="string">transaction_initiation_date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="header_css_class" xsi:type="string">col-initiation</argument>
-                        <argument name="column_css_class" xsi:type="string">col-initiation</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_completion_date">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Finish Date</argument>
-                        <argument name="index" xsi:type="string">transaction_completion_date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="header_css_class" xsi:type="string">col-completion</argument>
-                        <argument name="column_css_class" xsi:type="string">col-completion</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="gross_transaction_amount">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Gross Amount</argument>
-                        <argument name="index" xsi:type="string">gross_transaction_amount</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">gross_transaction_currency</argument>
-                        <argument name="header_css_class" xsi:type="string">col-amount</argument>
-                        <argument name="column_css_class" xsi:type="string">col-amount</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="fee_amount">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Fee Amount</argument>
-                        <argument name="index" xsi:type="string">fee_amount</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">gross_transaction_currency</argument>
-                        <argument name="header_css_class" xsi:type="string">col-fee-amount</argument>
-                        <argument name="column_css_class" xsi:type="string">col-fee-amount</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/details</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="report_date">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Report Date</argument>
+                            <argument name="index" xsi:type="string">report_date</argument>
+                            <argument name="type" xsi:type="string">date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="account_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Merchant Account</argument>
+                            <argument name="index" xsi:type="string">account_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-merchant</argument>
+                            <argument name="column_css_class" xsi:type="string">col-merchant</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Transaction ID</argument>
+                            <argument name="index" xsi:type="string">transaction_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-transaction</argument>
+                            <argument name="column_css_class" xsi:type="string">col-transaction</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="invoice_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Invoice ID</argument>
+                            <argument name="index" xsi:type="string">invoice_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-invoice</argument>
+                            <argument name="column_css_class" xsi:type="string">col-invoice</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="paypal_reference_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">PayPal Reference ID</argument>
+                            <argument name="index" xsi:type="string">paypal_reference_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-reference</argument>
+                            <argument name="column_css_class" xsi:type="string">col-reference</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_event_code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Event</argument>
+                            <argument name="index" xsi:type="string">transaction_event_code</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Paypal\Model\Resource\Report\Settlement\Options\TransactionEvents"/>
+                            <argument name="header_css_class" xsi:type="string">ol-event</argument>
+                            <argument name="column_css_class" xsi:type="string">ol-event</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_initiation_date">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Start Date</argument>
+                            <argument name="index" xsi:type="string">transaction_initiation_date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="header_css_class" xsi:type="string">col-initiation</argument>
+                            <argument name="column_css_class" xsi:type="string">col-initiation</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="transaction_completion_date">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Finish Date</argument>
+                            <argument name="index" xsi:type="string">transaction_completion_date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="header_css_class" xsi:type="string">col-completion</argument>
+                            <argument name="column_css_class" xsi:type="string">col-completion</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="gross_transaction_amount">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Gross Amount</argument>
+                            <argument name="index" xsi:type="string">gross_transaction_amount</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">gross_transaction_currency</argument>
+                            <argument name="header_css_class" xsi:type="string">col-amount</argument>
+                            <argument name="column_css_class" xsi:type="string">col-amount</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="fee_amount">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Fee Amount</argument>
+                            <argument name="index" xsi:type="string">fee_amount</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">gross_transaction_currency</argument>
+                            <argument name="header_css_class" xsi:type="string">col-fee-amount</argument>
+                            <argument name="column_css_class" xsi:type="string">col-fee-amount</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_system_config_edit.xml b/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_system_config_edit.xml
index 0620b86fccc60bc2f2d14c03030e911fe5cf2a16..f099c7695dde5ff119ad866655eca61837e2c7a5 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_system_config_edit.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/adminhtml_system_config_edit.xml
@@ -27,4 +27,5 @@
     <head>
         <css src="Magento_Paypal::styles.css"/>
     </head>
+    <body/>
 </page>
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/customer_index_edit.xml b/app/code/Magento/Paypal/view/adminhtml/layout/customer_index_edit.xml
index 1dd347c3286a21e00b41b7d3564729d45077432d..d535e0510ed5846620a20cc39f617ab0c6018fcf 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/customer_index_edit.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/customer_index_edit.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_edit_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">customer_edit_tab_agreements</argument>
-            <argument name="block" xsi:type="string">Magento\Paypal\Block\Adminhtml\Customer\Edit\Tab\Agreement</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_edit_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">customer_edit_tab_agreements</argument>
+                <argument name="block" xsi:type="string">Magento\Paypal\Block\Adminhtml\Customer\Edit\Tab\Agreement</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_index.xml b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_index.xml
index 607c49ada295998f564af8a3967b60169d4416be..0be09ad483fcb2cfe6f2878bdbe3203e833690c3 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_index.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement" name="paypal.billing.agreement.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement" name="paypal.billing.agreement.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_view.xml b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_view.xml
index 0148681b5095452b81254f963a108c17f15bd5ad..2079cfc2063b8b42b935b2f4c5621675dccc9130 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_view.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_billing_agreement_view.xml
@@ -23,32 +23,34 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_grid_block"/>
-    <referenceBlock name="sales.order.grid">
-        <arguments>
-            <argument name="dataSource" xsi:type="object">
-                <updater>Magento\Paypal\Model\Billing\Agreement\OrdersUpdater</updater>
-            </argument>
-            <argument name="grid_url" xsi:type="url" path="*/*/ordersgrid"/>
-        </arguments>
-    </referenceBlock>
-    <remove name="sales.order.grid.export"/>
-    <remove name="sales.order.grid.massaction"/>
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View" name="paypal.billing.agreement.view"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tabs" name="paypal.billing.agreement.tabs">
-            <action method="addTab">
-                <argument name="name" xsi:type="string">billing_agreement_info</argument>
-                <argument name="block" xsi:type="string">Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tab\Info</argument>
-            </action>
-            <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tab\Orders" name="sales_order.grid.container"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">billing_agreement_orders</argument>
-                <argument name="block" xsi:type="string">sales_order.grid.container</argument>
-            </action>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="sales.order.grid">
+            <arguments>
+                <argument name="dataSource" xsi:type="object">
+                    <updater>Magento\Paypal\Model\Billing\Agreement\OrdersUpdater</updater>
+                </argument>
+                <argument name="grid_url" xsi:type="url" path="*/*/ordersgrid"/>
+            </arguments>
+        </referenceBlock>
+        <remove name="sales.order.grid.export"/>
+        <remove name="sales.order.grid.massaction"/>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View" name="paypal.billing.agreement.view"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tabs" name="paypal.billing.agreement.tabs">
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">billing_agreement_info</argument>
+                    <argument name="block" xsi:type="string">Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tab\Info</argument>
+                </action>
+                <block class="Magento\Paypal\Block\Adminhtml\Billing\Agreement\View\Tab\Orders" name="sales_order.grid.container"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">billing_agreement_orders</argument>
+                    <argument name="block" xsi:type="string">sales_order.grid.container</argument>
+                </action>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_paypal_reports_index.xml b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_paypal_reports_index.xml
index d71070eeba31d6f22aea6d1e11640556604920eb..b3fead16a31d592409eba158d8924879b170f2a7 100644
--- a/app/code/Magento/Paypal/view/adminhtml/layout/paypal_paypal_reports_index.xml
+++ b/app/code/Magento/Paypal/view/adminhtml/layout/paypal_paypal_reports_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_paypal_reports_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Adminhtml\Settlement\Report" name="adminhtml.paypal.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Adminhtml\Settlement\Report" name="adminhtml.paypal.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Paypal/view/frontend/layout/catalog_category_view.xml
index 40e720a397eb42113d6f7e5afe2488d3182b9317..4b960019496dfdef710bd56125d479dec4d66f5c 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/catalog_category_view.xml
@@ -24,21 +24,23 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="sidebar.additional">
-        <block class="Magento\Paypal\Block\Logo" name="paypal.partner.right.logo" template="partner/logo.phtml"/>
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">categorypage</argument>
-                <argument name="position" xsi:type="number">1</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="top.container">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">categorypage</argument>
-                <argument name="position" xsi:type="number">0</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="sidebar.additional">
+            <block class="Magento\Paypal\Block\Logo" name="paypal.partner.right.logo" template="partner/logo.phtml"/>
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">categorypage</argument>
+                    <argument name="position" xsi:type="number">1</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="top.container">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">categorypage</argument>
+                    <argument name="position" xsi:type="number">0</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Paypal/view/frontend/layout/catalog_product_view.xml
index e85dd9a605dd4868ddc0219156b851efc382aef6..17401541192cfb96f0046935f8e4b9b73d6dfb3f 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/catalog_product_view.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="top.container">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">productpage</argument>
-                <argument name="position" xsi:type="number">0</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="product.info.addtocart">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" after="product.info.addtocart.paypal" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">productpage</argument>
-                <argument name="position" xsi:type="number">1</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="top.container">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">productpage</argument>
+                    <argument name="position" xsi:type="number">0</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="product.info.addtocart">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" after="product.info.addtocart.paypal" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">productpage</argument>
+                    <argument name="position" xsi:type="number">1</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Paypal/view/frontend/layout/checkout_cart_index.xml
index 15bfad81b1e0133faee2c5663a860bc445599df3..ec394af3c26abefd20e0cd56b0ce8848ac91c1cd 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/checkout_cart_index.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="top.container">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">checkout</argument>
-                <argument name="position" xsi:type="number">0</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="checkout.cart.methods">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" after="checkout.cart.methods.onepage.bottom" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">checkout</argument>
-                <argument name="position" xsi:type="number">1</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="top.container">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">checkout</argument>
+                    <argument name="position" xsi:type="number">0</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="checkout.cart.methods">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" after="checkout.cart.methods.onepage.bottom" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">checkout</argument>
+                    <argument name="position" xsi:type="number">1</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_index.xml
index 8aa8424e65f721d00014945e4b7445abc230d5de..c0a2a5dbeb641c1f4c4c4588c8729bf9fe256b57 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_index.xml
@@ -24,18 +24,20 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="paypal_opcheckout_head_components" template="Magento_Paypal::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.paypal.js" after="checkout.onepage" template="Magento_Paypal::onepage.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="top.container">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">checkout</argument>
-                <argument name="position" xsi:type="number">0</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="paypal_opcheckout_head_components" template="Magento_Paypal::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Template" name="checkout.onepage.paypal.js" after="checkout.onepage" template="Magento_Paypal::onepage.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="top.container">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">checkout</argument>
+                    <argument name="position" xsi:type="number">0</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_review.xml b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_review.xml
index 9f0f2c774d4422f09332e21e25920c0825debe5a..3d938b0eaaeff502167a7ed056a766786bfe02f7 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_review.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_review.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.onepage.review.info.items.after">
-        <block class="Magento\Paypal\Block\Iframe" name="paypal.iframe" cacheable="false"/>
-    </referenceContainer>
-    <referenceBlock name="checkout.onepage.review.button">
-        <action method="setTemplate">
-            <argument name="template" xsi:type="helper" helper="Magento\Paypal\Helper\Hss::getReviewButtonTemplate">
-                <param name="name">Magento_Paypal::hss/review/button.phtml</param>
-            </argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="checkout.onepage.review.info.items.after">
+            <block class="Magento\Paypal\Block\Iframe" name="paypal.iframe" cacheable="false"/>
+        </referenceContainer>
+        <referenceBlock name="checkout.onepage.review.button">
+            <action method="setTemplate">
+                <argument name="template" xsi:type="helper" helper="Magento\Paypal\Helper\Hss::getReviewButtonTemplate">
+                    <param name="name">Magento_Paypal::hss/review/button.phtml</param>
+                </argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_success.xml
index 235cb3df7778b59d9aae6038b496cb9a6c1a6a68..3877edf3894166b9819858548738772959cf175d 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/checkout_onepage_success.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="order.success.additional.info">
-        <block class="Magento\Paypal\Block\Checkout\Onepage\Success\BillingAgreement" name="onepage.success.billing_agreement" template="checkout/onepage/success/billing_agreement.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="order.success.additional.info">
+            <block class="Magento\Paypal\Block\Checkout\Onepage\Success\BillingAgreement" name="onepage.success.billing_agreement" template="checkout/onepage/success/billing_agreement.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/cms_index_index.xml b/app/code/Magento/Paypal/view/frontend/layout/cms_index_index.xml
index 2edb5c1624872992df068f2708a9dccb636db82e..33207e01f55dd4d053db3db0bb870c50f7a33240 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/cms_index_index.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/cms_index_index.xml
@@ -24,21 +24,23 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="sidebar.additional">
-        <block class="Magento\Paypal\Block\Logo" name="paypal.partner.right.logo" template="partner/logo.phtml"/>
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">homepage</argument>
-                <argument name="position" xsi:type="number">1</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="top.container">
-        <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
-            <arguments>
-                <argument name="section" xsi:type="string">homepage</argument>
-                <argument name="position" xsi:type="number">0</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="sidebar.additional">
+            <block class="Magento\Paypal\Block\Logo" name="paypal.partner.right.logo" template="partner/logo.phtml"/>
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">homepage</argument>
+                    <argument name="position" xsi:type="number">1</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="top.container">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.center.logo" template="bml.phtml">
+                <arguments>
+                    <argument name="section" xsi:type="string">homepage</argument>
+                    <argument name="position" xsi:type="number">0</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/customer_account.xml b/app/code/Magento/Paypal/view/frontend/layout/customer_account.xml
index a31cd9369a3cc0bd2cd243161d030dcc48bba336..2fbf57841ad163f9e8ead227b4ea6e9d7bf6f4af 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/customer_account.xml
@@ -27,12 +27,14 @@
     <head>
         <title>Billing Agreements</title>
     </head>
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-billing-agreements-link">
-            <arguments>
-                <argument name="path" xsi:type="string">paypal/billing_agreement</argument>
-                <argument name="label" xsi:type="string">Billing Agreements</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-billing-agreements-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">paypal/billing_agreement</argument>
+                    <argument name="label" xsi:type="string">Billing Agreements</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_index.xml b/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_index.xml
index 902cf4d8ba56e5d13ae1f9235aa3e872e9f8b801..daae7dfc6a0619319da9f53b47d0a641fe857928 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_index.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Billing\Agreements" name="customer.account.billing.agreement" template="billing/agreements.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Billing\Agreements" name="customer.account.billing.agreement" template="billing/agreements.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_view.xml b/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_view.xml
index d25fa81b0979efdb38f8b352b2779381f3a6705a..baa91c2b9a3075ba5f91c40983f23b3cd2bf979e 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_view.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/paypal_billing_agreement_view.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Billing\Agreement\View" name="customer.account.billing.agreement" template="billing/agreement/view.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Billing\Agreement\View" name="customer.account.billing.agreement" template="billing/agreement/view.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/paypal_express_review.xml b/app/code/Magento/Paypal/view/frontend/layout/paypal_express_review.xml
index cd1279e90e148f5b3fd8c4942313590e756f8149..c5bde2b68d4d12583195b9f9a64251cad88ed4c0 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/paypal_express_review.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/paypal_express_review.xml
@@ -23,23 +23,22 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_onepage_review_item_renderers" />
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="paypal_express_review_checkout_head_components" template="Magento_Checkout::js/components.phtml"/>
-        <block class="Magento\Framework\View\Element\Js\Components" name="paypal_express_review_head_components" template="Magento_Paypal::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Express\Review" name="paypal.express.review" template="express/review.phtml">
-            <block class="Magento\Paypal\Block\Express\Review" name="express.review.shipping.method"
-                   as="shipping_method" template="express/review/shipping/method.phtml"/>
-            <block class="Magento\Paypal\Block\Express\Review\Details" name="paypal.express.review.details" as="details"
-                   template="express/review/details.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="checkout.onepage.review.item.renderers" as="renderer.list"/>
-                <block class="Magento\Checkout\Block\Cart\Totals" name="paypal.express.review.details.totals"
-                       as="totals" template="onepage/review/totals.phtml"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="checkout_onepage_review_item_renderers"/>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="paypal_express_review_checkout_head_components" template="Magento_Checkout::js/components.phtml"/>
+            <block class="Magento\Framework\View\Element\Js\Components" name="paypal_express_review_head_components" template="Magento_Paypal::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Express\Review" name="paypal.express.review" template="express/review.phtml">
+                <block class="Magento\Paypal\Block\Express\Review" name="express.review.shipping.method" as="shipping_method" template="express/review/shipping/method.phtml"/>
+                <block class="Magento\Paypal\Block\Express\Review\Details" name="paypal.express.review.details" as="details" template="express/review/details.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="checkout.onepage.review.item.renderers" as="renderer.list"/>
+                    <block class="Magento\Checkout\Block\Cart\Totals" name="paypal.express.review.details.totals" as="totals" template="onepage/review/totals.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/layout/paypal_payflowexpress_review.xml b/app/code/Magento/Paypal/view/frontend/layout/paypal_payflowexpress_review.xml
index cb4e83e182835c09dc14b5d422b7276cf5f23eca..70c1d7f4abd6465de15601b478e97423f0af8e22 100644
--- a/app/code/Magento/Paypal/view/frontend/layout/paypal_payflowexpress_review.xml
+++ b/app/code/Magento/Paypal/view/frontend/layout/paypal_payflowexpress_review.xml
@@ -23,25 +23,23 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="checkout_onepage_review_item_renderers" />
-    <referenceContainer name="content">
-        <block class="Magento\Paypal\Block\Express\Review" name="paypal.express.review"
-               template="express/review.phtml">
-            <action method="setControllerPath">
-                <argument name="prefix" xsi:type="string">paypal/payflowexpress</argument>
-            </action>
-            <block class="Magento\Paypal\Block\Express\Review" name="express.review.shipping.method"
-                   as="shipping_method" template="express/review/shipping/method.phtml"/>
-            <block class="Magento\Paypal\Block\Express\Review\Details" name="paypal.express.review.details" as="details"
-                   template="express/review/details.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="checkout.onepage.review.item.renderers" as="renderer.list" />
-                <block class="Magento\Checkout\Block\Cart\Totals" name="paypal.express.review.details.totals"
-                       as="totals" template="onepage/review/totals.phtml"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="checkout_onepage_review_item_renderers"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Paypal\Block\Express\Review" name="paypal.express.review" template="express/review.phtml">
+                <action method="setControllerPath">
+                    <argument name="prefix" xsi:type="string">paypal/payflowexpress</argument>
+                </action>
+                <block class="Magento\Paypal\Block\Express\Review" name="express.review.shipping.method" as="shipping_method" template="express/review/shipping/method.phtml"/>
+                <block class="Magento\Paypal\Block\Express\Review\Details" name="paypal.express.review.details" as="details" template="express/review/details.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="checkout.onepage.review.item.renderers" as="renderer.list"/>
+                    <block class="Magento\Checkout\Block\Cart\Totals" name="paypal.express.review.details.totals" as="totals" template="onepage/review/totals.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="after.body.start">
-        <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Paypal::js/components.phtml"/>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Paypal::js/components.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Paypal/view/frontend/templates/billing/agreement/view.phtml b/app/code/Magento/Paypal/view/frontend/templates/billing/agreement/view.phtml
index 9bae2df213f33f5878d1ef51067943a73e35f71a..1c10927ef28ce2dce1a31d6d51886ee8263aeca0 100644
--- a/app/code/Magento/Paypal/view/frontend/templates/billing/agreement/view.phtml
+++ b/app/code/Magento/Paypal/view/frontend/templates/billing/agreement/view.phtml
@@ -36,7 +36,7 @@
         <div class="block-content">
             <div class="table-wrapper billing-agreements-view">
                 <table class="data table table-billing-agreements-view">
-                    <caption class="table caption"><?php echo __('Agreement Information') ?></caption>
+                    <caption class="table-caption"><?php echo __('Agreement Information') ?></caption>
                     <thead>
                         <tr>
                             <th scope="col" class="col id"><?php echo __('Reference ID:'); ?></th>
@@ -76,7 +76,7 @@
         <div class="block-content">
             <div class="table-wrapper billing-agreements-related">
                 <table class="data table table-billing-agreements-related" id="related-orders-table">
-                    <caption class="table caption"><?php echo __('Related Orders') ?></caption>
+                    <caption class="table-caption"><?php echo __('Related Orders') ?></caption>
                     <thead>
                         <tr>
                             <th scope="col" class="col id"><?php echo __('Order #') ?></th>
diff --git a/app/code/Magento/Paypal/view/frontend/templates/billing/agreements.phtml b/app/code/Magento/Paypal/view/frontend/templates/billing/agreements.phtml
index c6fe52b7e8ded74fec88434934a3ee7c6ef17d0f..96c1392c7fab22fc86f3d496aceb4f0c56d5d0f7 100644
--- a/app/code/Magento/Paypal/view/frontend/templates/billing/agreements.phtml
+++ b/app/code/Magento/Paypal/view/frontend/templates/billing/agreements.phtml
@@ -29,7 +29,7 @@
         <?php echo $this->getChildHtml('pager'); ?>
         <div class="table-wrapper billing-agreements">
             <table id="billing-agreements" class="data table table-billing-agreements">
-                <caption class="table caption"><?php echo __('Billing Agreements') ?></caption>
+                <caption class="table-caption"><?php echo __('Billing Agreements') ?></caption>
                 <thead>
                 <tr>
                     <th scope="col" class="col id"><?php echo __('Reference ID'); ?></th>
diff --git a/app/code/Magento/Paypal/view/frontend/templates/express/review/details.phtml b/app/code/Magento/Paypal/view/frontend/templates/express/review/details.phtml
index 2d28f474647c3fe52044049cd489de294a47d9ce..a846af928af8894de20ea052b28e1023b2f004e4 100644
--- a/app/code/Magento/Paypal/view/frontend/templates/express/review/details.phtml
+++ b/app/code/Magento/Paypal/view/frontend/templates/express/review/details.phtml
@@ -26,22 +26,24 @@
  * @see \Magento\Paypal\Block\Express\Review\Details
  */
 ?>
-<table id="details-table" class="data table table-paypal-review-items">
-    <caption class="table caption"><?php echo __('Items in Your Shopping Cart') ?></caption>
-    <thead>
-    <tr>
-        <th class="col name"><?php echo __('Product Name') ?></th>
-        <th class="col price"><?php echo __('Price') ?></th>
-        <th class="col qty"><?php echo __('Qty') ?></th>
-        <th class="col subtotal"><?php echo __('Subtotal') ?></th>
-    </tr>
-    </thead>
-    <tfoot>
+<div class="table-wrapper">
+    <table id="details-table" class="data table table-paypal-review-items">
+        <caption class="table-caption"><?php echo __('Items in Your Shopping Cart') ?></caption>
+        <thead>
+        <tr>
+            <th class="col name" scope="col"><?php echo __('Product Name') ?></th>
+            <th class="col price" scope="col"><?php echo __('Price') ?></th>
+            <th class="col qty" scope="col"><?php echo __('Qty') ?></th>
+            <th class="col subtotal" scope="col"><?php echo __('Subtotal') ?></th>
+        </tr>
+        </thead>
+        <tfoot>
         <?php echo $this->getChildHtml('totals'); ?>
-    </tfoot>
-    <tbody>
-    <?php foreach ($this->getItems() as $_item): ?>
-        <?php echo $this->getItemHtml($_item) ?>
-    <?php endforeach ?>
-    </tbody>
-</table>
+        </tfoot>
+        <tbody>
+        <?php foreach ($this->getItems() as $_item): ?>
+            <?php echo $this->getItemHtml($_item) ?>
+        <?php endforeach ?>
+        </tbody>
+    </table>
+</div>
diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json
index c00d7821a1b8f8b7f6195cab0cbd10e2b05bb3f7..c3ab69a918a65a1f1e666c8f364c3c15c4ee9b18 100644
--- a/app/code/Magento/Persistent/composer.json
+++ b/app/code/Magento/Persistent/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Persistent/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Persistent/view/frontend/layout/checkout_onepage_index.xml
index 0197df7ef9942fb2d755542c99655ac1ce031969..d1f4c5b93e13a5374595cf59cd135236eb7f06c5 100644
--- a/app/code/Magento/Persistent/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Persistent/view/frontend/layout/checkout_onepage_index.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.login.additional.info">
-        <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
-    </referenceContainer>
-    <referenceContainer name="form.billing.additional.info">
-        <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me.billing" template="remember_me.phtml" before="-"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.login.additional.info">
+            <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
+        </referenceContainer>
+        <referenceContainer name="form.billing.additional.info">
+            <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me.billing" template="remember_me.phtml" before="-"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Persistent/view/frontend/layout/customer_account_create.xml b/app/code/Magento/Persistent/view/frontend/layout/customer_account_create.xml
index c89a294d03c52e5bf3a5f74ac1ec14f179567eaa..6ef9a38f66dc4b6d5a504c64601195547d29afdc 100644
--- a/app/code/Magento/Persistent/view/frontend/layout/customer_account_create.xml
+++ b/app/code/Magento/Persistent/view/frontend/layout/customer_account_create.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Persistent/view/frontend/layout/customer_account_login.xml b/app/code/Magento/Persistent/view/frontend/layout/customer_account_login.xml
index c89a294d03c52e5bf3a5f74ac1ec14f179567eaa..6ef9a38f66dc4b6d5a504c64601195547d29afdc 100644
--- a/app/code/Magento/Persistent/view/frontend/layout/customer_account_login.xml
+++ b/app/code/Magento/Persistent/view/frontend/layout/customer_account_login.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.additional.info">
-        <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.additional.info">
+            <block class="Magento\Persistent\Block\Form\Remember" name="persistent.remember.me" template="remember_me.phtml" before="-"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/ProductAlert/README.md b/app/code/Magento/ProductAlert/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7d5f51e8699ddf8f42cdfea038738afa724575e9
--- /dev/null
+++ b/app/code/Magento/ProductAlert/README.md
@@ -0,0 +1 @@
+The Magento_ProductAlert module enables product alerts, which allow customers to sign up for emails about product price or stock status change.
diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json
index 6fcaf9d53f00e85283eaa77ab8ab42e35687efed..6f7242980e32cef12cc68b51e37f19d287433cc9 100644
--- a/app/code/Magento/ProductAlert/composer.json
+++ b/app/code/Magento/ProductAlert/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ProductAlert/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/ProductAlert/view/frontend/layout/catalog_product_view.xml
index ed49a6f388f20d363f15ad2cf78f365e12cde7cb..72caa3c3e5dc182cb7ab117a645b6b444e6f2090 100644
--- a/app/code/Magento/ProductAlert/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/ProductAlert/view/frontend/layout/catalog_product_view.xml
@@ -24,26 +24,28 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <referenceBlock name="product.info">
-            <referenceContainer name="alert.urls">
-                <block class="Magento\ProductAlert\Block\Product\View\Price" name="productalert.price" as="productalert_price" template="product/view.phtml">
-                    <action method="setHtmlClass">
-                        <argument name="value" xsi:type="string">price</argument>
-                    </action>
-                    <action method="setSignupLabel">
-                        <argument translate="true" name="value" xsi:type="string">Sign up for price alert</argument>
-                    </action>
-                </block>
-                <block class="Magento\ProductAlert\Block\Product\View\Stock" name="productalert.stock" as="productalert_stock" template="product/view.phtml">
-                    <action method="setHtmlClass">
-                        <argument name="value" xsi:type="string">stock</argument>
-                    </action>
-                    <action method="setSignupLabel">
-                        <argument translate="true" name="value" xsi:type="string">Sign up to be notified when this product is back in stock.</argument>
-                    </action>
-                </block>
-            </referenceContainer>
-        </referenceBlock>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <referenceBlock name="product.info">
+                <referenceContainer name="alert.urls">
+                    <block class="Magento\ProductAlert\Block\Product\View\Price" name="productalert.price" as="productalert_price" template="product/view.phtml">
+                        <action method="setHtmlClass">
+                            <argument name="value" xsi:type="string">price</argument>
+                        </action>
+                        <action method="setSignupLabel">
+                            <argument translate="true" name="value" xsi:type="string">Sign up for price alert</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\ProductAlert\Block\Product\View\Stock" name="productalert.stock" as="productalert_stock" template="product/view.phtml">
+                        <action method="setHtmlClass">
+                            <argument name="value" xsi:type="string">stock</argument>
+                        </action>
+                        <action method="setSignupLabel">
+                            <argument translate="true" name="value" xsi:type="string">Sign up to be notified when this product is back in stock.</argument>
+                        </action>
+                    </block>
+                </referenceContainer>
+            </referenceBlock>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/Recurring.php b/app/code/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/Recurring.php
index def4ed53a11f0501ab9afa9318a968b481f64228..f012fad6e8b805b5faa6a2b70effac1e8ecc4c4a 100644
--- a/app/code/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/Recurring.php
+++ b/app/code/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/Recurring.php
@@ -35,25 +35,17 @@ class Recurring extends \Magento\Catalog\Block\Adminhtml\Form\Renderer\Fieldset\
      */
     protected $_coreRegistry = null;
 
-    /**
-     * @var \Magento\Framework\View\Element\BlockFactory
-     */
-    protected $_blockFactory;
-
     /**
      * @param \Magento\Backend\Block\Template\Context $context
      * @param \Magento\Framework\Registry $registry
-     * @param \Magento\Framework\View\Element\BlockFactory $blockFactory
      * @param array $data
      */
     public function __construct(
         \Magento\Backend\Block\Template\Context $context,
         \Magento\Framework\Registry $registry,
-        \Magento\Framework\View\Element\BlockFactory $blockFactory,
         array $data = array()
     ) {
         $this->_coreRegistry = $registry;
-        $this->_blockFactory = $blockFactory;
         parent::__construct($context, $data);
     }
 
@@ -67,16 +59,20 @@ class Recurring extends \Magento\Catalog\Block\Adminhtml\Form\Renderer\Fieldset\
         $product = $this->_coreRegistry->registry('current_product');
 
         /** @var $formBlock \Magento\RecurringPayment\Block\Adminhtml\Payment\Edit\Form */
-        $formBlock = $this->_blockFactory->createBlock('Magento\RecurringPayment\Block\Adminhtml\Payment\Edit\Form');
-        $formBlock->setNameInLayout('adminhtml_recurring_payment_edit_form');
+        $formBlock = $this->getLayout()->createBlock(
+            'Magento\RecurringPayment\Block\Adminhtml\Payment\Edit\Form',
+            'adminhtml_recurring_payment_edit_form'
+        );
         $formBlock->setParentElement($this->_element);
         $formBlock->setProductEntity($product);
         $output = $formBlock->toHtml();
 
         // make the payment element dependent on is_recurring
         /** @var $dependencies \Magento\Backend\Block\Widget\Form\Element\Dependence */
-        $dependencies = $this->_blockFactory->createBlock('Magento\Backend\Block\Widget\Form\Element\Dependence');
-        $dependencies->setNameInLayout('adminhtml_recurring_payment_edit_form_dependence');
+        $dependencies = $this->getLayout()->createBlock(
+            'Magento\Backend\Block\Widget\Form\Element\Dependence',
+            'adminhtml_recurring_payment_edit_form_dependence'
+        );
         $dependencies->addFieldMap('is_recurring', 'product[is_recurring]');
         $dependencies->addFieldMap($this->_element->getHtmlId(), $this->_element->getName());
         $dependencies->addFieldDependence($this->_element->getName(), 'product[is_recurring]', '1');
diff --git a/app/code/Magento/RecurringPayment/README.md b/app/code/Magento/RecurringPayment/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..10a9fb3883ab9cee4fc3814c267650aa3d84c9b4
--- /dev/null
+++ b/app/code/Magento/RecurringPayment/README.md
@@ -0,0 +1,3 @@
+The Magento_RecurringPayment module provides the ability to set and configure recurring payments on a product.
+When a product is purchased from a store, the customer is redirected to a 3rd-party payment system where a "recurring payment agreement" with the store is signed/authorized by the customer.
+A recurring payment agreement is an agreement between the customer and the store authorized by a payment system. In the payment system, this agreement authorizes the merchant to charge the customer account again in the future according to the recurring payment settings. These are called "recurring payments" in Magento. In the 3rd-party payment system, a recurring payment is an accounting record that captures payments on a regular basis and according to the payment schedule defined in the recurring payment.
diff --git a/app/code/Magento/RecurringPayment/composer.json b/app/code/Magento/RecurringPayment/composer.json
index 8b43ed5290188035d16251ddcb9c85c42bcc6cb4..9b1c2893c7c4fe323851281bf393529e6ce80e09 100644
--- a/app/code/Magento/RecurringPayment/composer.json
+++ b/app/code/Magento/RecurringPayment/composer.json
@@ -3,22 +3,22 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/RecurringPayment/view/adminhtml/layout/customer_index_edit.xml b/app/code/Magento/RecurringPayment/view/adminhtml/layout/customer_index_edit.xml
index 6d6e11bfe25a30173e3d79c9cf3366b2400e0615..87b62e503c4c6585a9d29b5c5cc6a02c7ef58a47 100644
--- a/app/code/Magento/RecurringPayment/view/adminhtml/layout/customer_index_edit.xml
+++ b/app/code/Magento/RecurringPayment/view/adminhtml/layout/customer_index_edit.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_edit_tabs">
-        <action method="addTab">
-            <argument name="name" xsi:type="string">customer_edit_tab_recurring_payment</argument>
-            <argument name="block" xsi:type="string">Magento\RecurringPayment\Block\Adminhtml\Customer\Edit\Tab\RecurringPayment</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_edit_tabs">
+            <action method="addTab">
+                <argument name="name" xsi:type="string">customer_edit_tab_recurring_payment</argument>
+                <argument name="block" xsi:type="string">Magento\RecurringPayment\Block\Adminhtml\Customer\Edit\Tab\RecurringPayment</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_index.xml b/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_index.xml
index d5df221fc1d83f16b9c3af7a73e288210fc87198..787c7bcecaeace5940af882193cfbc46a0bb4359 100644
--- a/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_index.xml
+++ b/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\RecurringPayment\Block\Adminhtml\Payment" name="sales.recurring.payment.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\RecurringPayment\Block\Adminhtml\Payment" name="sales.recurring.payment.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_view.xml b/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_view.xml
index ced7a8926d2bb346573815682efc784dfd809775..a87b96842c974d9f7b075d4d9f6bd13657a25d20 100644
--- a/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_view.xml
+++ b/app/code/Magento/RecurringPayment/view/adminhtml/layout/sales_recurringpayment_view.xml
@@ -23,85 +23,87 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View" name="sales.recurring.payment.view" template="Magento_Backend::widget/view/container.phtml">
-            <action method="setDestElementId">
-                <argument name="value" xsi:type="string">sales_recurring_payment_view</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Backend\Block\Widget\Tabs" name="sales.recurring.payment.view.tabs">
-            <action method="setDestElementId">
-                <argument name="value" xsi:type="string">sales_recurring_payment_view</argument>
-            </action>
-            <action method="setTitle">
-                <argument translate="true" name="value" xsi:type="string">Recurring Payment View</argument>
-            </action>
-            <action method="setId">
-                <argument name="value" xsi:type="string">sales_recurring_payment_view_tabs</argument>
-            </action>
-            <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View\Tab\Info" as="info_tab" name="sales.recurring.payment.tab.info" template="recurring/payment/view.phtml">
-                <block class="Magento\RecurringPayment\Block\Payment\View\Reference" name="sales.recurring.payment.view.general" as="general" group="info_blocks_row_1">
-                    <arguments>
-                        <argument name="view_column" xsi:type="string">1</argument>
-                        <argument translate="true" name="view_label" xsi:type="string">Reference</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\RecurringPayment\Block\Payment\View\Item" name="sales.recurring.payment.view.item" as="item" group="info_blocks_row_1">
-                    <action method="setViewColumn">
-                        <argument name="value" xsi:type="string">2</argument>
-                    </action>
-                    <action method="setViewLabel">
-                        <argument translate="true" name="value" xsi:type="string">Purchased Item</argument>
-                    </action>
-                </block>
-                <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.schedule" as="payment" group="info_blocks_row_2">
-                    <action method="setViewColumn">
-                        <argument name="value" xsi:type="string">1</argument>
-                    </action>
-                    <action method="setViewLabel">
-                        <argument translate="true" name="value" xsi:type="string">Payment Schedule</argument>
-                    </action>
-                </block>
-                <block class="Magento\RecurringPayment\Block\Payment\View\Fees" name="sales.recurring.payment.view.fees" as="fees" group="info_blocks_row_2">
-                    <action method="setViewColumn">
-                        <argument name="value" xsi:type="string">2</argument>
-                    </action>
-                    <action method="setViewLabel">
-                        <argument translate="true" name="value" xsi:type="string">Payments</argument>
-                    </action>
-                </block>
-                <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.billing" as="billing_address" group="info_blocks_row_3">
-                    <action method="setViewColumn">
-                        <argument name="value" xsi:type="string">1</argument>
-                    </action>
-                    <action method="setViewLabel">
-                        <argument translate="true" name="value" xsi:type="string">Billing Address</argument>
-                    </action>
-                </block>
-                <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.shipping" as="shipping_address" group="info_blocks_row_3">
-                    <action method="setAddressType">
-                        <argument name="value" xsi:type="string">shipping</argument>
-                    </action>
-                    <action method="setViewColumn">
-                        <argument name="value" xsi:type="string">2</argument>
-                    </action>
-                    <action method="setViewLabel">
-                        <argument translate="true" name="value" xsi:type="string">Shipping Address</argument>
-                    </action>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View" name="sales.recurring.payment.view" template="Magento_Backend::widget/view/container.phtml">
+                <action method="setDestElementId">
+                    <argument name="value" xsi:type="string">sales_recurring_payment_view</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Backend\Block\Widget\Tabs" name="sales.recurring.payment.view.tabs">
+                <action method="setDestElementId">
+                    <argument name="value" xsi:type="string">sales_recurring_payment_view</argument>
+                </action>
+                <action method="setTitle">
+                    <argument translate="true" name="value" xsi:type="string">Recurring Payment View</argument>
+                </action>
+                <action method="setId">
+                    <argument name="value" xsi:type="string">sales_recurring_payment_view_tabs</argument>
+                </action>
+                <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View\Tab\Info" as="info_tab" name="sales.recurring.payment.tab.info" template="recurring/payment/view.phtml">
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Reference" name="sales.recurring.payment.view.general" as="general" group="info_blocks_row_1">
+                        <arguments>
+                            <argument name="view_column" xsi:type="string">1</argument>
+                            <argument translate="true" name="view_label" xsi:type="string">Reference</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Item" name="sales.recurring.payment.view.item" as="item" group="info_blocks_row_1">
+                        <action method="setViewColumn">
+                            <argument name="value" xsi:type="string">2</argument>
+                        </action>
+                        <action method="setViewLabel">
+                            <argument translate="true" name="value" xsi:type="string">Purchased Item</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.schedule" as="payment" group="info_blocks_row_2">
+                        <action method="setViewColumn">
+                            <argument name="value" xsi:type="string">1</argument>
+                        </action>
+                        <action method="setViewLabel">
+                            <argument translate="true" name="value" xsi:type="string">Payment Schedule</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Fees" name="sales.recurring.payment.view.fees" as="fees" group="info_blocks_row_2">
+                        <action method="setViewColumn">
+                            <argument name="value" xsi:type="string">2</argument>
+                        </action>
+                        <action method="setViewLabel">
+                            <argument translate="true" name="value" xsi:type="string">Payments</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.billing" as="billing_address" group="info_blocks_row_3">
+                        <action method="setViewColumn">
+                            <argument name="value" xsi:type="string">1</argument>
+                        </action>
+                        <action method="setViewLabel">
+                            <argument translate="true" name="value" xsi:type="string">Billing Address</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.shipping" as="shipping_address" group="info_blocks_row_3">
+                        <action method="setAddressType">
+                            <argument name="value" xsi:type="string">shipping</argument>
+                        </action>
+                        <action method="setViewColumn">
+                            <argument name="value" xsi:type="string">2</argument>
+                        </action>
+                        <action method="setViewLabel">
+                            <argument translate="true" name="value" xsi:type="string">Shipping Address</argument>
+                        </action>
+                    </block>
                 </block>
+                <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View\Tab\Orders" as="orders_tab" name="sales.recurring.payment.tab.orders"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">recurring_payment_info</argument>
+                    <argument name="block" xsi:type="string">info_tab</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">recurring_payment_orders</argument>
+                    <argument name="block" xsi:type="string">orders_tab</argument>
+                </action>
             </block>
-            <block class="Magento\RecurringPayment\Block\Adminhtml\Payment\View\Tab\Orders" as="orders_tab" name="sales.recurring.payment.tab.orders"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">recurring_payment_info</argument>
-                <argument name="block" xsi:type="string">info_tab</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">recurring_payment_orders</argument>
-                <argument name="block" xsi:type="string">orders_tab</argument>
-            </action>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/catalog_product_view.xml
index 9037e2751a0112fcf7277fd182b6dbaaf9625a2d..e58dc9fa7964fcb1eeeb7e4f79c7b990666713fe 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/catalog_product_view.xml
@@ -24,14 +24,16 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product.info.main">
-        <block class="Magento\RecurringPayment\Block\Catalog\Product\View\Payment" name="product.info.additional.recurring.schedule" as="recurring_info" template="catalog/product/view/payment/schedule.phtml" group="detailed_info">
-            <action method="setTitle">
-                <argument translate="true" name="value" xsi:type="string">Recurring Payment</argument>
-            </action>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\RecurringPayment\Block\Catalog\Product\View\Payment" name="product.info.options.recurring" as="recurring_options" template="catalog/product/view/payment/options.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product.info.main">
+            <block class="Magento\RecurringPayment\Block\Catalog\Product\View\Payment" name="product.info.additional.recurring.schedule" as="recurring_info" template="catalog/product/view/payment/schedule.phtml" group="detailed_info">
+                <action method="setTitle">
+                    <argument translate="true" name="value" xsi:type="string">Recurring Payment</argument>
+                </action>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\RecurringPayment\Block\Catalog\Product\View\Payment" name="product.info.options.recurring" as="recurring_options" template="catalog/product/view/payment/options.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/checkout_onepage_success.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/checkout_onepage_success.xml
index a9265e0f550762487d75f676ee828f395cc0b3b8..e5418e0e17efa94b7ce93ec1ec4e0d721e2b9c12 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/checkout_onepage_success.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/checkout_onepage_success.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="order.success.additional.info">
-        <block class="Magento\RecurringPayment\Block\Checkout\Onepage\Success" name="onepage-success-recurring-payment" template="checkout/onepage/success.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="order.success.additional.info">
+            <block class="Magento\RecurringPayment\Block\Checkout\Onepage\Success" name="onepage-success-recurring-payment" template="checkout/onepage/success.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/customer_account.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/customer_account.xml
index 987e9bca14e34e6c40f2e669357b9ecfead3d47c..7185cf8736c0c9cd5c1a8707d4b4cdc5ad446d01 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/customer_account.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-recurring-payments-link" after="customer-account-navigation-orders-link">
-            <arguments>
-                <argument name="path" xsi:type="string">sales/recurringPayment</argument>
-                <argument name="label" xsi:type="string">Recurring Payments</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-recurring-payments-link" after="customer-account-navigation-orders-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">sales/recurringPayment</argument>
+                    <argument name="label" xsi:type="string">Recurring Payments</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_index.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_index.xml
index f9a20db41861381a87ea88d2b92b795ce9fe795b..17cf9a35d589ae0f4a2985cb5d7cc5c59736e8a9 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_index.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_index.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="customer_account"/>
     <head>
         <title>Recurring Payments</title>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\RecurringPayment\Block\Payments" name="sales.recurring.payments" template="recurring/payments.phtml" cacheable="false">
-            <block class="Magento\RecurringPayment\Block\Payment\Grid" name="sales.recurring.payments.grid" as="grid" template="recurring/grid.phtml" cacheable="false">
-                <action method="setEmptyGridMessage">
-                    <argument translate="true" name="value" xsi:type="string">There are no recurring payments yet.</argument>
-                </action>
-                <action method="setGridHtmlId">
-                    <argument name="value" xsi:type="string">recurring_payment_list_view</argument>
-                </action>
+    <update handle="customer_account"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\RecurringPayment\Block\Payments" name="sales.recurring.payments" template="recurring/payments.phtml" cacheable="false">
+                <block class="Magento\RecurringPayment\Block\Payment\Grid" name="sales.recurring.payments.grid" as="grid" template="recurring/grid.phtml" cacheable="false">
+                    <action method="setEmptyGridMessage">
+                        <argument translate="true" name="value" xsi:type="string">There are no recurring payments yet.</argument>
+                    </action>
+                    <action method="setGridHtmlId">
+                        <argument name="value" xsi:type="string">recurring_payment_list_view</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_orders.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_orders.xml
index e7f6dcc101404b64df3fdb21d3d18208bf6f297d..c76dd86a8ff6f9f039ad4ac46ae080918b6b2826 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_orders.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_orders.xml
@@ -26,25 +26,27 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
     <update handle="sales_recurringpayment_view__tabs"/>
-    <referenceBlock name="sales.recurring.payment.view.tab.orders">
-        <action method="setIsViewCurrent">
-            <argument name="v" xsi:type="string">1</argument>
-        </action>
-    </referenceBlock>
-    <referenceBlock name="sales.recurring.payment.view">
-        <block class="Magento\RecurringPayment\Block\Payment\Related\Orders\Grid" name="sales.recurring.payment.view.orders" as="table" template="recurring/grid.phtml" cacheable="false">
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Orders Based on This Payment</argument>
+    <body>
+        <referenceBlock name="sales.recurring.payment.view.tab.orders">
+            <action method="setIsViewCurrent">
+                <argument name="v" xsi:type="string">1</argument>
             </action>
-            <action method="setEmptyGridMessage">
-                <argument translate="true" name="value" xsi:type="string">There are no orders yet.</argument>
-            </action>
-            <action method="setGridHtmlClass">
-                <argument name="value" xsi:type="string">info-box</argument>
-            </action>
-            <action method="setGridHtmlCss">
-                <argument name="value" xsi:type="string">border:0</argument>
-            </action>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+        <referenceBlock name="sales.recurring.payment.view">
+            <block class="Magento\RecurringPayment\Block\Payment\Related\Orders\Grid" name="sales.recurring.payment.view.orders" as="table" template="recurring/grid.phtml" cacheable="false">
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Orders Based on This Payment</argument>
+                </action>
+                <action method="setEmptyGridMessage">
+                    <argument translate="true" name="value" xsi:type="string">There are no orders yet.</argument>
+                </action>
+                <action method="setGridHtmlClass">
+                    <argument name="value" xsi:type="string">info-box</argument>
+                </action>
+                <action method="setGridHtmlCss">
+                    <argument name="value" xsi:type="string">border:0</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view.xml
index 55975d5e8eb2d0cd4726bc7fe8b66f2fe1abeb20..14a5344319014491047a41821235d8d2bce2d195 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view.xml
@@ -26,62 +26,64 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
     <update handle="sales_recurringpayment_view__tabs"/>
-    <referenceBlock name="sales.recurring.payment.view.tab.payment">
-        <action method="setIsViewCurrent">
-            <argument name="v" xsi:type="string">1</argument>
-        </action>
-    </referenceBlock>
-    <referenceBlock name="sales.recurring.payment.view">
-        <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.general" as="general" template="recurring/payment/view/info.phtml" group="info_blocks_row_1">
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">1</argument>
+    <body>
+        <referenceBlock name="sales.recurring.payment.view.tab.payment">
+            <action method="setIsViewCurrent">
+                <argument name="v" xsi:type="string">1</argument>
             </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Reference</argument>
-            </action>
-        </block>
-        <block class="Magento\RecurringPayment\Block\Payment\View\Item" name="sales.recurring.payment.view.item" as="item" template="recurring/payment/view/info.phtml" group="info_blocks_row_1">
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">2</argument>
-            </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Purchased Item</argument>
-            </action>
-        </block>
-        <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.schedule" as="payment" template="recurring/payment/view/info.phtml" group="info_blocks_row_2">
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">1</argument>
-            </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Payment Schedule</argument>
-            </action>
-        </block>
-        <block class="Magento\RecurringPayment\Block\Payment\View\Fees" name="sales.recurring.payment.view.fees" as="fees" template="recurring/payment/view/info.phtml" group="info_blocks_row_2">
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">2</argument>
-            </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Payments</argument>
-            </action>
-        </block>
-        <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.billing" as="billing_address" template="recurring/payment/view/info.phtml" group="info_blocks_row_3">
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">1</argument>
-            </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Billing Address</argument>
-            </action>
-        </block>
-        <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.shipping" as="shipping_address" template="recurring/payment/view/info.phtml" group="info_blocks_row_3">
-            <action method="setAddressType">
-                <argument name="value" xsi:type="string">shipping</argument>
-            </action>
-            <action method="setViewColumn">
-                <argument name="value" xsi:type="string">2</argument>
-            </action>
-            <action method="setViewLabel">
-                <argument translate="true" name="value" xsi:type="string">Shipping Address</argument>
-            </action>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+        <referenceBlock name="sales.recurring.payment.view">
+            <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.general" as="general" template="recurring/payment/view/info.phtml" group="info_blocks_row_1">
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">1</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Reference</argument>
+                </action>
+            </block>
+            <block class="Magento\RecurringPayment\Block\Payment\View\Item" name="sales.recurring.payment.view.item" as="item" template="recurring/payment/view/info.phtml" group="info_blocks_row_1">
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">2</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Purchased Item</argument>
+                </action>
+            </block>
+            <block class="Magento\RecurringPayment\Block\Payment\View\Schedule" name="sales.recurring.payment.view.schedule" as="payment" template="recurring/payment/view/info.phtml" group="info_blocks_row_2">
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">1</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Payment Schedule</argument>
+                </action>
+            </block>
+            <block class="Magento\RecurringPayment\Block\Payment\View\Fees" name="sales.recurring.payment.view.fees" as="fees" template="recurring/payment/view/info.phtml" group="info_blocks_row_2">
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">2</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Payments</argument>
+                </action>
+            </block>
+            <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.billing" as="billing_address" template="recurring/payment/view/info.phtml" group="info_blocks_row_3">
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">1</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Billing Address</argument>
+                </action>
+            </block>
+            <block class="Magento\RecurringPayment\Block\Payment\View\Address" name="sales.recurring.payment.view.shipping" as="shipping_address" template="recurring/payment/view/info.phtml" group="info_blocks_row_3">
+                <action method="setAddressType">
+                    <argument name="value" xsi:type="string">shipping</argument>
+                </action>
+                <action method="setViewColumn">
+                    <argument name="value" xsi:type="string">2</argument>
+                </action>
+                <action method="setViewLabel">
+                    <argument translate="true" name="value" xsi:type="string">Shipping Address</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view__tabs.xml b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view__tabs.xml
index 4b69a859b4ded30e164f09bdc26945574de8833c..5575c013b045e1f42fd0ce01aca9d4209c851d21 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view__tabs.xml
+++ b/app/code/Magento/RecurringPayment/view/frontend/layout/sales_recurringpayment_view__tabs.xml
@@ -23,28 +23,30 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Recurring Profile View Tabs" design_abstraction="custom">
-    <referenceContainer name="content">
-        <block class="Magento\RecurringPayment\Block\Payment\View\Data" name="sales.recurring.payment.view" template="recurring/payment/view.phtml">
-            <action method="setShouldPrepareInfoTabs">
-                <argument name="value" xsi:type="string">1</argument>
-            </action>
-            <block class="Magento\Framework\View\Element\Text" as="payment_info" name="sales.recurring.payment.view.tab.payment" group="info_tabs">
-                <action method="setViewLabel">
-                    <argument translate="true" name="value" xsi:type="string">Payment Information</argument>
-                </action>
-                <action method="setViewAction">
-                    <argument name="value" xsi:type="string">view</argument>
-                </action>
-            </block>
-            <block class="Magento\Framework\View\Element\Text" as="related_orders" name="sales.recurring.payment.view.tab.orders" group="info_tabs">
-                <action method="setViewLabel">
-                    <argument translate="true" name="value" xsi:type="string">Related Orders</argument>
-                </action>
-                <action method="setViewAction">
-                    <argument name="value" xsi:type="string">orders</argument>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Recurring Profile View Tabs" design_abstraction="custom">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\RecurringPayment\Block\Payment\View\Data" name="sales.recurring.payment.view" template="recurring/payment/view.phtml">
+                <action method="setShouldPrepareInfoTabs">
+                    <argument name="value" xsi:type="string">1</argument>
                 </action>
+                <block class="Magento\Framework\View\Element\Text" as="payment_info" name="sales.recurring.payment.view.tab.payment" group="info_tabs">
+                    <action method="setViewLabel">
+                        <argument translate="true" name="value" xsi:type="string">Payment Information</argument>
+                    </action>
+                    <action method="setViewAction">
+                        <argument name="value" xsi:type="string">view</argument>
+                    </action>
+                </block>
+                <block class="Magento\Framework\View\Element\Text" as="related_orders" name="sales.recurring.payment.view.tab.orders" group="info_tabs">
+                    <action method="setViewLabel">
+                        <argument translate="true" name="value" xsi:type="string">Related Orders</argument>
+                    </action>
+                    <action method="setViewAction">
+                        <argument name="value" xsi:type="string">orders</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/grid.phtml b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/grid.phtml
index 6d2199a981f6197ceede332bacc72d8be98d7c45..5b6725a76b3e31d1c7122ad1a6c96c24492edc4e 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/grid.phtml
+++ b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/grid.phtml
@@ -34,7 +34,7 @@
     <?php if ($gridElements): ?>
         <div class="table-wrapper recurring-payments">
             <table id="<?php echo $this->getGridHtmlId() ?>" class="data table table-recurring-payments">
-                <caption class="table caption"><?php echo __('Recurring Payments') ?></caption>
+                <caption class="table-caption"><?php echo __('Recurring Payments') ?></caption>
                 <thead>
                 <tr>
                     <?php foreach ($this->getGridColumns() as $column):
diff --git a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
index f2187e9784f38b3222dbef52534ec30fa2981497..3ca312b08e5a5e7676a928e99f46719bb39594cb 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
+++ b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
@@ -32,11 +32,12 @@
 <?php else: ?>
 
     <table class="data table">
+        <caption class="table-caption"><?php echo __('Recurring Payment'); ?></caption>
         <tbody>
         <?php foreach ($this->getRenderedInfo() as $row): ?>
             <?php $isAmount = $this->getObjectData($row, 'is_amount'); ?>
             <tr>
-                <th class="col label"><?php echo $this->escapeHtml($this->getObjectData($row, 'label')) ?>:</th>
+                <th class="col label" scope="row"><?php echo $this->escapeHtml($this->getObjectData($row, 'label')) ?>:</th>
                 <td class="col value"><?php echo $this->renderRowValue($row) ?></td>
             </tr>
         <?php endforeach; ?>
diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json
index 3f4f88a41fbae32f67c30e0757356ecef9e3518a..05576ea8e8b06ffccdbc86dd377b772276a8a586 100644
--- a/app/code/Magento/Reports/composer.json
+++ b/app/code/Magento/Reports/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-log": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-review": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-downloadable": "0.1.0-alpha101",
-        "magento/module-sales-rule": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-log": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-review": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-downloadable": "0.1.0-alpha102",
+        "magento/module-sales-rule": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchcsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchcsv.xml
index b9b1f1eec7ad87e3b3e3763f9c3508dcd8d0fddd..cca5895ac9f73fc53e7f4e5d12466b79fb79ebe2 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchcsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchcsv.xml
@@ -26,5 +26,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="reports_index_search_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="report.search.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="report.search.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchexcel.xml
index b9b1f1eec7ad87e3b3e3763f9c3508dcd8d0fddd..cca5895ac9f73fc53e7f4e5d12466b79fb79ebe2 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_exportsearchexcel.xml
@@ -26,5 +26,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="reports_index_search_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="report.search.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="report.search.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search.xml
index ca9c14e82de61faee1820e506227a17e886d109b..1e2322f2c68db6e1656d18cb7ae4b8d815298e7a 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_index_search_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Search" name="report.search.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Search" name="report.search.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search_block.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search_block.xml
index e90d4cf4d31144f4cff4242bb6d124d74e71cbf5..4712b7d6c24887b14bd170150d6254a6dda4faa5 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search_block.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_index_search_block.xml
@@ -24,86 +24,88 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="report.search.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.report.search.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">searchReportGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Search\Model\Resource\Query\Collection</argument>
-                <argument name="default_sort" xsi:type="string">query_id</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.report.search.grid.export" as="grid.export">
+    <body>
+        <referenceBlock name="report.search.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.report.search.grid" as="grid">
                 <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportSearchCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportSearchExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">searchReportGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Search\Model\Resource\Query\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">query_id</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.report.search.grid.columnSet">
-                <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">catalog/search/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="query_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">query_id</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="query_text">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Search Query</argument>
-                        <argument name="index" xsi:type="string">query_text</argument>
-                        <argument name="column_css_class" xsi:type="string">col-query</argument>
-                        <argument name="header_css_class" xsi:type="string">col-query</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                        <argument name="type" xsi:type="string">store</argument>
-                        <argument name="store_all" xsi:type="string">1</argument>
-                        <argument name="store_view" xsi:type="string">1</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="column_css_class" xsi:type="string">col-store</argument>
-                        <argument name="header_css_class" xsi:type="string">col-store</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="num_results">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.report.search.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Results</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">num_results</argument>
-                        <argument name="column_css_class" xsi:type="string">col-results</argument>
-                        <argument name="header_css_class" xsi:type="string">col-results</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportSearchCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportSearchExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="popularity">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.report.search.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Hits</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">popularity</argument>
-                        <argument name="column_css_class" xsi:type="string">col-hits</argument>
-                        <argument name="header_css_class" xsi:type="string">col-hits</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">catalog/search/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="query_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">query_id</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="query_text">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Search Query</argument>
+                            <argument name="index" xsi:type="string">query_text</argument>
+                            <argument name="column_css_class" xsi:type="string">col-query</argument>
+                            <argument name="header_css_class" xsi:type="string">col-query</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                            <argument name="type" xsi:type="string">store</argument>
+                            <argument name="store_all" xsi:type="string">1</argument>
+                            <argument name="store_view" xsi:type="string">1</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="column_css_class" xsi:type="string">col-store</argument>
+                            <argument name="header_css_class" xsi:type="string">col-store</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="num_results">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Results</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">num_results</argument>
+                            <argument name="column_css_class" xsi:type="string">col-results</argument>
+                            <argument name="header_css_class" xsi:type="string">col-results</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="popularity">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Hits</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">popularity</argument>
+                            <argument name="column_css_class" xsi:type="string">col-hits</argument>
+                            <argument name="header_css_class" xsi:type="string">col-hits</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts.xml
index dc5c3300bba727e2940c476479467f355f05830b..ff7724428081079c36cbcd55df2505a99144d140 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_accounts_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Customer\Accounts" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Customer\Accounts" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts_grid.xml
index 7a6615b043ebb99f299ff3772c010f84b9620fbe..3616c7d401608e7bcb02954dc2a15ca03ced393a 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_accounts_grid.xml
@@ -25,39 +25,41 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_grid"/>
-    <referenceBlock name="adminhtml.report.grid">
-        <arguments>
-            <argument name="id" xsi:type="string">gridAccounts</argument>
-            <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Accounts\Collection\Initial</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.export">
-        <arguments>
-            <argument name="exportTypes" xsi:type="array">
-                <item name="csv" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportAccountsCsv</item>
-                </item>
-                <item name="excel" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportAccountsExcel</item>
-                </item>
-            </argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.columnSet">
-        <arguments>
-            <argument name="id" xsi:type="string">gridAccounts</argument>
-            <argument name="count_totals" xsi:type="string">1</argument>
-        </arguments>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="accounts">
+    <body>
+        <referenceBlock name="adminhtml.report.grid">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">New Accounts</argument>
-                <argument name="index" xsi:type="string">accounts</argument>
-                <argument name="total" xsi:type="string">sum</argument>
-                <argument name="type" xsi:type="string">number</argument>
-                <argument name="id" xsi:type="string">accounts</argument>
-                <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                <argument name="id" xsi:type="string">gridAccounts</argument>
+                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Accounts\Collection\Initial</argument>
             </arguments>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.export">
+            <arguments>
+                <argument name="exportTypes" xsi:type="array">
+                    <item name="csv" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportAccountsCsv</item>
+                    </item>
+                    <item name="excel" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportAccountsExcel</item>
+                    </item>
+                </argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.columnSet">
+            <arguments>
+                <argument name="id" xsi:type="string">gridAccounts</argument>
+                <argument name="count_totals" xsi:type="string">1</argument>
+            </arguments>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="accounts">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">New Accounts</argument>
+                    <argument name="index" xsi:type="string">accounts</argument>
+                    <argument name="total" xsi:type="string">sum</argument>
+                    <argument name="type" xsi:type="string">number</argument>
+                    <argument name="id" xsi:type="string">accounts</argument>
+                    <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                    <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountscsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountscsv.xml
index aa603eb031ff3c99ad4758563230294f0c5668f2..395905174c3fd3b7e55a5a3f641f63b8bf5e0197 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountscsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountscsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_accounts_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountsexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountsexcel.xml
index aa603eb031ff3c99ad4758563230294f0c5668f2..395905174c3fd3b7e55a5a3f641f63b8bf5e0197 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountsexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportaccountsexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_accounts_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportorderscsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportorderscsv.xml
index 3f1505d423fe6d90e2e4a05be7d1b6b516dc7627..b51443e08bff20138469774e223c135f6946f80a 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportorderscsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportorderscsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_orders_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportordersexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportordersexcel.xml
index 3f1505d423fe6d90e2e4a05be7d1b6b516dc7627..b51443e08bff20138469774e223c135f6946f80a 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportordersexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exportordersexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_orders_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalscsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalscsv.xml
index 6959239f251318941c61b6892a2bf1b2838d0b2a..19c4cc08eb1e9ba24037d5da84f6929b49f628c6 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalscsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalscsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_totals_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalsexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalsexcel.xml
index 6959239f251318941c61b6892a2bf1b2838d0b2a..19c4cc08eb1e9ba24037d5da84f6929b49f628c6 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalsexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_exporttotalsexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_totals_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders.xml
index 305ee1396cceba3b8e2ada0983121be1d859e27d..0390d6de7a52f65a21f6b3826c283456c6f0b7e3 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_orders_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Customer\Orders" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Customer\Orders" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders_grid.xml
index c5026a3b0a78545b9ee1bc98fcfb9af45e5821f0..9678f7801641a9531e82c126f025f7acc10cb3cf 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_orders_grid.xml
@@ -25,74 +25,76 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_grid"/>
-    <referenceBlock name="adminhtml.report.grid">
-        <arguments>
-            <argument name="id" xsi:type="string">gridOrdersCustomer</argument>
-            <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Customer\Orders\Collection\Initial</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.export">
-        <arguments>
-            <argument name="exportTypes" xsi:type="array">
-                <item name="csv" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportOrdersCsv</item>
-                </item>
-                <item name="excel" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportOrdersExcel</item>
-                </item>
-            </argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.columnSet">
-        <arguments>
-            <argument name="count_totals" xsi:type="string">1</argument>
-        </arguments>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+    <body>
+        <referenceBlock name="adminhtml.report.grid">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">Customer</argument>
-                <argument name="sortable" xsi:type="string">0</argument>
-                <argument name="type" xsi:type="string">text</argument>
-                <argument name="index" xsi:type="string">name</argument>
-                <argument name="id" xsi:type="string">name</argument>
-                <argument name="column_css_class" xsi:type="string">col-name</argument>
-                <argument name="header_css_class" xsi:type="string">col-name</argument>
+                <argument name="id" xsi:type="string">gridOrdersCustomer</argument>
+                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Customer\Orders\Collection\Initial</argument>
             </arguments>
-        </block>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_count">
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.export">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">Orders</argument>
-                <argument name="sortable" xsi:type="string">0</argument>
-                <argument name="type" xsi:type="string">number</argument>
-                <argument name="index" xsi:type="string">orders_count</argument>
-                <argument name="total" xsi:type="string">sum</argument>
-                <argument name="id" xsi:type="string">orders_count</argument>
-                <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                <argument name="exportTypes" xsi:type="array">
+                    <item name="csv" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportOrdersCsv</item>
+                    </item>
+                    <item name="excel" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportOrdersExcel</item>
+                    </item>
+                </argument>
             </arguments>
-        </block>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_avg_amount">
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.columnSet">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">Average</argument>
-                <argument name="sortable" xsi:type="string">0</argument>
-                <argument name="type" xsi:type="string">currency</argument>
-                <argument name="total" xsi:type="string">orders_sum_amount/orders_count</argument>
-                <argument name="index" xsi:type="string">orders_avg_amount</argument>
-                <argument name="id" xsi:type="string">orders_avg_amount</argument>
-                <argument name="column_css_class" xsi:type="string">col-average</argument>
-                <argument name="header_css_class" xsi:type="string">col-average</argument>
+                <argument name="count_totals" xsi:type="string">1</argument>
             </arguments>
-        </block>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_sum_amount">
-            <arguments>
-                <argument name="header" xsi:type="string" translate="true">Total</argument>
-                <argument name="sortable" xsi:type="string">0</argument>
-                <argument name="type" xsi:type="string">currency</argument>
-                <argument name="total" xsi:type="string">sum</argument>
-                <argument name="index" xsi:type="string">orders_sum_amount</argument>
-                <argument name="id" xsi:type="string">orders_sum_amount</argument>
-                <argument name="column_css_class" xsi:type="string">col-total</argument>
-                <argument name="header_css_class" xsi:type="string">col-total</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Customer</argument>
+                    <argument name="sortable" xsi:type="string">0</argument>
+                    <argument name="type" xsi:type="string">text</argument>
+                    <argument name="index" xsi:type="string">name</argument>
+                    <argument name="id" xsi:type="string">name</argument>
+                    <argument name="column_css_class" xsi:type="string">col-name</argument>
+                    <argument name="header_css_class" xsi:type="string">col-name</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_count">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Orders</argument>
+                    <argument name="sortable" xsi:type="string">0</argument>
+                    <argument name="type" xsi:type="string">number</argument>
+                    <argument name="index" xsi:type="string">orders_count</argument>
+                    <argument name="total" xsi:type="string">sum</argument>
+                    <argument name="id" xsi:type="string">orders_count</argument>
+                    <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                    <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_avg_amount">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Average</argument>
+                    <argument name="sortable" xsi:type="string">0</argument>
+                    <argument name="type" xsi:type="string">currency</argument>
+                    <argument name="total" xsi:type="string">orders_sum_amount/orders_count</argument>
+                    <argument name="index" xsi:type="string">orders_avg_amount</argument>
+                    <argument name="id" xsi:type="string">orders_avg_amount</argument>
+                    <argument name="column_css_class" xsi:type="string">col-average</argument>
+                    <argument name="header_css_class" xsi:type="string">col-average</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="orders_sum_amount">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Total</argument>
+                    <argument name="sortable" xsi:type="string">0</argument>
+                    <argument name="type" xsi:type="string">currency</argument>
+                    <argument name="total" xsi:type="string">sum</argument>
+                    <argument name="index" xsi:type="string">orders_sum_amount</argument>
+                    <argument name="id" xsi:type="string">orders_sum_amount</argument>
+                    <argument name="column_css_class" xsi:type="string">col-total</argument>
+                    <argument name="header_css_class" xsi:type="string">col-total</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals.xml
index 4e82fd2f2e6c13a4a96de26f4201c7ea4205d3e5..af4b2edd2b61259ccaf892577d8b3ea86dc09022 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_totals_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Customer\Totals" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Customer\Totals" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals_grid.xml
index a89a6863c422757e149eaeae652a001100232667..24319e03833a71bbf7a35a1f8e51fccfe87601c2 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_customer_totals_grid.xml
@@ -25,28 +25,30 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_customer_orders_grid"/>
-    <referenceBlock name="adminhtml.report.grid">
-        <arguments>
-            <argument name="id" xsi:type="string">gridTotalsCustomer</argument>
-            <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Customer\Totals\Collection\Initial</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.export">
-        <arguments>
-            <argument name="exportTypes" xsi:type="array">
-                <item name="csv" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportTotalsCsv</item>
-                </item>
-                <item name="excel" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportTotalsExcel</item>
-                </item>
-            </argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.columnSet">
-        <arguments>
-            <argument name="count_totals" xsi:type="string">1</argument>
-            <argument name="id" xsi:type="string">gridTotalsCustomerSet</argument>
-        </arguments>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="adminhtml.report.grid">
+            <arguments>
+                <argument name="id" xsi:type="string">gridTotalsCustomer</argument>
+                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Customer\Totals\Collection\Initial</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.export">
+            <arguments>
+                <argument name="exportTypes" xsi:type="array">
+                    <item name="csv" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportTotalsCsv</item>
+                    </item>
+                    <item name="excel" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportTotalsExcel</item>
+                    </item>
+                </argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.columnSet">
+            <arguments>
+                <argument name="count_totals" xsi:type="string">1</argument>
+                <argument name="id" xsi:type="string">gridTotalsCustomerSet</argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_grid.xml
index 239da5a69d54affd3c5afe53245402fae363b1bf..2f164a7eb175e0b69b136202b5a50cca7fa23517 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_grid.xml
@@ -24,64 +24,64 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="adminhtml.report.grid.store_switcher"
-               as="store_switcher">
-            <arguments>
-                <argument name="use_confirm" xsi:type="string">0</argument>
-                <argument name="switch_url" xsi:type="url" path="*/*/*">
-                    <param name="store">null</param>
-                </argument>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="adminhtml.report.grid.container">
-        <block class="Magento\Reports\Block\Adminhtml\Grid" name="adminhtml.report.grid" as="grid">
-            <arguments>
-                <argument name="use_ajax" xsi:type="string">0</argument>
-                <argument name="pager_visibility" xsi:type="string">0</argument>
-                <argument name="id" xsi:type="string">gridReport</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Report\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.report.grid.export" as="grid.export">
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="adminhtml.report.grid.store_switcher" as="store_switcher">
                 <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
+                    <argument name="use_confirm" xsi:type="string">0</argument>
+                    <argument name="switch_url" xsi:type="url" path="*/*/*">
+                        <param name="store">null</param>
                     </argument>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
                 </arguments>
             </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.report.grid.columnSet">
+        </referenceContainer>
+        <referenceBlock name="adminhtml.report.grid.container">
+            <block class="Magento\Reports\Block\Adminhtml\Grid" name="adminhtml.report.grid" as="grid">
                 <arguments>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
-                    <argument name="empty_text" xsi:type="string" translate="true">We couldn't find records for this period.</argument>
-                    <argument name="empty_cell_label" xsi:type="string" translate="true">We couldn't find records for this period.</argument>
+                    <argument name="use_ajax" xsi:type="string">0</argument>
+                    <argument name="pager_visibility" xsi:type="string">0</argument>
+                    <argument name="id" xsi:type="string">gridReport</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Report\Collection</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="period">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.report.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Interval</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="id" xsi:type="string">period</argument>
-                        <argument name="index" xsi:type="string">period</argument>
-                        <argument name="grouped" xsi:type="string">1</argument>
-                        <argument name="totals_label" xsi:type="string" translate="true">Total</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.report.grid.columnSet">
+                    <arguments>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
+                        <argument name="empty_text" xsi:type="string" translate="true">We couldn't find records for this period.</argument>
+                        <argument name="empty_cell_label" xsi:type="string" translate="true">We couldn't find records for this period.</argument>
+                    </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="period">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Interval</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="id" xsi:type="string">period</argument>
+                            <argument name="index" xsi:type="string">period</argument>
+                            <argument name="grouped" xsi:type="string">1</argument>
+                            <argument name="totals_label" xsi:type="string" translate="true">Total</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_downloads.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_downloads.xml
index 6b356004ad84a1e1dc52ee56104df65522194e76..2db658f6f6a51f0e5ba17702ef3ebe621230a5b8 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_downloads.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_downloads.xml
@@ -24,20 +24,20 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="adminhtml.report.product.downloads.store_switcher"
-               template="Magento_Backend::store/switcher.phtml">
-            <arguments>
-                <argument name="use_confirm" xsi:type="string">0</argument>
-                <argument name="switch_url" xsi:type="url" path="*/*/*">
-                    <param name="store">null</param>
-                </argument>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="adminhtml.report.product.downloads.store_switcher" template="Magento_Backend::store/switcher.phtml">
+                <arguments>
+                    <argument name="use_confirm" xsi:type="string">0</argument>
+                    <argument name="switch_url" xsi:type="url" path="*/*/*">
+                        <param name="store">null</param>
+                    </argument>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockcsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockcsv.xml
index 9ead95eb9f0d95ce7753a56a685284ad8e286692..f43e643da40b0376bfde8b496e636fb156d69d8b 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockcsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_lowstock_grid"/>
-    <container name="adminhtml.block.report.product.lowstock.grid.container" label="Export CSV"/>
+    <body>
+        <container name="adminhtml.block.report.product.lowstock.grid.container" label="Export CSV"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockexcel.xml
index 0016d74d32a435ff6d5b5b8cf34d3603271de435..97f8d93df61eb66b2d3445d3eccd149993c9ab64 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportlowstockexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_lowstock_grid"/>
-    <container name="adminhtml.block.report.product.lowstock.grid.container" label="Excel XML"/>
+    <body>
+        <container name="adminhtml.block.report.product.lowstock.grid.container" label="Excel XML"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldcsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldcsv.xml
index e754cd343398d563a3b7b704a20d4cbbe9191416..7e6d04453c07893486dee9eecc9df1aafe04bfde 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldcsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_sold_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldexcel.xml
index e754cd343398d563a3b7b704a20d4cbbe9191416..7e6d04453c07893486dee9eecc9df1aafe04bfde 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_exportsoldexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_sold_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock.xml
index 4be8f7f0e19d6fcaaa562baf7f16dc0c05f1aeb0..7385f2a0978145a9e09defd5d91cd09c16c86801 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock.xml
@@ -25,23 +25,23 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_lowstock_grid"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="adminhtml.report.product.lowstock.store_switcher"
-               template="Magento_Backend::store/switcher.phtml">
-            <arguments>
-                <argument name="use_confirm" xsi:type="string">0</argument>
-                <argument name="switch_url" xsi:type="url" path="*/*/*">
-                    <param name="store">null</param>
-                </argument>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Product\Lowstock" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="adminhtml.report.product.lowstock.store_switcher" template="Magento_Backend::store/switcher.phtml">
+                <arguments>
+                    <argument name="use_confirm" xsi:type="string">0</argument>
+                    <argument name="switch_url" xsi:type="url" path="*/*/*">
+                        <param name="store">null</param>
+                    </argument>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Product\Lowstock" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock_grid.xml
index 0070f3f8501d739357cb60f7b293b2ff1c0516ad..2c96bbf8aaebd83207ea43479d9f73c971d2c1cf 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_lowstock_grid.xml
@@ -24,58 +24,60 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.report.grid.container">
-        <block class="Magento\Reports\Block\Adminhtml\Product\Lowstock\Grid" name="adminhtml.block.report.product.lowstock.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">gridLowstock</argument>
-                <argument name="use_ajax" xsi:type="string">0</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Product\Lowstock\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.product.lowstock.export" as="grid.export">
+    <body>
+        <referenceBlock name="adminhtml.report.grid.container">
+            <block class="Magento\Reports\Block\Adminhtml\Product\Lowstock\Grid" name="adminhtml.block.report.product.lowstock.grid" as="grid">
                 <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportLowstockCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportLowstockExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">gridLowstock</argument>
+                    <argument name="use_ajax" xsi:type="string">0</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Product\Lowstock\Collection</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.product.lowstock.grid.columnSet">
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Product</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-product</argument>
-                        <argument name="column_css_class" xsi:type="string">col-product</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.product.lowstock.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">SKU</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">sku</argument>
-                        <argument name="header_css_class" xsi:type="string">col-sku</argument>
-                        <argument name="column_css_class" xsi:type="string">col-sku</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportLowstockCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportLowstockExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="qty">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Stock Quantity</argument>
-                        <argument name="filter" xsi:type="string">Magento\Backend\Block\Widget\Grid\Column\Filter\Range</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">qty</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                    </arguments>
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.product.lowstock.grid.columnSet">
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Product</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-product</argument>
+                            <argument name="column_css_class" xsi:type="string">col-product</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sku">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">SKU</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">sku</argument>
+                            <argument name="header_css_class" xsi:type="string">col-sku</argument>
+                            <argument name="column_css_class" xsi:type="string">col-sku</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="qty">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Stock Quantity</argument>
+                            <argument name="filter" xsi:type="string">Magento\Backend\Block\Widget\Grid\Column\Filter\Range</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">qty</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold.xml
index 701fccd6e601333956be8ccd1663f67cb003cd7f..29394c1db77a2ed5eea726053868635e7e5c30a4 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_product_sold_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Product\Sold" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Product\Sold" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold_grid.xml
index 6ac7501480306bfaf8a1ad877c9ad404006f3a40..596d776b59e5c2bc8f7a08102f13f9fe2add4cfa 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_sold_grid.xml
@@ -25,49 +25,51 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_grid"/>
-    <referenceBlock name="adminhtml.report.grid">
-        <arguments>
-            <argument name="id" xsi:type="string">gridProductsSold</argument>
-            <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Product\Sold\Collection\Initial</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.export">
-        <arguments>
-            <argument name="exportTypes" xsi:type="array">
-                <item name="csv" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportSoldCsv</item>
-                </item>
-                <item name="excel" xsi:type="array">
-                    <item name="urlPath" xsi:type="string">*/*/exportSoldExcel</item>
-                </item>
-            </argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.report.grid.columnSet">
-        <arguments>
-            <argument name="id" xsi:type="string">report_product_sold</argument>
-            <argument name="count_totals" xsi:type="string">1</argument>
-        </arguments>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+    <body>
+        <referenceBlock name="adminhtml.report.grid">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">Product</argument>
-                <argument name="type" xsi:type="string">text</argument>
-                <argument name="index" xsi:type="string">order_items_name</argument>
-                <argument name="id" xsi:type="string">name</argument>
-                <argument name="column_css_class" xsi:type="string">col-product</argument>
-                <argument name="header_css_class" xsi:type="string">col-product</argument>
+                <argument name="id" xsi:type="string">gridProductsSold</argument>
+                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Product\Sold\Collection\Initial</argument>
             </arguments>
-        </block>
-        <block class="Magento\Backend\Block\Widget\Grid\Column" as="ordered_qty">
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.export">
             <arguments>
-                <argument name="header" xsi:type="string" translate="true">Ordered Quantity</argument>
-                <argument name="total" xsi:type="string">sum</argument>
-                <argument name="type" xsi:type="string">number</argument>
-                <argument name="index" xsi:type="string">ordered_qty</argument>
-                <argument name="id" xsi:type="string">ordered_qty</argument>
-                <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                <argument name="exportTypes" xsi:type="array">
+                    <item name="csv" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportSoldCsv</item>
+                    </item>
+                    <item name="excel" xsi:type="array">
+                        <item name="urlPath" xsi:type="string">*/*/exportSoldExcel</item>
+                    </item>
+                </argument>
             </arguments>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.report.grid.columnSet">
+            <arguments>
+                <argument name="id" xsi:type="string">report_product_sold</argument>
+                <argument name="count_totals" xsi:type="string">1</argument>
+            </arguments>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Product</argument>
+                    <argument name="type" xsi:type="string">text</argument>
+                    <argument name="index" xsi:type="string">order_items_name</argument>
+                    <argument name="id" xsi:type="string">name</argument>
+                    <argument name="column_css_class" xsi:type="string">col-product</argument>
+                    <argument name="header_css_class" xsi:type="string">col-product</argument>
+                </arguments>
+            </block>
+            <block class="Magento\Backend\Block\Widget\Grid\Column" as="ordered_qty">
+                <arguments>
+                    <argument name="header" xsi:type="string" translate="true">Ordered Quantity</argument>
+                    <argument name="total" xsi:type="string">sum</argument>
+                    <argument name="type" xsi:type="string">number</argument>
+                    <argument name="index" xsi:type="string">ordered_qty</argument>
+                    <argument name="id" xsi:type="string">ordered_qty</argument>
+                    <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                    <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_viewed.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_viewed.xml
index 7d2e2139325a09ca1f0c9ac97235f13c2c204cac..6d31359c52debdd6f669d3d13d25a6fd53f5f9f1 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_viewed.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_product_viewed.xml
@@ -24,34 +24,34 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="messages">
-        <action method="addNotice">
-            <argument translate="true" name="message" xsi:type="string">This report uses timezone configuration data. Be sure to refresh lifetime statistics any time you change store timezone.</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
+    <body>
+        <referenceBlock name="messages">
+            <action method="addNotice">
+                <argument translate="true" name="message" xsi:type="string">This report uses timezone configuration data. Be sure to refresh lifetime statistics any time you change store timezone.</argument>
             </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Product\Viewed" template="report/grid/container.phtml" name="product.report.grid.container">
-            <block class="Magento\Reports\Block\Adminhtml\Filter\Form" name="grid.filter.form">
-                <action method="setFieldVisibility">
-                    <argument name="field" xsi:type="string">report_type</argument>
-                    <argument name="visibility" xsi:type="string">0</argument>
+        </referenceBlock>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Product\Viewed" template="report/grid/container.phtml" name="product.report.grid.container">
+                <block class="Magento\Reports\Block\Adminhtml\Filter\Form" name="grid.filter.form">
+                    <action method="setFieldVisibility">
+                        <argument name="field" xsi:type="string">report_type</argument>
+                        <argument name="visibility" xsi:type="string">0</argument>
+                    </action>
+                </block>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer.xml
index 55e31436ba500a236cd4942b742a5443fe772b94..359470fec3f43a8ef3edba028dd109f08b80fa75 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_customer_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Review\Customer" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Review\Customer" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer_grid.xml
index a3afdbd8d36766afd1fe577a0b9afb76a8ac4a34..d35bef83ed7c77dc82b437e33951e1348aa59f11 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_customer_grid.xml
@@ -24,72 +24,74 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.report.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.review.customer.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">customers_grid</argument>
-                <argument name="default_sort" xsi:type="string">review_cnt</argument>
-                <argument name="default_dir" xsi:type="string">desc</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Review\Customer\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.review.customer.export" as="grid.export">
+    <body>
+        <referenceBlock name="adminhtml.report.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.review.customer.grid" as="grid">
                 <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCustomerCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCustomerExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.review.customer.grid.columnSet">
-                <arguments>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
                     <argument name="id" xsi:type="string">customers_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">review/product</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="customerId" xsi:type="string">getCustomerId</item>
-                        </item>
-                    </argument>
+                    <argument name="default_sort" xsi:type="string">review_cnt</argument>
+                    <argument name="default_dir" xsi:type="string">desc</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Review\Customer\Collection</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Customer</argument>
-                        <argument name="index" xsi:type="string">customer_name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="id" xsi:type="string">customer_name</argument>
-                        <argument name="default" xsi:type="string" translate="true">Guest</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="review_cnt">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.review.customer.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Reviews</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">review_cnt</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCustomerCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCustomerExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.review.customer.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="is_system" xsi:type="string">1</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Reports\Block\Adminhtml\Grid\Column\Renderer\Customer</argument>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
+                        <argument name="id" xsi:type="string">customers_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">review/product</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="customerId" xsi:type="string">getCustomerId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Customer</argument>
+                            <argument name="index" xsi:type="string">customer_name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="id" xsi:type="string">customer_name</argument>
+                            <argument name="default" xsi:type="string" translate="true">Guest</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="review_cnt">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Reviews</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">review_cnt</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="is_system" xsi:type="string">1</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Reports\Block\Adminhtml\Grid\Column\Renderer\Customer</argument>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomercsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomercsv.xml
index d92fd1ebd4006801afae1f9e42db95a26cc6fcb0..45d8e41a116469f09dd476ab0e073036cb3eb4f9 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomercsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomercsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_customer_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomerexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomerexcel.xml
index d92fd1ebd4006801afae1f9e42db95a26cc6fcb0..45d8e41a116469f09dd476ab0e073036cb3eb4f9 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomerexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportcustomerexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_customer_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductcsv.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductcsv.xml
index 9ca4c5771fac9404e69a36dc45b53475232ca6c5..2176cc5fde5d23a7c30ce48d5af0c5f6087e3002 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductcsv.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_product_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductexcel.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductexcel.xml
index 9ca4c5771fac9404e69a36dc45b53475232ca6c5..2176cc5fde5d23a7c30ce48d5af0c5f6087e3002 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductexcel.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_exportproductexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_product_grid"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.report.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product.xml
index 9b51a73f9e5adc5db44c8effff81dc77411f4706..14cc3632507297db9fada894af917ae857e938a4 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_report_review_product_grid"/>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Review\Product" name="adminhtml.report.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Review\Product" name="adminhtml.report.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product_grid.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product_grid.xml
index 0522db93b7bf3adf9e73601ad2ae8fb5fd0afd8d..d9bf82e0bc5354fdd32d0a533ca63b1f3421cc0f 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product_grid.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_review_product_grid.xml
@@ -24,109 +24,111 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.report.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.review.product.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">gridProducts</argument>
-                <argument name="default_sort" xsi:type="string">review_cnt</argument>
-                <argument name="default_dir" xsi:type="string">desc</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Review\Product\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.review.product.export" as="grid.export">
+    <body>
+        <referenceBlock name="adminhtml.report.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.review.product.grid" as="grid">
                 <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportProductCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportProductExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.review.product.grid.columnSet">
-                <arguments>
-                    <argument name="filter_visibility" xsi:type="string">0</argument>
                     <argument name="id" xsi:type="string">gridProducts</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">review/product</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="productId" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="default_sort" xsi:type="string">review_cnt</argument>
+                    <argument name="default_dir" xsi:type="string">desc</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Review\Product\Collection</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">entity_id</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="id" xsi:type="string">entity_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Product</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-product</argument>
-                        <argument name="header_css_class" xsi:type="string">col-product</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="review_cnt">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Reviews</argument>
-                        <argument name="id" xsi:type="string">review_cnt</argument>
-                        <argument name="index" xsi:type="string">review_cnt</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="avg_rating">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Average</argument>
-                        <argument name="id" xsi:type="string">avg_rating</argument>
-                        <argument name="index" xsi:type="string">avg_rating</argument>
-                        <argument name="column_css_class" xsi:type="string">col-rating</argument>
-                        <argument name="header_css_class" xsi:type="string">col-rating</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="avg_rating_approved">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Average (Approved)</argument>
-                        <argument name="id" xsi:type="string">avg_rating_approved</argument>
-                        <argument name="index" xsi:type="string">avg_rating_approved</argument>
-                        <argument name="column_css_class" xsi:type="string">col-avg-rating</argument>
-                        <argument name="header_css_class" xsi:type="string">col-avg-rating</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_created">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.block.report.review.product.export" as="grid.export">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Last Review</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="id" xsi:type="string">last_created</argument>
-                        <argument name="index" xsi:type="string">last_created</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportProductCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportProductExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.report.review.product.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="align" xsi:type="string">center</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Reports\Block\Adminhtml\Grid\Column\Renderer\Product</argument>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="is_system" xsi:type="string">1</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                        <argument name="filter_visibility" xsi:type="string">0</argument>
+                        <argument name="id" xsi:type="string">gridProducts</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">review/product</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="productId" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">entity_id</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="id" xsi:type="string">entity_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Product</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-product</argument>
+                            <argument name="header_css_class" xsi:type="string">col-product</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="review_cnt">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Reviews</argument>
+                            <argument name="id" xsi:type="string">review_cnt</argument>
+                            <argument name="index" xsi:type="string">review_cnt</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="avg_rating">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Average</argument>
+                            <argument name="id" xsi:type="string">avg_rating</argument>
+                            <argument name="index" xsi:type="string">avg_rating</argument>
+                            <argument name="column_css_class" xsi:type="string">col-rating</argument>
+                            <argument name="header_css_class" xsi:type="string">col-rating</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="avg_rating_approved">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Average (Approved)</argument>
+                            <argument name="id" xsi:type="string">avg_rating_approved</argument>
+                            <argument name="index" xsi:type="string">avg_rating_approved</argument>
+                            <argument name="column_css_class" xsi:type="string">col-avg-rating</argument>
+                            <argument name="header_css_class" xsi:type="string">col-avg-rating</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="last_created">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Last Review</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="id" xsi:type="string">last_created</argument>
+                            <argument name="index" xsi:type="string">last_created</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="align" xsi:type="string">center</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Reports\Block\Adminhtml\Grid\Column\Renderer\Product</argument>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="is_system" xsi:type="string">1</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_bestsellers.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_bestsellers.xml
index 1f3b1eabc00f040030b508bdfa955e40ccf79820..57755482c9f9a4fc86f76c4f7b993ba3aa39c17b 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_bestsellers.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_bestsellers.xml
@@ -25,37 +25,37 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml" 
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Bestsellers" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
-                <action method="setFieldVisibility">
-                    <argument name="field" xsi:type="string">report_type</argument>
-                    <argument name="visibility" xsi:type="string">0</argument>
-                </action>
-                <action method="setFieldVisibility">
-                    <argument name="field" xsi:type="string">show_order_statuses</argument>
-                    <argument name="visibility" xsi:type="string">0</argument>
-                </action>
-                <action method="setFieldVisibility">
-                    <argument name="field" xsi:type="string">order_statuses</argument>
-                    <argument name="visibility" xsi:type="string">0</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Bestsellers" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
+                    <action method="setFieldVisibility">
+                        <argument name="field" xsi:type="string">report_type</argument>
+                        <argument name="visibility" xsi:type="string">0</argument>
+                    </action>
+                    <action method="setFieldVisibility">
+                        <argument name="field" xsi:type="string">show_order_statuses</argument>
+                        <argument name="visibility" xsi:type="string">0</argument>
+                    </action>
+                    <action method="setFieldVisibility">
+                        <argument name="field" xsi:type="string">order_statuses</argument>
+                        <argument name="visibility" xsi:type="string">0</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_coupons.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_coupons.xml
index da801e281e333c044dc1342719fec9aeb86c7dd5..61adf42b8074332fd55cdefc72f3db93a5b13f85 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_coupons.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_coupons.xml
@@ -25,38 +25,38 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string"  translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Coupons" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form\Coupon" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">updated_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
-                </action>
-                <action method="setFieldOption">
-                    <argument name="field" xsi:type="string">report_type</argument>
-                    <argument name="option" xsi:type="string">note</argument>
-                    <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Coupons" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form\Coupon" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">updated_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
+                    </action>
+                    <action method="setFieldOption">
+                        <argument name="field" xsi:type="string">report_type</argument>
+                        <argument name="option" xsi:type="string">note</argument>
+                        <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_invoiced.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_invoiced.xml
index 3e96be9df1d34b10577f62f07a4fe4e84c724c32..bf299aad46aee078e86785cc12a1a7fd39539e99 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_invoiced.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_invoiced.xml
@@ -25,33 +25,33 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Invoiced" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_invoice</argument>
-                    <argument translate="true" name="value" xsi:type="string">Last Invoice Created Date</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Invoiced" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_invoice</argument>
+                        <argument translate="true" name="value" xsi:type="string">Last Invoice Created Date</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_refunded.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_refunded.xml
index 179d9dc85e48f67cba47fe73b0ccf88bfac260ce..6438705b001b67803ec84f0adccf06f5a61485ba 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_refunded.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_refunded.xml
@@ -25,33 +25,33 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Refunded" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_refunded</argument>
-                    <argument translate="true" name="value" xsi:type="string">Last Credit Memo Created Date</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Refunded" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_refunded</argument>
+                        <argument translate="true" name="value" xsi:type="string">Last Credit Memo Created Date</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_sales.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_sales.xml
index 8d97f26cbe32d49813c2402b3491aef5cfcd0be3..61dff4e1a86932dc1857a74daebed468c0c9d890 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_sales.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_sales.xml
@@ -25,38 +25,38 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Sales" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form\Order" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">updated_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
-                </action>
-                <action method="setFieldOption">
-                    <argument name="field" xsi:type="string">report_type</argument>
-                    <argument name="option" xsi:type="string">note</argument>
-                    <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Sales" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form\Order" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">updated_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
+                    </action>
+                    <action method="setFieldOption">
+                        <argument name="field" xsi:type="string">report_type</argument>
+                        <argument name="option" xsi:type="string">note</argument>
+                        <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_shipping.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_shipping.xml
index 1d55b720b2d563f2277b1aa4ece5cffc02ae7cc0..0eeeb4f5cda771c2fa5774fb30d21440157ccade 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_shipping.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_shipping.xml
@@ -25,33 +25,33 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               template="Magento_Backend::store/switcher.phtml"
-               name="store.switcher">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Shipping" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_shipment</argument>
-                    <argument translate="true" name="value" xsi:type="string">First Invoice Created Date</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" template="Magento_Backend::store/switcher.phtml" name="store.switcher">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Shipping" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_shipment</argument>
+                        <argument translate="true" name="value" xsi:type="string">First Invoice Created Date</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_tax.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_tax.xml
index bb63b5cf935fdf4cbcb0d14faa2cd4b355cb31db..bc36ce2d8609186f6c22348484b32766dcc104ee 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_tax.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_sales_tax.xml
@@ -25,38 +25,38 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="reports_sales"/>
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="store.switcher"
-               template="Magento_Backend::store/switcher.phtml">
-            <action method="setStoreVarName">
-                <argument name="var_name" xsi:type="string">store_ids</argument>
-            </action>
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Sales\Tax" template="report/grid/container.phtml" name="sales.report.grid.container">
-            <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">created_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
-                </action>
-                <action method="addReportTypeOption">
-                    <argument name="key" xsi:type="string">updated_at_order</argument>
-                    <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
-                </action>
-                <action method="setFieldOption">
-                    <argument name="field" xsi:type="string">report_type</argument>
-                    <argument name="option" xsi:type="string">note</argument>
-                    <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="store.switcher" template="Magento_Backend::store/switcher.phtml">
+                <action method="setStoreVarName">
+                    <argument name="var_name" xsi:type="string">store_ids</argument>
                 </action>
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Sales\Tax" template="report/grid/container.phtml" name="sales.report.grid.container">
+                <block class="Magento\Sales\Block\Adminhtml\Report\Filter\Form" name="grid.filter.form">
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">created_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Created Date</argument>
+                    </action>
+                    <action method="addReportTypeOption">
+                        <argument name="key" xsi:type="string">updated_at_order</argument>
+                        <argument translate="true" name="value" xsi:type="string">Order Updated Date</argument>
+                    </action>
+                    <action method="setFieldOption">
+                        <argument name="field" xsi:type="string">report_type</argument>
+                        <argument name="option" xsi:type="string">note</argument>
+                        <argument translate="true" name="value" xsi:type="string">The Order Updated Date report is displayed in real-time, and does not need to be refreshed.</argument>
+                    </action>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_shopcart_abandoned.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_shopcart_abandoned.xml
index e7feefe8c11305ae651e7d189881cbfd4e7d85f1..e8ba689e6398d67965086caa6543a9b56f661775 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_shopcart_abandoned.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_shopcart_abandoned.xml
@@ -24,16 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="page.main.actions">
-        <block class="Magento\Backend\Block\Store\Switcher"
-               name="adminhtml.report.shopcart.abandoned.store_switcher">
-            <arguments>
-                <argument name="switch_websites" xsi:type="string">1</argument>
-                <argument name="switch_store_groups" xsi:type="string">1</argument>
-                <argument name="switch_store_views" xsi:type="string">1</argument>
-                <argument name="use_confirm" xsi:type="string">0</argument>
-                <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="page.main.actions">
+            <block class="Magento\Backend\Block\Store\Switcher" name="adminhtml.report.shopcart.abandoned.store_switcher">
+                <arguments>
+                    <argument name="switch_websites" xsi:type="string">1</argument>
+                    <argument name="switch_store_groups" xsi:type="string">1</argument>
+                    <argument name="switch_store_views" xsi:type="string">1</argument>
+                    <argument name="use_confirm" xsi:type="string">0</argument>
+                    <argument name="default_selection_name" xsi:type="string" translate="true">All Websites</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_statistics_index.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_statistics_index.xml
index c6c3bb35954b366c7b0015aba3f0d619d4333cf5..d4e27af031871f61883a303162a2c5ad9131d90c 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_report_statistics_index.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_report_statistics_index.xml
@@ -24,77 +24,79 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Reports\Block\Adminhtml\Refresh\Statistics" name="adminhtml.block.report.refresh.statistics">
-            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.refresh.statistics.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">gridRefreshStatistics</argument>
-                    <argument name="use_ajax" xsi:type="string">0</argument>
-                    <argument name="sortable" xsi:type="string">0</argument>
-                    <argument name="pager_visibility" xsi:type="string">0</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Refresh\Collection</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.block.refresh.statistics.massactions" as="grid.massaction">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Reports\Block\Adminhtml\Refresh\Statistics" name="adminhtml.block.report.refresh.statistics">
+                <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.report.refresh.statistics.grid" as="grid">
                     <arguments>
-                        <argument name="massaction_id_field" xsi:type="string">id</argument>
-                        <argument name="form_field_name" xsi:type="string">code</argument>
-                        <argument name="use_select_all" xsi:type="string">1</argument>
-                        <argument name="options" xsi:type="array">
-                            <item name="refresh_lifetime" xsi:type="array">
-                                <item name="label" xsi:type="string" translate="true">Refresh Lifetime Statistics</item>
-                                <item name="url" xsi:type="string">*/*/refreshLifetime</item>
-                                <item name="confirm" xsi:type="string" translate="true">Are you sure you want to refresh lifetime statistics? There can be performance impact during this operation.</item>
-                            </item>
-                            <item name="refresh_recent" xsi:type="array">
-                                <item name="label" xsi:type="string" translate="true">Refresh Statistics for the Last Day</item>
-                                <item name="url" xsi:type="string">*/*/refreshRecent</item>
-                                <item name="confirm" xsi:type="string" translate="true">Are you sure you want to refresh statistics for last day?</item>
-                                <item name="selected" xsi:type="string">1</item>
-                            </item>
-                        </argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.reportrefresh.statistics.columnSet">
-                    <arguments>
-                        <argument name="filter_visibility" xsi:type="string">0</argument>
                         <argument name="id" xsi:type="string">gridRefreshStatistics</argument>
+                        <argument name="use_ajax" xsi:type="string">0</argument>
+                        <argument name="sortable" xsi:type="string">0</argument>
+                        <argument name="pager_visibility" xsi:type="string">0</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\Reports\Model\Resource\Refresh\Collection</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="report">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Report</argument>
-                            <argument name="type" xsi:type="string">string</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="id" xsi:type="string">report</argument>
-                            <argument name="index" xsi:type="string">report</argument>
-                            <argument name="column_css_class" xsi:type="string">col-report</argument>
-                            <argument name="header_css_class" xsi:type="string">col-report</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="comment">
+                    <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.block.refresh.statistics.massactions" as="grid.massaction">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Description</argument>
-                            <argument name="type" xsi:type="string">string</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="id" xsi:type="string">comment</argument>
-                            <argument name="index" xsi:type="string">comment</argument>
-                            <argument name="column_css_class" xsi:type="string">col-description</argument>
-                            <argument name="header_css_class" xsi:type="string">col-description</argument>
+                            <argument name="massaction_id_field" xsi:type="string">id</argument>
+                            <argument name="form_field_name" xsi:type="string">code</argument>
+                            <argument name="use_select_all" xsi:type="string">1</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="refresh_lifetime" xsi:type="array">
+                                    <item name="label" xsi:type="string" translate="true">Refresh Lifetime Statistics</item>
+                                    <item name="url" xsi:type="string">*/*/refreshLifetime</item>
+                                    <item name="confirm" xsi:type="string" translate="true">Are you sure you want to refresh lifetime statistics? There can be performance impact during this operation.</item>
+                                </item>
+                                <item name="refresh_recent" xsi:type="array">
+                                    <item name="label" xsi:type="string" translate="true">Refresh Statistics for the Last Day</item>
+                                    <item name="url" xsi:type="string">*/*/refreshRecent</item>
+                                    <item name="confirm" xsi:type="string" translate="true">Are you sure you want to refresh statistics for last day?</item>
+                                    <item name="selected" xsi:type="string">1</item>
+                                </item>
+                            </argument>
                         </arguments>
                     </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="updated_at">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.block.reportrefresh.statistics.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Updated</argument>
-                            <argument name="type" xsi:type="string">datetime</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="id" xsi:type="string">updated_at</argument>
-                            <argument name="index" xsi:type="string">updated_at</argument>
-                            <argument name="default" xsi:type="string" translate="true">undefined</argument>
-                            <argument name="column_css_class" xsi:type="string">col-period</argument>
-                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="filter_visibility" xsi:type="string">0</argument>
+                            <argument name="id" xsi:type="string">gridRefreshStatistics</argument>
                         </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="report">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Report</argument>
+                                <argument name="type" xsi:type="string">string</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="id" xsi:type="string">report</argument>
+                                <argument name="index" xsi:type="string">report</argument>
+                                <argument name="column_css_class" xsi:type="string">col-report</argument>
+                                <argument name="header_css_class" xsi:type="string">col-report</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="comment">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Description</argument>
+                                <argument name="type" xsi:type="string">string</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="id" xsi:type="string">comment</argument>
+                                <argument name="index" xsi:type="string">comment</argument>
+                                <argument name="column_css_class" xsi:type="string">col-description</argument>
+                                <argument name="header_css_class" xsi:type="string">col-description</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="updated_at">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Updated</argument>
+                                <argument name="type" xsi:type="string">datetime</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="id" xsi:type="string">updated_at</argument>
+                                <argument name="index" xsi:type="string">updated_at</argument>
+                                <argument name="default" xsi:type="string" translate="true">undefined</argument>
+                                <argument name="column_css_class" xsi:type="string">col-period</argument>
+                                <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/adminhtml/layout/reports_sales.xml b/app/code/Magento/Reports/view/adminhtml/layout/reports_sales.xml
index 7b6b8ddf3894bd155959346c27c83a8f8964b0a4..d739939475bff008662dd12fb95ce83deda0c708 100644
--- a/app/code/Magento/Reports/view/adminhtml/layout/reports_sales.xml
+++ b/app/code/Magento/Reports/view/adminhtml/layout/reports_sales.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="messages">
-        <action method="addNotice">
-            <argument translate="true" name="message" xsi:type="string">This report uses timezone configuration data. Be sure to refresh lifetime statistics any time you change store timezone.</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="messages">
+            <action method="addNotice">
+                <argument translate="true" name="message" xsi:type="string">This report uses timezone configuration data. Be sure to refresh lifetime statistics any time you change store timezone.</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/frontend/layout/default.xml b/app/code/Magento/Reports/view/frontend/layout/default.xml
index 2aa1f60d49ffd7d2e78dd949405aa7dbdd4b19af..a562b74c7bd62a3049ff4feaa2a0ca398a36dba7 100644
--- a/app/code/Magento/Reports/view/frontend/layout/default.xml
+++ b/app/code/Magento/Reports/view/frontend/layout/default.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="reports_page_head_components" template="Magento_Reports::js/components.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="reports_page_head_components" template="Magento_Reports::js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Reports/view/frontend/layout/print.xml b/app/code/Magento/Reports/view/frontend/layout/print.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Reports/view/frontend/layout/print.xml
+++ b/app/code/Magento/Reports/view/frontend/layout/print.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json
index 2d9694c18af6bb01512cf0165aa6db1dfe630b61..f68102891f30dd6ffbd29603729ce407918a1494 100644
--- a/app/code/Magento/RequireJs/composer.json
+++ b/app/code/Magento/RequireJs/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Review/Block/Form.php b/app/code/Magento/Review/Block/Form.php
index 09af3ad59851ba4e97939c63b34ce15fa666d80f..25dc1cf93be8f47e6eee52eef49580613e84b60f 100644
--- a/app/code/Magento/Review/Block/Form.php
+++ b/app/code/Magento/Review/Block/Form.php
@@ -158,15 +158,8 @@ class Form extends \Magento\Framework\View\Element\Template
             );
         }
 
-        $this->setTemplate(
-            'form.phtml'
-        )->assign(
-            'data',
-            $data
-        )->assign(
-            'messages',
-            $this->messageManager->getMessages(true)
-        );
+        $this->setTemplate('form.phtml')
+            ->assign('data', $data);
     }
 
     /**
diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json
index 64d8b592d4362a7a2159f306655480ddf2a02887..c720f19c152d7a8b5245113020ef3896dbe80616 100644
--- a/app/code/Magento/Review/composer.json
+++ b/app/code/Magento/Review/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-newsletter": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-newsletter": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Review/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/Review/view/adminhtml/layout/catalog_product_new.xml
index 340c8d0b9c64a74d31ec74f6bad16b61e7ea8bb6..d2fb79c92bd56f24e91ae1b91e2e94b2fcaf4e50 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/catalog_product_new.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/catalog_product_new.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="product_tabs">
-        <block class="Magento\Review\Block\Adminhtml\Product\Edit\Tab" name="product.reviews">
-            <arguments>
-                <argument name="label" xsi:type="string" translate="true">Product Reviews</argument>
-                <argument name="url" xsi:type="url" path="review/product_reviews/grid">
-                    <param name="_current">1</param>
-                </argument>
-                <argument name="class" xsi:type="string">ajax</argument>
-                <argument name="group_code" xsi:type="string">advanced</argument>
-            </arguments>
-        </block>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">product-reviews</argument>
-            <argument name="block" xsi:type="string">product.reviews</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="product_tabs">
+            <block class="Magento\Review\Block\Adminhtml\Product\Edit\Tab" name="product.reviews">
+                <arguments>
+                    <argument name="label" xsi:type="string" translate="true">Product Reviews</argument>
+                    <argument name="url" xsi:type="url" path="review/product_reviews/grid">
+                        <param name="_current">1</param>
+                    </argument>
+                    <argument name="class" xsi:type="string">ajax</argument>
+                    <argument name="group_code" xsi:type="string">advanced</argument>
+                </arguments>
+            </block>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">product-reviews</argument>
+                <argument name="block" xsi:type="string">product.reviews</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/adminhtml/layout/rating_block.xml b/app/code/Magento/Review/view/adminhtml/layout/rating_block.xml
index 6fc27111000c21a7ec73407c5d9bfd91cfd69698..e29822002e0fc9a2a06fd9180b6165dd31fdb791 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/rating_block.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/rating_block.xml
@@ -24,62 +24,64 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.rating.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.rating.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">ratingsGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Review\Model\Resource\Rating\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">rating_code</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.rating.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.rating.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.rating.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">review/rating/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">ratingsGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Review\Model\Resource\Rating\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">rating_code</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="rating_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.rating.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">rating_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="rating_code">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Rating</argument>
-                        <argument name="index" xsi:type="string">rating_code</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="position">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
-                        <argument name="index" xsi:type="string">position</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Is Active</argument>
-                        <argument name="index" xsi:type="string">is_active</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="array">
-                            <item name="active" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Active</item>
-                            </item>
-                            <item name="inative" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">Inactive</item>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">review/rating/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
                             </item>
                         </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="rating_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">rating_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="rating_code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Rating</argument>
+                            <argument name="index" xsi:type="string">rating_code</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="position">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
+                            <argument name="index" xsi:type="string">position</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Is Active</argument>
+                            <argument name="index" xsi:type="string">is_active</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="active" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Active</item>
+                                </item>
+                                <item name="inative" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">Inactive</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/adminhtml/layout/review_product_edit.xml b/app/code/Magento/Review/view/adminhtml/layout/review_product_edit.xml
index afdabd0db8830b334acfc86fdb337b832fd9306b..1ae8c07d51bd0cbd3207ae8094d72816714fa7a9 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/review_product_edit.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/review_product_edit.xml
@@ -23,6 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="review_product_new"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Review/view/adminhtml/layout/review_product_index.xml b/app/code/Magento/Review/view/adminhtml/layout/review_product_index.xml
index 4614418075f07d0f286c45a79974884555bcb6a5..2c897fe969ac5080e767855e73d9aafe4ec00de6 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/review_product_index.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/review_product_index.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="adminhtml.grid">
-        <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
-            <block class="Magento\Review\Block\Adminhtml\Rss\Grid\Link" name="grid.rss.link"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="adminhtml.grid">
+            <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
+                <block class="Magento\Review\Block\Adminhtml\Rss\Grid\Link" name="grid.rss.link"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/adminhtml/layout/review_rating_edit.xml b/app/code/Magento/Review/view/adminhtml/layout/review_rating_edit.xml
index fe009caa54182c8899c823653fd89e8e84a3fddb..a303c668db97703f37d00293cf7ebffcc503e331 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/review_rating_edit.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/review_rating_edit.xml
@@ -23,5 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Review/view/adminhtml/layout/review_rating_index.xml b/app/code/Magento/Review/view/adminhtml/layout/review_rating_index.xml
index 31f990a2b6feb51f34b8de9ddb3fe9f518d90746..b8a37163bf7ff717e31b1f5e6928d42737659804 100644
--- a/app/code/Magento/Review/view/adminhtml/layout/review_rating_index.xml
+++ b/app/code/Magento/Review/view/adminhtml/layout/review_rating_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="rating_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Review\Block\Adminhtml\Rating" name="adminhtml.rating.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Review\Block\Adminhtml\Rating" name="adminhtml.rating.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Review/view/frontend/layout/catalog_product_view.xml
index 895bc1772a29e2f9f06c91c6cbe88845efccf066..2c5cd6507a86021af8744a81b172544dfab2a401 100644
--- a/app/code/Magento/Review/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Review/view/frontend/layout/catalog_product_view.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="submitReviewButton" xsi:type="string">.review .action.submit</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="product.info.details">
-        <block class="Magento\Review\Block\Product\Review" name="reviews.tab" as="reviews" template="Magento_Review::review.phtml" group="detailed_info">
-            <block class="Magento\Review\Block\Form" name="product.review.form" as="review_form">
-                <container name="product.review.form.fields.before" as="form_fields_before" label="Review Form Fields Before"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="submitReviewButton" xsi:type="string">.review .action.submit</item>
+                    </argument>
+                </arguments>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceContainer>
+        <referenceBlock name="product.info.details">
+            <block class="Magento\Review\Block\Product\Review" name="reviews.tab" as="reviews" template="Magento_Review::review.phtml" group="detailed_info">
+                <block class="Magento\Review\Block\Form" name="product.review.form" as="review_form">
+                    <container name="product.review.form.fields.before" as="form_fields_before" label="Review Form Fields Before"/>
+                </block>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/customer_account.xml b/app/code/Magento/Review/view/frontend/layout/customer_account.xml
index cf21794e5988189a8e9a9677801290c7b416dd05..84d57be54418ff0601d8df6cebcc6bcffb9edb4d 100644
--- a/app/code/Magento/Review/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Review/view/frontend/layout/customer_account.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-product-reviews-link">
-            <arguments>
-                <argument name="path" xsi:type="string">review/customer</argument>
-                <argument name="label" xsi:type="string">My Product Reviews</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-product-reviews-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">review/customer</argument>
+                    <argument name="label" xsi:type="string">My Product Reviews</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/customer_account_index.xml b/app/code/Magento/Review/view/frontend/layout/customer_account_index.xml
index 14582a24328490c7ad93d51cf46e58e1001180b6..e66b3dd75b419ef6a4915c27d7859a5b3becae09 100644
--- a/app/code/Magento/Review/view/frontend/layout/customer_account_index.xml
+++ b/app/code/Magento/Review/view/frontend/layout/customer_account_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Review\Block\Customer\Recent" name="customer_account_dashboard_info1" template="customer/recent.phtml" after="customer_account_dashboard_address" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Review\Block\Customer\Recent" name="customer_account_dashboard_info1" template="customer/recent.phtml" after="customer_account_dashboard_address" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/review_customer_index.xml b/app/code/Magento/Review/view/frontend/layout/review_customer_index.xml
index c712ef6af7e68621da76224546718da4328ca7af..0a094e7361b3fd53a1634e5bb4227d74085326c9 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_customer_index.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_customer_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Review\Block\Customer\ListCustomer" name="review_customer_list" template="customer/list.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Review\Block\Customer\ListCustomer" name="review_customer_list" template="customer/list.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/review_customer_view.xml b/app/code/Magento/Review/view/frontend/layout/review_customer_view.xml
index e17c26ffaad9c0f900ffa25353218693c4ab7c10..05fc6378b38b5400b773b1fc46e931216fdca8f4 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_customer_view.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_customer_view.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Review\Block\Customer\View" name="customers_review" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Review\Block\Customer\View" name="customers_review" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/review_product_list.xml b/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
index 7004ac73eeabb96bde4bb153829a17059fc2da3a..bdad11bdc9118f747d46969803894ff6ee9a22e2 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
@@ -23,18 +23,20 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view"/>
-    <referenceContainer name="product.info.main">
-        <block class="Magento\Review\Block\Product\View\Other" name="product.info.other" as="other" template="Magento_Review::product/view/other.phtml" before="product.info.addto"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <container name="product.info.details" label="invisible" htmlTag="div" htmlClass="product info detailed" after="product.info.media">
-            <block class="Magento\Review\Block\Form" name="product.review.form" as="review_form">
-                <container name="product.review.form.fields.before" as="form_fields_before" label="Review Form Fields Before" htmlTag="div" htmlClass="rewards"/>
-            </block>
-            <block class="Magento\Review\Block\Product\View\ListView" name="product.info.product_additional_data" as="product_additional_data" template="product/view/list.phtml"/>
-            <block class="Magento\Theme\Block\Html\Pager" name="product_review_list.toolbar"/>
-        </container>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.main">
+            <block class="Magento\Review\Block\Product\View\Other" name="product.info.other" as="other" template="Magento_Review::product/view/other.phtml" before="product.info.addto"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <container name="product.info.details" label="invisible" htmlTag="div" htmlClass="product info detailed" after="product.info.media">
+                <block class="Magento\Review\Block\Form" name="product.review.form" as="review_form">
+                    <container name="product.review.form.fields.before" as="form_fields_before" label="Review Form Fields Before" htmlTag="div" htmlClass="rewards"/>
+                </block>
+                <block class="Magento\Review\Block\Product\View\ListView" name="product.info.product_additional_data" as="product_additional_data" template="product/view/list.phtml"/>
+                <block class="Magento\Theme\Block\Html\Pager" name="product_review_list.toolbar"/>
+            </container>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/layout/review_product_view.xml b/app/code/Magento/Review/view/frontend/layout/review_product_view.xml
index e5692d1b51247c3860acc77461a7ee7d5a0811d4..f7adef9cabd56df1d0b56007a60be22fe6c7a09e 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_product_view.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_product_view.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Review\Block\View" name="review_view"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Review\Block\View" name="review_view"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Review/view/frontend/templates/customer/list.phtml b/app/code/Magento/Review/view/frontend/templates/customer/list.phtml
index 85c286aa7455c6b4ef0525f0a4ee87262a3b4368..af712bcaea7e3f173853ece5efe07b853afc16a3 100644
--- a/app/code/Magento/Review/view/frontend/templates/customer/list.phtml
+++ b/app/code/Magento/Review/view/frontend/templates/customer/list.phtml
@@ -25,7 +25,7 @@
 <?php if( $this->getCollection() && $this->count()): ?>
     <div class="table-wrapper reviews">
         <table class="data table table-reviews" id="my-reviews-table">
-            <caption class="table caption"><?php echo __('Product Reviews') ?></caption>
+            <caption class="table-caption"><?php echo __('Product Reviews') ?></caption>
             <thead>
                 <tr>
                     <th scope="col" class="col date"><?php echo __('Created') ?></th>
diff --git a/app/code/Magento/Review/view/frontend/templates/detailed.phtml b/app/code/Magento/Review/view/frontend/templates/detailed.phtml
index 41d899ed83a4a8b242f70c52ee670ec7408ecf6a..d6ca9b93919cd8a36975e2894c0cf966a40c2d22 100644
--- a/app/code/Magento/Review/view/frontend/templates/detailed.phtml
+++ b/app/code/Magento/Review/view/frontend/templates/detailed.phtml
@@ -23,12 +23,14 @@
  */
 ?>
 <?php if(!empty($collection) && $collection->getSize()): ?>
-    <table class="data table ratings review summary">
-        <tbody>
+    <div class="table-wrapper">
+        <table class="data table ratings review summary">
+            <caption class="table-caption"><?php echo __('Ratings Review Summary'); ?></caption>
+            <tbody>
             <?php foreach ($collection as $_rating): ?>
                 <?php if($_rating->getSummary()): ?>
                     <tr>
-                        <th class="label"><?php echo __($this->escapeHtml($_rating->getRatingCode())) ?></th>
+                        <th class="label" scope="row"><?php echo __($this->escapeHtml($_rating->getRatingCode())) ?></th>
                         <td class="value">
                             <div class="rating box">
                                 <div class="rating" style="width:<?php echo ceil($_rating->getSummary()) ?>%;"></div>
@@ -37,6 +39,7 @@
                     </tr>
                 <?php endif; ?>
             <?php endforeach; ?>
-        </tbody>
-    </table>
+            </tbody>
+        </table>
+    </div>
 <?php endif; ?>
diff --git a/app/code/Magento/Review/view/frontend/templates/view.phtml b/app/code/Magento/Review/view/frontend/templates/view.phtml
index 23905fac26f405a4198c5c0b3ed5fe099d487d8f..50ab3ff226bc6893359f54ad1e22d00ae6c07334 100644
--- a/app/code/Magento/Review/view/frontend/templates/view.phtml
+++ b/app/code/Magento/Review/view/frontend/templates/view.phtml
@@ -38,20 +38,22 @@
         <h3 class="product-name"><?php echo $this->escapeHtml($this->getProductData()->getName()) ?></h3>
         <?php if( $this->getRating() && $this->getRating()->getSize()): ?>
             <h4><?php echo __('Product Rating:') ?></h4>
-
-            <table class="data-table review-summary-table">
-            <?php foreach ($this->getRating() as $_rating): ?>
-            <?php if($_rating->getPercent()): ?>
-                <tr>
-                    <td class="label"><?php echo __($this->escapeHtml($_rating->getRatingCode())) ?></td>
-                    <td class="value">
-                        <div class="rating-box">
-                            <div class="rating" style="width:<?php echo ceil($_rating->getPercent()) ?>%;"></div>
-                        </div></td>
-                </tr>
-            <?php endif; ?>
-            <?php endforeach; ?>
-            </table>
+            <div class="table-wrapper">
+                <table class="data-table review-summary-table">
+                    <caption class="table-caption"><?php echo __('Product Rating'); ?></caption>
+                    <?php foreach ($this->getRating() as $_rating): ?>
+                        <?php if($_rating->getPercent()): ?>
+                            <tr>
+                                <td class="label"><?php echo __($this->escapeHtml($_rating->getRatingCode())) ?></td>
+                                <td class="value">
+                                    <div class="rating-box">
+                                        <div class="rating" style="width:<?php echo ceil($_rating->getPercent()) ?>%;"></div>
+                                    </div></td>
+                            </tr>
+                        <?php endif; ?>
+                    <?php endforeach; ?>
+                </table>
+            </div>
         <?php endif; ?>
         <p class="date"><?php echo __('Product Review (submitted on %1):', $this->dateFormat($this->getReviewData()->getCreatedAt())) ?></p>
         <p><?php echo nl2br($this->escapeHtml($this->getReviewData()->getDetail())) ?></p>
diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json
index 34ba3cb190ded981724c6c0b62a81392b69abf2a..cf505b7d1c7b7ff8bf8519e7bcdbcbe53af2fe09 100644
--- a/app/code/Magento/Rss/composer.json
+++ b/app/code/Magento/Rss/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Rss/view/frontend/layout/default.xml b/app/code/Magento/Rss/view/frontend/layout/default.xml
index fd04231a16d9024e23e6ca4d0de42668c57e94e3..ea26f97b4d537b95f93c274be757fd24aa47ed68 100644
--- a/app/code/Magento/Rss/view/frontend/layout/default.xml
+++ b/app/code/Magento/Rss/view/frontend/layout/default.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="footer_links">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="rss-link" ifconfig="rss/config/active">
-            <arguments>
-                <argument name="label" xsi:type="string">RSS</argument>
-                <argument name="path" xsi:type="string">rss</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
-    <block class="Magento\Rss\Block\Feeds" name="head_rss" ifconfig="rss/config/active"/>
+    <body>
+        <referenceBlock name="footer_links">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="rss-link" ifconfig="rss/config/active">
+                <arguments>
+                    <argument name="label" xsi:type="string">RSS</argument>
+                    <argument name="path" xsi:type="string">rss</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <block class="Magento\Rss\Block\Feeds" name="head_rss" ifconfig="rss/config/active"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Rss/view/frontend/layout/rss_index_index.xml b/app/code/Magento/Rss/view/frontend/layout/rss_index_index.xml
index f6540bcc6cf67d37b103c15a5f04cbc15ae0ff77..77b9213ab17325e862776cf7e22d50e87e2cc0b7 100644
--- a/app/code/Magento/Rss/view/frontend/layout/rss_index_index.xml
+++ b/app/code/Magento/Rss/view/frontend/layout/rss_index_index.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="2columns-right" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument name="title" translate="true" xsi:type="string">RSS Feeds</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Rss\Block\Feeds" name="rss.feeds"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-right" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument name="title" translate="true" xsi:type="string">RSS Feeds</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Rss\Block\Feeds" name="rss.feeds"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Rss/view/frontend/templates/feeds.phtml b/app/code/Magento/Rss/view/frontend/templates/feeds.phtml
index 45b2bda318aaab1347ee52c5104e205f5bbaf6fa..66415012a2a7808df2c5b9b895a868e7500e1272 100644
--- a/app/code/Magento/Rss/view/frontend/templates/feeds.phtml
+++ b/app/code/Magento/Rss/view/frontend/templates/feeds.phtml
@@ -23,8 +23,9 @@
  */
 ?>
 <table class="data table rss">
+    <caption class="table-caption"><?php echo __('Feed'); ?></caption>
     <tbody>
-        <th colspan="2"><?php echo __('Miscellaneous Feeds') ?></th>
+        <th colspan="2" scope="col"><?php echo __('Miscellaneous Feeds') ?></th>
     <?php foreach($this->getFeeds() as $feed): ?>
         <?php if (!isset($feed['group'])): ?>
         <tr>
@@ -34,7 +35,7 @@
             </td>
         </tr>
         <?php else: ?>
-            <th colspan="2"><?php echo $feed['group'] ?></th>
+            <th colspan="2" scope="col"><?php echo $feed['group'] ?></th>
             <?php foreach ($feed['feeds'] as $item) :?>
                 <tr>
                     <td class="col feed"><?php echo $item['label'] ?></td>
diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json
index 448c87f7b4699529c717b4cb25a1813f769e5c20..952040ed37c321a4939ad773b0a1dd5838170f91 100644
--- a/app/code/Magento/Rule/composer.json
+++ b/app/code/Magento/Rule/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create.php
index 4b7e8fb468fc6c2bea96ada065e154056700bab6..d4c71df4b490a804e482cb712724d8c1eed90b21 100644
--- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create.php
+++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create.php
@@ -101,10 +101,20 @@ class Create extends \Magento\Backend\Block\Widget\Form\Container
             'deleteConfirm(\'' . $confirm . '\', \'' . $this->getCancelUrl() . '\')'
         );
 
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return $this
+     */
+    protected function _prepareLayout()
+    {
         $pageTitle = $this->getLayout()->createBlock('Magento\Sales\Block\Adminhtml\Order\Create\Header')->toHtml();
         if (is_object($this->getLayout()->getBlock('page-title'))) {
             $this->getLayout()->getBlock('page-title')->setPageTitle($pageTitle);
         }
+        return parent::_prepareLayout();
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Payment.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Payment.php
index 15f85670e181878d0e7fa0abc2bfa0e57296da58..6f2dc11759e405147705f2ce2cbcfe85731c573c 100644
--- a/app/code/Magento/Sales/Block/Adminhtml/Order/Payment.php
+++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Payment.php
@@ -76,7 +76,7 @@ class Payment extends \Magento\Backend\Block\Template
      */
     public function setPayment($payment)
     {
-        $paymentInfoBlock = $this->_paymentData->getInfoBlock($payment);
+        $paymentInfoBlock = $this->_paymentData->getInfoBlock($payment, $this->getLayout());
         $this->setChild('info', $paymentInfoBlock);
         $this->setData('payment', $payment);
         return $this;
diff --git a/app/code/Magento/Sales/Block/Order/Creditmemo.php b/app/code/Magento/Sales/Block/Order/Creditmemo.php
index 085ad674d944cde0d8b69e4a30584a6874dda317..85520df488022e30d9d56a1c325da621bab89000 100644
--- a/app/code/Magento/Sales/Block/Order/Creditmemo.php
+++ b/app/code/Magento/Sales/Block/Order/Creditmemo.php
@@ -71,7 +71,8 @@ class Creditmemo extends \Magento\Sales\Block\Order\Creditmemo\Items
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/Info.php b/app/code/Magento/Sales/Block/Order/Info.php
index a19be6098fbda14250b92b37aef5eabd171335db..7d7792f0ecb3e035833e6b3a600a1328210450c5 100644
--- a/app/code/Magento/Sales/Block/Order/Info.php
+++ b/app/code/Magento/Sales/Block/Order/Info.php
@@ -70,7 +70,8 @@ class Info extends \Magento\Framework\View\Element\Template
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/Invoice.php b/app/code/Magento/Sales/Block/Order/Invoice.php
index 321b5a7c7c58bddbe4154184b3cd135518639544..c5a59b68d051b99f8c6a2967139c687712cdc295 100644
--- a/app/code/Magento/Sales/Block/Order/Invoice.php
+++ b/app/code/Magento/Sales/Block/Order/Invoice.php
@@ -69,7 +69,8 @@ class Invoice extends \Magento\Sales\Block\Order\Invoice\Items
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/PrintOrder/Creditmemo.php b/app/code/Magento/Sales/Block/Order/PrintOrder/Creditmemo.php
index 671c8364935a59d41c7b82575cf1d5c225c18d66..bd75dc0eeff085f0c08c4e7bd9aa6e2201ce796c 100644
--- a/app/code/Magento/Sales/Block/Order/PrintOrder/Creditmemo.php
+++ b/app/code/Magento/Sales/Block/Order/PrintOrder/Creditmemo.php
@@ -65,7 +65,8 @@ class Creditmemo extends \Magento\Sales\Block\Items\AbstractItems
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/PrintOrder/Invoice.php b/app/code/Magento/Sales/Block/Order/PrintOrder/Invoice.php
index 3d99d510c792f42993f0bace395806220af5fe44..45050cb764ed169ba9ce025a9ff4ecffb9c843ab 100644
--- a/app/code/Magento/Sales/Block/Order/PrintOrder/Invoice.php
+++ b/app/code/Magento/Sales/Block/Order/PrintOrder/Invoice.php
@@ -65,7 +65,8 @@ class Invoice extends \Magento\Sales\Block\Items\AbstractItems
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/PrintOrder/Shipment.php b/app/code/Magento/Sales/Block/Order/PrintOrder/Shipment.php
index d5d9b9e364c2654a081c113946cae770a4db1960..a4b8fec45339d52da2c34dfbde7ad10af2e977d5 100644
--- a/app/code/Magento/Sales/Block/Order/PrintOrder/Shipment.php
+++ b/app/code/Magento/Sales/Block/Order/PrintOrder/Shipment.php
@@ -103,7 +103,8 @@ class Shipment extends \Magento\Sales\Block\Items\AbstractItems
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/PrintShipment.php b/app/code/Magento/Sales/Block/Order/PrintShipment.php
index e3625aa7fa63dbc854147166ed5bc502e776fbef..c67b52a7cc2077bea25b5501c68219fec11be356 100644
--- a/app/code/Magento/Sales/Block/Order/PrintShipment.php
+++ b/app/code/Magento/Sales/Block/Order/PrintShipment.php
@@ -66,7 +66,8 @@ class PrintShipment extends \Magento\Sales\Block\Items\AbstractItems
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Print Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/Block/Order/View.php b/app/code/Magento/Sales/Block/Order/View.php
index b16c4eefc6c1d0ea1cfbdaadd8135e3e4eabaa8c..047b5dd3cf3d66f8f0a0fd9281dda582b7324887 100644
--- a/app/code/Magento/Sales/Block/Order/View.php
+++ b/app/code/Magento/Sales/Block/Order/View.php
@@ -77,7 +77,8 @@ class View extends \Magento\Framework\View\Element\Template
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json
index a13bc1fea58d5759ec158d425c23ba0c936d4094..bd064e27f46000600ebba889f8898f6d0a4d7fd7 100644
--- a/app/code/Magento/Sales/composer.json
+++ b/app/code/Magento/Sales/composer.json
@@ -3,31 +3,31 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-authorization": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-sales-rule": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-gift-message": "0.1.0-alpha101",
-        "magento/module-reports": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-wishlist": "0.1.0-alpha101",
-        "magento/module-email": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-sales-rule": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-gift-message": "0.1.0-alpha102",
+        "magento/module-reports": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-wishlist": "0.1.0-alpha102",
+        "magento/module-email": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sales/etc/webapi.xml b/app/code/Magento/Sales/etc/webapi.xml
index 52b038d41a60851f9458820639f7b24b9f48b5a0..62a2d1a82e97a49cd3caf94582c4fb2f7dd6791c 100644
--- a/app/code/Magento/Sales/etc/webapi.xml
+++ b/app/code/Magento/Sales/etc/webapi.xml
@@ -79,7 +79,7 @@
             <resource ref="Magento_Sales::sales" />
         </resources>
     </route>
-    <route url="/V1/order/:id" method="PUT">
+    <route url="/V1/order/:parentId" method="PUT">
         <service class="Magento\Sales\Service\V1\OrderWriteInterface" method="addressUpdate"/>
         <resources>
             <resource ref="Magento_Sales::sales" />
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportcsv.xml
index 97df1557a777d02dfcd857f10a57532fd6da1c5b..fabc71b4a13eb40765fa4b8dc0bf14874c7032ef 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportcsv.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_creditmemo_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_creditmemo.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_creditmemo.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportexcel.xml
index 97df1557a777d02dfcd857f10a57532fd6da1c5b..fabc71b4a13eb40765fa4b8dc0bf14874c7032ef 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportexcel.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_exportexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_creditmemo_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_creditmemo.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_creditmemo.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_grid_block.xml
index a859535ddc50288116803929a45a024d991fbaac..5b82021157b8613ef401090c2cfb130bb6c7b1a5 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_grid_block.xml
@@ -24,152 +24,153 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_creditmemo.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.creditmemo.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_creditmemo_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Creditmemo\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="grid_url" xsi:type="url" path="sales/creditmemo/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.creditmemo.grid.massaction" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
-                    <argument name="form_field_name" xsi:type="string">creditmemo_ids</argument>
-                    <argument name="use_select_all" xsi:type="boolean">false</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="print_creditmemos" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">PDF Credit Memos</item>
-                            <item name="url" xsi:type="string">sales/creditmemo/pdfcreditmemos</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.creditmemo.grid.export" as="grid.export">
-                <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.creditmemo.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_creditmemo.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.creditmemo.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sales_creditmemo_grid</argument>
-                    <argument name="rowupdaterUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
-                        <item name="path" xsi:type="string">sales/creditmemo/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="creditmemo_id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Creditmemo\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="grid_url" xsi:type="url" path="sales/creditmemo/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_creditmemo_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Credit Memo</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">real_creditmemo_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-memo-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-memo-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Created</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">order_increment_id</argument>
-                        <argument name="id" xsi:type="string">order_increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-order-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-order-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">order_created_at</argument>
-                        <argument name="id" xsi:type="string">order_created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">billing_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
-                        <argument name="index" xsi:type="string">billing_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-bill-to-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-bill-to-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.creditmemo.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="id" xsi:type="string">state</argument>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">state</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Creditmemo\Grid\StatusList"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
+                        <argument name="form_field_name" xsi:type="string">creditmemo_ids</argument>
+                        <argument name="use_select_all" xsi:type="boolean">false</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="print_creditmemos" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">PDF Credit Memos</item>
+                                <item name="url" xsi:type="string">sales/creditmemo/pdfcreditmemos</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.creditmemo.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="id" xsi:type="string">grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Refunded</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">order_currency_code</argument>
-                        <argument name="rate" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-refunded</argument>
-                        <argument name="column_css_class" xsi:type="string">col-refunded</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.creditmemo.grid.columnSet">
                     <arguments>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="getter" xsi:type="string">getId</argument>
-                        <argument name="filter" xsi:type="boolean">false</argument>
-                        <argument name="sortable" xsi:type="boolean">false</argument>
-                        <argument name="is_system" xsi:type="boolean">true</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="view_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">View</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">sales/creditmemo/view</item>
-                                </item>
-                                <item name="field" xsi:type="string">creditmemo_id</item>
+                        <argument name="id" xsi:type="string">sales_creditmemo_grid</argument>
+                        <argument name="rowupdaterUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
+                            <item name="path" xsi:type="string">sales/creditmemo/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="creditmemo_id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_creditmemo_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Credit Memo</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">real_creditmemo_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-memo-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-memo-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Created</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">order_increment_id</argument>
+                            <argument name="id" xsi:type="string">order_increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-order-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-order-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">order_created_at</argument>
+                            <argument name="id" xsi:type="string">order_created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">billing_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
+                            <argument name="index" xsi:type="string">billing_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-bill-to-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-bill-to-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                        <arguments>
+                            <argument name="id" xsi:type="string">state</argument>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">state</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Creditmemo\Grid\StatusList"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Refunded</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">order_currency_code</argument>
+                            <argument name="rate" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-refunded</argument>
+                            <argument name="column_css_class" xsi:type="string">col-refunded</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                        <arguments>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="getter" xsi:type="string">getId</argument>
+                            <argument name="filter" xsi:type="boolean">false</argument>
+                            <argument name="sortable" xsi:type="boolean">false</argument>
+                            <argument name="is_system" xsi:type="boolean">true</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="view_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">View</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">sales/creditmemo/view</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">creditmemo_id</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_index.xml
index 6f113e377800579ab4d744f53dcfa392e2db5172..748004c9e53592bf210a247ad187c100861cfe41 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_creditmemo_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Creditmemo" name="sales_creditmemo.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Creditmemo" name="sales_creditmemo.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_item_price.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_item_price.xml
index ebe4a2fa39b5cfbe89dd8d85c64879244ae8b9a5..01c7e2aa2c21cbc3487a18a1924b259c9269b67f 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_item_price.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_creditmemo_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportcsv.xml
index d20e5722abbe3575f8c6b8996379194821e491b1..4318f0a5c1c43ca0512a6b05eaf05a30dbd02f62 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportcsv.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_invoice_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_invoice.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_invoice.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportexcel.xml
index d20e5722abbe3575f8c6b8996379194821e491b1..4318f0a5c1c43ca0512a6b05eaf05a30dbd02f62 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportexcel.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_exportexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_invoice_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_invoice.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_invoice.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_grid_block.xml
index f5c421be0bcc1ff0d696a5e2b73903fb57812a49..9b73ec5c043d725c4a828db1d42f0e053332c7b2 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_grid_block.xml
@@ -24,152 +24,154 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_invoice.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.invoice.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_invoice_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Invoice\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="boolean">true</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.invoice.grid.massaction" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
-                    <argument name="form_field_name" xsi:type="string">invoice_ids</argument>
-                    <argument name="use_select_all" xsi:type="boolean">false</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="pdfinvoices_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">PDF Invoices</item>
-                            <item name="url" xsi:type="string">sales/invoice/pdfinvoices</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.invoice.grid.export" as="grid.export">
-                <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.invoice.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_invoice.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.invoice.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sales_invoice_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Invoice\Grid\Row\UrlGenerator</item>
-                        <item name="path" xsi:type="string">sales/invoice/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="invoice_id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Invoice\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="boolean">true</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Invoice</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-invoice-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-invoice-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Invoice Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">order_increment_id</argument>
-                        <argument name="id" xsi:type="string">order_increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-order-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-order-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">order_created_at</argument>
-                        <argument name="id" xsi:type="string">order_created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">billing_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
-                        <argument name="index" xsi:type="string">billing_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-bill-to-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-bill-to-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.invoice.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="id" xsi:type="string">state</argument>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">state</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Invoice\Grid\StatusList"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
+                        <argument name="form_field_name" xsi:type="string">invoice_ids</argument>
+                        <argument name="use_select_all" xsi:type="boolean">false</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="pdfinvoices_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">PDF Invoices</item>
+                                <item name="url" xsi:type="string">sales/invoice/pdfinvoices</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="grand_total">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.invoice.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="id" xsi:type="string">grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Amount</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">order_currency_code</argument>
-                        <argument name="index" xsi:type="string">grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-gtpurchased</argument>
-                        <argument name="column_css_class" xsi:type="string">col-gtpurchased</argument>
-                        <argument name="align" xsi:type="string">right</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.invoice.grid.columnSet">
                     <arguments>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="getter" xsi:type="string">getId</argument>
-                        <argument name="filter" xsi:type="boolean">false</argument>
-                        <argument name="sortable" xsi:type="boolean">false</argument>
-                        <argument name="is_system" xsi:type="boolean">true</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="view_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">View</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">sales/invoice/view</item>
-                                </item>
-                                <item name="field" xsi:type="string">invoice_id</item>
+                        <argument name="id" xsi:type="string">sales_invoice_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Invoice\Grid\Row\UrlGenerator</item>
+                            <item name="path" xsi:type="string">sales/invoice/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="invoice_id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Invoice</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-invoice-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-invoice-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Invoice Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">order_increment_id</argument>
+                            <argument name="id" xsi:type="string">order_increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-order-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-order-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">order_created_at</argument>
+                            <argument name="id" xsi:type="string">order_created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">billing_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
+                            <argument name="index" xsi:type="string">billing_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-bill-to-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-bill-to-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                        <arguments>
+                            <argument name="id" xsi:type="string">state</argument>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">state</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Invoice\Grid\StatusList"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Amount</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">order_currency_code</argument>
+                            <argument name="index" xsi:type="string">grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-gtpurchased</argument>
+                            <argument name="column_css_class" xsi:type="string">col-gtpurchased</argument>
+                            <argument name="align" xsi:type="string">right</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="getter" xsi:type="string">getId</argument>
+                            <argument name="filter" xsi:type="boolean">false</argument>
+                            <argument name="sortable" xsi:type="boolean">false</argument>
+                            <argument name="is_system" xsi:type="boolean">true</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="view_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">View</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">sales/invoice/view</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">invoice_id</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_index.xml
index fa36747ffef88e3044ce3551b8b3d5be92de1a76..51cdeadc6602f04808bfdc84722a0776ea859cbb 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_invoice_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Invoice" name="sales_invoice.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Invoice" name="sales_invoice.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_item_price.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_item_price.xml
index fa958be9975d7acb5d88746e6ba5fe60e134977c..2f5aa3d2b887f5a7c63c0586958733217ccefdbc 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_item_price.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_invoice_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_items">
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_address.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_address.xml
index ab43361e26a08deb3f0754e0c1932162a44cf331..82e6f016f79c4d1e73850b56d51ce9fe3b77fac4 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_address.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_address.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Address" name="sales_order_address.form.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Address" name="sales_order_address.form.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml
index 8d2a90ae8118fb8a3259efe04df160ff6b865bd6..dcf94dd01aae59845c7e4eab3d719e43f56f78e3 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_customer_block.xml
@@ -24,78 +24,80 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.customer.grid.container" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_order_create_customer_grid</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="default_sort" xsi:type="string">entity_id</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Customer\Collection</argument>
-                <argument name="pager_visibility" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/loadBlock">
-                    <param name="block">customer_grid</param>
-                </argument>
-                <argument name="row_click_callback" xsi:type="string">order.selectCustomer.bind(order)</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.customer.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="customer.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.customer.grid.container" as="grid">
                 <arguments>
-                    <argument name="filter_visibility" xsi:type="string">1</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Backend\Model\Widget\Grid\Row\UrlGeneratorId</item>
+                    <argument name="id" xsi:type="string">sales_order_create_customer_grid</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="default_sort" xsi:type="string">entity_id</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Customer\Collection</argument>
+                    <argument name="pager_visibility" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/loadBlock">
+                        <param name="block">customer_grid</param>
                     </argument>
+                    <argument name="row_click_callback" xsi:type="string">order.selectCustomer.bind(order)</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.customer.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">entity_id</argument>
-                        <argument name="align" xsi:type="string">right</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="index" xsi:type="string">name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Email</argument>
-                        <argument name="index" xsi:type="string">email</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="Telephone">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Phone</argument>
-                        <argument name="index" xsi:type="string">billing_telephone</argument>
-                        <argument name="column_css_class" xsi:type="string">col-phone</argument>
-                        <argument name="header_css_class" xsi:type="string">col-phone</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_postcode">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ZIP/Post Code</argument>
-                        <argument name="index" xsi:type="string">billing_postcode</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_country_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Country</argument>
-                        <argument name="index" xsi:type="string">billing_country_id</argument>
-                        <argument name="type" xsi:type="string">country</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_regione">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">State/Province</argument>
-                        <argument name="index" xsi:type="string">billing_regione</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="store_name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Signed-up Point</argument>
-                        <argument name="index" xsi:type="string">store_name</argument>
-                        <argument name="align" xsi:type="string">center</argument>
+                        <argument name="filter_visibility" xsi:type="string">1</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Backend\Model\Widget\Grid\Row\UrlGeneratorId</item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="entity_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">entity_id</argument>
+                            <argument name="align" xsi:type="string">right</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="index" xsi:type="string">name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Email</argument>
+                            <argument name="index" xsi:type="string">email</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="Telephone">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Phone</argument>
+                            <argument name="index" xsi:type="string">billing_telephone</argument>
+                            <argument name="column_css_class" xsi:type="string">col-phone</argument>
+                            <argument name="header_css_class" xsi:type="string">col-phone</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_postcode">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ZIP/Post Code</argument>
+                            <argument name="index" xsi:type="string">billing_postcode</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_country_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Country</argument>
+                            <argument name="index" xsi:type="string">billing_country_id</argument>
+                            <argument name="type" xsi:type="string">country</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_regione">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">State/Province</argument>
+                            <argument name="index" xsi:type="string">billing_regione</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="store_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Signed-up Point</argument>
+                            <argument name="index" xsi:type="string">store_name</argument>
+                            <argument name="align" xsi:type="string">center</argument>
+                        </arguments>
+                    </block>
                 </block>
                 <block class="Magento\Backend\Block\Widget\Grid\Column" as="website_name">
                     <arguments>
@@ -105,6 +107,6 @@
                     </arguments>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_index.xml
index 39799b73f23de94491079b5ada11a865840b4100..6ab001460816856ae1252e36d291b22370631bbc 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_index.xml
@@ -25,73 +25,75 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_create_customer_block"/>
-    <update handle="sales_order_create_item_price"/>
-    <referenceBlock name="page-title">
-        <action method="setTitleId">
-            <argument translate="true" name="id" xsi:type="string">order-header</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="after.body.start">
-        <block class="Magento\Backend\Block\Template" name="optional_zip_countries" as="optional_zip_countries" template="Magento_Directory::js/optional_zip_countries.phtml"/>
-    </referenceContainer>
     <head>
         <link src="Magento_Sales::js/bootstrap/order-create-index.js"/>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" template="Magento_Sales::order/create/js.phtml" name="create"/>
-    </referenceContainer>
-    <referenceBlock name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create" name="order_content">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form" template="order/create/form.phtml" name="order_create_form" as="form">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Messages" name="message"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Customer" template="order/create/abstract.phtml" name="customer.grid.container"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Store" template="order/create/abstract.phtml" name="store">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Store\Select" template="order/create/store/select.phtml" name="select"/>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Data" template="order/create/data.phtml" name="data">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
-                    </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order_create_shipping_form" as="form"/>
-                    </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order_create_billing_form" as="form"/>
-                    </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order_create_newsletter_form" as="form"/>
-                    </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search_grid" as="grid"/>
+    <update handle="sales_order_create_item_price"/>
+    <body>
+        <referenceBlock name="page-title">
+            <action method="setTitleId">
+                <argument translate="true" name="id" xsi:type="string">order-header</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\Backend\Block\Template" name="optional_zip_countries" as="optional_zip_countries" template="Magento_Directory::js/optional_zip_countries.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" template="Magento_Sales::order/create/js.phtml" name="create"/>
+        </referenceContainer>
+        <referenceBlock name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create" name="order_content">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form" template="order/create/form.phtml" name="order_create_form" as="form">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Messages" name="message"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Customer" template="order/create/abstract.phtml" name="customer.grid.container"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Store" template="order/create/abstract.phtml" name="store">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Store\Select" template="order/create/store/select.phtml" name="select"/>
                     </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
-                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
-                                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order_create_coupons_form" as="form"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Data" template="order/create/data.phtml" name="data">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
+                        </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order_create_shipping_form" as="form"/>
+                        </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order_create_billing_form" as="form"/>
+                        </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order_create_newsletter_form" as="form"/>
+                        </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search_grid" as="grid"/>
+                        </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
+                                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
+                                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order_create_coupons_form" as="form"/>
+                                </block>
                             </block>
                         </block>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
+                        <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
+                        </block>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
                     </block>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
-                    <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
-                    </block>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
-    <referenceContainer name="before.body.end">
-        <block class="Magento\Catalog\Block\Adminhtml\Product\Composite\Configure" template="Magento_Catalog::catalog/product/composite/configure.phtml"/>
-    </referenceContainer>
+        </referenceBlock>
+        <referenceContainer name="before.body.end">
+            <block class="Magento\Catalog\Block\Adminhtml\Product\Composite\Configure" template="Magento_Catalog::catalog/product/composite/configure.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_item_price.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_item_price.xml
index 3d0966da8ca066b115a3b75a07017dbffde7dc5d..f28ce29c8291ad97bed16b12dfb8fb80d7dad10d 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_item_price.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_item_price.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_unit_price" template="order/create/items/price/unit.phtml"/>
-    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_row_total" template="order/create/items/price/row.phtml"/>
-    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_row_total_with_discount" template="order/create/items/price/total.phtml"/>
+    <body>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_unit_price" template="order/create/items/price/unit.phtml"/>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_row_total" template="order/create/items/price/row.phtml"/>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" name="item_row_total_with_discount" template="order/create/items/price/total.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_address.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_address.xml
index 052c31241386f4be1c18b83fab5351fc176eb0a8..8c850f240c7dc3c1ae4e14379ac23a3571cecd9c 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_address.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_address.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
index 8691e19bcbd298727887782f088f5f4f12f6ad86..bdf6e8d3d255e30d4eb67d9996f45d35f76c9358 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order.create.billing.method.form" as="form"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order.create.billing.method.form" as="form"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_comment.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_comment.xml
index 2e7b5d12041e32c164ecff8a919134c936458bc9..077027b12ec4ad3dced0bf1e4f505e1cfd95687c 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_comment.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_comment.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_data.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_data.xml
index d3706597096c05c49e926d3c2c0e9754282f0253..b388f85cb762f0f8a6c54980e1c4648b3bea37a6 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_data.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_data.xml
@@ -25,45 +25,47 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_create_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Data" template="order/create/data.phtml" name="data">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
-            </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order.create.shipping.method.form" as="form"/>
-            </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order.create.billing.method.form" as="form"/>
-            </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order.create.newsletter.form" as="form"/>
-            </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search.grid" as="grid"/>
-            </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order.create.coupons.form" as="form"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Data" template="order/create/data.phtml" name="data">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
+                </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Address" template="order/create/form/address.phtml" name="billing_address"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order.create.shipping.method.form" as="form"/>
+                </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method" template="order/create/abstract.phtml" name="billing_method">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Billing\Method\Form" template="order/create/billing/method/form.phtml" name="order.create.billing.method.form" as="form"/>
+                </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order.create.newsletter.form" as="form"/>
+                </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search.grid" as="grid"/>
+                </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order.create.coupons.form" as="form"/>
+                        </block>
                     </block>
                 </block>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
+                <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
+                </block>
+                <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
             </block>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Comment" template="order/create/comment.phtml" name="comment"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
-            <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
-            </block>
-            <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_form_account.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_form_account.xml
index 3a169219beced485f84a94364b83edc349b26e55..80fea566a3cd9c4a9ece4f4195020d56e08d1cd5 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_form_account.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_form_account.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Form\Account" template="order/create/form/account.phtml" name="form_account"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_giftmessage.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_giftmessage.xml
index fa9415e9ba20df2439ffb091bfd9e6b76a86df67..26cc0ed667f3e04703acfe32caebaf13d1c6d27b 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_giftmessage.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_giftmessage.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Giftmessage" template="order/create/giftmessage.phtml" name="giftmessage"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_header.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_header.xml
index 48b5bd116bfec1f6bb20c62dd2b7ff4c35fb6e55..21e4b0e635b6ca3232c4cde04512b81551243afc 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_header.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_header.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Header" name="header"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Header" name="header"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_items.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_items.xml
index 23cf50374db07f140df5f789cea5f9580683847b..526660a9e49a88d61d8559793a54ef5828cbdd55 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_items.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_items.xml
@@ -25,14 +25,16 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_create_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
-                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order.create.coupons.form" as="form"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items" template="order/create/items.phtml" name="items">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Items\Grid" template="order/create/items/grid.phtml" name="items_grid">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons" template="order/create/coupons/form.phtml" name="coupons">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Coupons\Form" template="order/create/coupons/form.phtml" name="order.create.coupons.form" as="form"/>
+                    </block>
                 </block>
             </block>
-        </block>
-        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-    </referenceContainer>
+            <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_json.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_json.xml
index f700432cf48902b698e49619a68b1543fb3e1b4b..533e7e849585648bbd6c7b2da76841725f5acafb 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_json.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_json.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="backend.page">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Load" name="content"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="backend.page">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Load" name="content"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_message.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_message.xml
index 10c9e163adf000a1d4f1fc7ab99688647a46ea8b..8ddaaac73678c8ce2b571c5dceb7ac976cfa6a0b 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_message.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_message.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Messages" name="message"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Messages" name="message"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_newsletter.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_newsletter.xml
index 589e42fb30a1204e43785c0d2e26fe1f008ffbb9..630dde38d84f8bd8a0c651b493eb9a5af9bf5933 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_newsletter.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_newsletter.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order.create.newsletter.form" as="form"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter" template="order/create/abstract.phtml" name="newsletter">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Newsletter\Form" template="order/create/newsletter/form.phtml" name="order.create.newsletter.form" as="form"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_plain.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_plain.xml
index 8fe6191774e909d12165a97197354d247f43760b..908d7bb5a15556abfd90bebfe0c215ed6f09a93d 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_plain.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_plain.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="backend.page">
-        <container name="content" label="Content"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="backend.page">
+            <container name="content" label="Content"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search.xml
index f77db323bebc5222a2db93b87f265c813d47066a..b1630e321fdcf4dd14b3ec534e760b12b1d51018 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search.grid" as="grid"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search" template="order/create/abstract.phtml" name="search">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="search.grid" as="grid"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search_grid.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search_grid.xml
index a6a2e9092594e7b8399553bfdf3bdbdc6e3af673..98359af18940c9fed62f3e62ec39dc4dc1dc3d5b 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search_grid.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_search_grid.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="serach.grid" as="grid"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Search\Grid" name="serach.grid" as="grid"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_address.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_address.xml
index c255ffb0a4674137bf30de252c4c4c78cb886aeb..d8af6bbcbb0eda4f3fc567c3f1ab0c7040850e15 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_address.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_address.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Address" template="order/create/form/address.phtml" name="shipping_address"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_method.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_method.xml
index 21ef9600692544e2889965354ccd842b2b1ee771..e044147eca1b5e3b86c7e1141b1b9a744b17d1ad 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_method.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_shipping_method.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order.create.shipping.method.form" as="form"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method" template="order/create/abstract.phtml" name="shipping_method">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Shipping\Method\Form" template="order/create/shipping/method/form.phtml" name="order.create.shipping.method.form" as="form"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar.xml
index 932bfc33cfbb3c8aaef34cf82c22bb458af2b68d..c2ba37cc790301eda451baaf314506a5c402b1d8 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar" template="order/create/sidebar.phtml" name="sidebar">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="cart"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="wishlist"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="reorder"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="viewed"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="compared"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="pcompared"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="pviewed"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_cart.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_cart.xml
index 24e5bebccc07a22983c92038096c74fd86b3da30..47f4178b4a36b9754ce592db8b773146acd71613 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_cart.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_cart.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="sidebar_cart"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Cart" template="order/create/sidebar/items.phtml" name="sidebar_cart"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_compared.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_compared.xml
index fee756b231dde5dd1983c1684c39f7773fb4a282..f14e96ebad956ee8672c378bd588b8f958f5a359 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_compared.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_compared.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="sidebar_compared"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Compared" template="order/create/sidebar/items.phtml" name="sidebar_compared"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pcompared.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pcompared.xml
index 1c1a178d71a8d6a1cf3c9416054a9e1959d55d04..78d18f24fee5a99403eb2cd915da5a54789650db 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pcompared.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pcompared.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="sidebar_pcompared"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pcompared" template="order/create/sidebar/items.phtml" name="sidebar_pcompared"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pviewed.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pviewed.xml
index d1bc84add55ebf26aae799b6f89d8b8cfdce914e..22d27aa2a90d4fd5837492f43f31204723dea5ee 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pviewed.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_pviewed.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="sidebar_pviewed"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Pviewed" template="order/create/sidebar/items.phtml" name="sidebar_pviewed"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_reorder.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_reorder.xml
index 9010c882f6f2a737c6b1b06b7be9af4dcee19609..4a34587baa07e4788dabb3c7fb7178f7fbd730e1 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_reorder.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_reorder.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="sidebar_reorder"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Reorder" template="order/create/sidebar/items.phtml" name="sidebar_reorder"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_viewed.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_viewed.xml
index f0d16c0c11528e75c534baec5baac925864f3055..5ef5cfd00e6d71fd14824445f4c1c264cab16d8e 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_viewed.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_viewed.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="sidebar_viewed"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Viewed" template="order/create/sidebar/items.phtml" name="sidebar_viewed"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_wishlist.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_wishlist.xml
index a1653f38fcb9eb62f7700e2b460bb108a1d99f40..f49a1da37bd8f6a5e09d42145464d1579274e0d6 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_wishlist.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_sidebar_wishlist.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="sidebar_wishlist"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Sidebar\Wishlist" template="order/create/sidebar/items.phtml" name="sidebar_wishlist"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_totals.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_totals.xml
index 44dd904d98c9b75a5f13bc99d5fd24f5d81678b3..a8b547b1c0be516251d98986f656612e944aad48 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_totals.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_create_load_block_totals.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Create\Totals" template="order/create/totals.phtml" name="totals"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_addcomment.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_addcomment.xml
index cfc91568db92189af1c66699b1161f1621dc613d..c4ba095221eb5d9ee9eca354ab427016b73be2f5 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_addcomment.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_addcomment.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Comments" name="creditmemo_comments">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
-    </block>
+    <body>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Comments" name="creditmemo_comments">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_grid_block.xml
index f17a700c95054ed9bd6aced519a40ecaaef437af..1bd7fa8b4c23fff795fc1ec8e25b608dede51d80 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_grid_block.xml
@@ -24,81 +24,83 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_order_creditmemo.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_creditmemo.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">order_creditmemos</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Creditmemo\Order\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="grid_url" xsi:type="url" path="sales/order/creditmemos">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_creditmemo.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_order_creditmemo.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_creditmemo.grid" as="grid">
                 <arguments>
-                    <argument name="id" xsi:type="string">sales_order_creditmemo_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">sales/order_creditmemo/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="creditmemo_id" xsi:type="string">getId</item>
-                            <item name="order_id" xsi:type="string">getOrderId</item>
-                        </item>
+                    <argument name="id" xsi:type="string">order_creditmemos</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Creditmemo\Order\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="grid_url" xsi:type="url" path="sales/order/creditmemos">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_creditmemo.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Credit Memo</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-memo</argument>
-                        <argument name="column_css_class" xsi:type="string">col-memo</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">billing_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
-                        <argument name="index" xsi:type="string">billing_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Created</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
-                    <arguments>
-                        <argument name="id" xsi:type="string">state</argument>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">state</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Creditmemo\Grid\StatusList"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
-                    <arguments>
-                        <argument name="id" xsi:type="string">grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Refunded</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">order_currency_code</argument>
-                        <argument name="index" xsi:type="string">base_grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-refunded</argument>
-                        <argument name="column_css_class" xsi:type="string">col-refunded</argument>
+                        <argument name="id" xsi:type="string">sales_order_creditmemo_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">sales/order_creditmemo/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="creditmemo_id" xsi:type="string">getId</item>
+                                <item name="order_id" xsi:type="string">getOrderId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Credit Memo</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-memo</argument>
+                            <argument name="column_css_class" xsi:type="string">col-memo</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">billing_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
+                            <argument name="index" xsi:type="string">billing_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Created</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                        <arguments>
+                            <argument name="id" xsi:type="string">state</argument>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">state</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Creditmemo\Grid\StatusList"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Refunded</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">order_currency_code</argument>
+                            <argument name="index" xsi:type="string">base_grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-refunded</argument>
+                            <argument name="column_css_class" xsi:type="string">col-refunded</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml
index 9cf3e6b6cfbd6544cd3f6886fdef36414d6b1eab..6dfdeb349c8ca7fb60a91dd427040ac385927e4b 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_new.xml
@@ -25,25 +25,27 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create" name="sales_creditmemo_create">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Form" name="form" template="order/creditmemo/create/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/>
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create" name="sales_creditmemo_create">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Form" name="form" template="order/creditmemo/create/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/>
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+                        </block>
+                        <container name="submit_before" label="Submit Before"/>
+                        <container name="submit_after" label="Submit After"/>
                     </block>
-                    <container name="submit_before" label="Submit Before"/>
-                    <container name="submit_after" label="Submit After"/>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
index 794ad82076e253fbdb705bda6852d41ded612c75..18b0afe8677124fa56ce36cceabecd5ec8601217 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
@@ -25,17 +25,19 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_item_price"/>
-    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml">
-        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-        <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
-        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/>
-            <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Items" name="order_items" template="order/creditmemo/create/items.phtml">
+            <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/create/items/renderer/default.phtml"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+            <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+            <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
+            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Create\Adjustments" name="adjustments" template="order/creditmemo/create/totals/adjustments.phtml"/>
+                <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+            </block>
+            <container name="submit_before" label="Submit Before"/>
+            <container name="submit_after" label="Submit After"/>
         </block>
-        <container name="submit_before" label="Submit Before"/>
-        <container name="submit_after" label="Submit After"/>
-    </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml
index 6bcba10263b6ae3024dccda5ee8d0b03e75ead8e..0777f02f490f45901e10eb733a542f9e8e952155 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_creditmemo_view.xml
@@ -25,26 +25,28 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_creditmemo_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View" name="sales_creditmemo_view">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Form" name="form" template="order/creditmemo/view/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Items" name="creditmemo_items" template="order/creditmemo/view/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/view/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml">
-                    <action method="setParentType">
-                        <argument name="type" xsi:type="string">creditmemo</argument>
-                    </action>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View" name="sales_creditmemo_view">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Form" name="form" template="order/creditmemo/view/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\View\Items" name="creditmemo_items" template="order/creditmemo/view/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/creditmemo/view/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml">
+                        <action method="setParentType">
+                            <argument name="type" xsi:type="string">creditmemo</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_edit_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_edit_index.xml
index 2d23bfc62c38150df16ba69ff28d2b8a7a19a6f7..bb9029d85c725ee9ffd2b2db8207894d76d104bf 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_edit_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_edit_index.xml
@@ -25,4 +25,5 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_create_index"/>
+    <body/>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportcsv.xml
index 63cf82fa7816bed37933eb7b5c996a4647dd428c..6d20f869f64bbd780ec06467ada4cace32b0a9c0 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportcsv.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_order.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_order.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportexcel.xml
index 63cf82fa7816bed37933eb7b5c996a4647dd428c..6d20f869f64bbd780ec06467ada4cace32b0a9c0 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportexcel.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_exportexcel.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_order.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_order.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_grid_block.xml
index a8a79e04ab63e183558d4ed5f90385af6c7d15f8..81fb7e3454a597fbfdb0c4bac6b730c3fa4f07b5 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_grid_block.xml
@@ -24,199 +24,201 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_order.grid.container">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Grid" name="sales.order.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_order_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.order.grid.massaction" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
-                    <argument name="form_field_name" xsi:type="string">order_ids</argument>
-                    <argument name="use_select_all" xsi:type="string">0</argument>
-                    <argument name="options" xsi:type="array">
-                        <updater>Magento\Sales\Model\Order\Grid\Massaction\ItemsUpdater</updater>
-                        <item name="cancel_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Cancel</item>
-                            <item name="url" xsi:type="string">sales/order/massCancel</item>
-                        </item>
-                        <item name="hold_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Hold</item>
-                            <item name="url" xsi:type="string">sales/order/massHold</item>
-                        </item>
-                        <item name="unhold_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Unhold</item>
-                            <item name="url" xsi:type="string">sales/order/massUnhold</item>
-                        </item>
-                        <item name="pdfinvoices_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print Invoices</item>
-                            <item name="url" xsi:type="string">sales/order/pdfinvoices</item>
-                        </item>
-                        <item name="pdfshipments_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print Packing Slips</item>
-                            <item name="url" xsi:type="string">sales/order/pdfshipments</item>
-                        </item>
-                        <item name="pdfcreditmemos_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print Credit Memos</item>
-                            <item name="url" xsi:type="string">sales/order/pdfcreditmemos</item>
-                        </item>
-                        <item name="pdfdocs_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print All</item>
-                            <item name="url" xsi:type="string">sales/order/pdfdocs</item>
-                        </item>
-                        <item name="print_shipping_label" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print Shipping Labels</item>
-                            <item name="url" xsi:type="string">adminhtml/order_shipment/massPrintShippingLabel</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.order.grid.export" as="grid.export">
-                <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">sales/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">sales/*/exportExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_order.grid.container">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Grid" name="sales.order.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sales_order_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
-                        <item name="path" xsi:type="string">sales/order/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="order_id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_order_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">real_order_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-order-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-order-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Purchase Point</argument>
-                        <argument name="type" xsi:type="string">store</argument>
-                        <argument name="store_view" xsi:type="string">1</argument>
-                        <argument name="display_deleted" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                        <argument name="id" xsi:type="string">store_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-from-store</argument>
-                        <argument name="column_css_class" xsi:type="string">col-from-store</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Purchase Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">billing_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
-                        <argument name="index" xsi:type="string">billing_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">shipping_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
-                        <argument name="index" xsi:type="string">shipping_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
-                    <arguments>
-                        <argument name="id" xsi:type="string">base_grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Grand Total (Base)</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">base_currency_code</argument>
-                        <argument name="rate" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">base_grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-gtbase</argument>
-                        <argument name="column_css_class" xsi:type="string">col-gtbase</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="grand_total">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.order.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="id" xsi:type="string">grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Grand Total (Purchased)</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">order_currency_code</argument>
-                        <argument name="rate" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-gtpurchased</argument>
-                        <argument name="column_css_class" xsi:type="string">col-gtpurchased</argument>
+                        <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
+                        <argument name="form_field_name" xsi:type="string">order_ids</argument>
+                        <argument name="use_select_all" xsi:type="string">0</argument>
+                        <argument name="options" xsi:type="array">
+                            <updater>Magento\Sales\Model\Order\Grid\Massaction\ItemsUpdater</updater>
+                            <item name="cancel_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Cancel</item>
+                                <item name="url" xsi:type="string">sales/order/massCancel</item>
+                            </item>
+                            <item name="hold_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Hold</item>
+                                <item name="url" xsi:type="string">sales/order/massHold</item>
+                            </item>
+                            <item name="unhold_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Unhold</item>
+                                <item name="url" xsi:type="string">sales/order/massUnhold</item>
+                            </item>
+                            <item name="pdfinvoices_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print Invoices</item>
+                                <item name="url" xsi:type="string">sales/order/pdfinvoices</item>
+                            </item>
+                            <item name="pdfshipments_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print Packing Slips</item>
+                                <item name="url" xsi:type="string">sales/order/pdfshipments</item>
+                            </item>
+                            <item name="pdfcreditmemos_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print Credit Memos</item>
+                                <item name="url" xsi:type="string">sales/order/pdfcreditmemos</item>
+                            </item>
+                            <item name="pdfdocs_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print All</item>
+                                <item name="url" xsi:type="string">sales/order/pdfdocs</item>
+                            </item>
+                            <item name="print_shipping_label" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print Shipping Labels</item>
+                                <item name="url" xsi:type="string">adminhtml/order_shipment/massPrintShippingLabel</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.order.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="id" xsi:type="string">status</argument>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="currency" xsi:type="string">order_currency_code</argument>
-                        <argument name="index" xsi:type="string">status</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Grid\StatusesArray"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">sales/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">sales/*/exportExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order.grid.columnSet">
                     <arguments>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="getter" xsi:type="string">getId</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">stores</argument>
-                        <argument name="is_system" xsi:type="string">1</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="view_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">View</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">sales/order/view</item>
-                                </item>
-                                <item name="field" xsi:type="string">order_id</item>
+                        <argument name="id" xsi:type="string">sales_order_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
+                            <item name="path" xsi:type="string">sales/order/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="order_id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_order_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">real_order_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-order-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-order-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Purchase Point</argument>
+                            <argument name="type" xsi:type="string">store</argument>
+                            <argument name="store_view" xsi:type="string">1</argument>
+                            <argument name="display_deleted" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                            <argument name="id" xsi:type="string">store_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-from-store</argument>
+                            <argument name="column_css_class" xsi:type="string">col-from-store</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Purchase Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">billing_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
+                            <argument name="index" xsi:type="string">billing_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">shipping_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
+                            <argument name="index" xsi:type="string">shipping_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">base_grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Grand Total (Base)</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">base_currency_code</argument>
+                            <argument name="rate" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">base_grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-gtbase</argument>
+                            <argument name="column_css_class" xsi:type="string">col-gtbase</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Grand Total (Purchased)</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">order_currency_code</argument>
+                            <argument name="rate" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-gtpurchased</argument>
+                            <argument name="column_css_class" xsi:type="string">col-gtpurchased</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                        <arguments>
+                            <argument name="id" xsi:type="string">status</argument>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="currency" xsi:type="string">order_currency_code</argument>
+                            <argument name="index" xsi:type="string">status</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Grid\StatusesArray"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                        <arguments>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="getter" xsi:type="string">getId</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">stores</argument>
+                            <argument name="is_system" xsi:type="string">1</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="view_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">View</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">sales/order/view</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">order_id</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
+                </block>
+                <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
+                    <block class="Magento\Sales\Block\Adminhtml\Rss\Order\Grid\Link" name="grid.rss.link"/>
                 </block>
             </block>
-            <block class="Magento\Framework\View\Element\Text\ListText" name="grid.bottom.links">
-                <block class="Magento\Sales\Block\Adminhtml\Rss\Order\Grid\Link" name="grid.rss.link"/>
-            </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_index.xml
index d28eb1d00575ee8840b9976a9d5de87d184b16d5..9eaa3434b7816a46e81ae3b050b4e8b87ec7a182 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order" name="sales_order.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order" name="sales_order.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_addcomment.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_addcomment.xml
index 76c474b9f0557ec5285c0c68daeae4305ae2679a..ef8d4249de837ca942c1ff1439890a0808be46c2 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_addcomment.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_addcomment.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Comments" name="invoice_comments">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
-    </block>
+    <body>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Comments" name="invoice_comments">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_grid_block.xml
index c2224749b332253b69114fd5fa0d34d5d7570f8f..5e8511dcc9e16bc36b5701ef48f07d58e86c58dc 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_grid_block.xml
@@ -24,81 +24,83 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_order_invoice.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_invoice.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">order_invoices</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Invoice\Orders\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="grid_url" xsi:type="url" path="sales/order/invoices">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_invoice.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_order_invoice.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_invoice.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">order_invoices</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">sales/order_invoice/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="invoice_id" xsi:type="string">getId</item>
-                            <item name="order_id" xsi:type="string">getOrderId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Invoice\Orders\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="grid_url" xsi:type="url" path="sales/order/invoices">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_invoice.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Invoice</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-invoice-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-invoice-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">billing_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
-                        <argument name="index" xsi:type="string">billing_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Invoice Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
-                    <arguments>
-                        <argument name="id" xsi:type="string">state</argument>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">state</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Invoice\Grid\StatusList"/>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
-                    <arguments>
-                        <argument name="id" xsi:type="string">base_grand_total</argument>
-                        <argument name="header" xsi:type="string" translate="true">Amount</argument>
-                        <argument name="type" xsi:type="string">currency</argument>
-                        <argument name="currency" xsi:type="string">base_currency_code</argument>
-                        <argument name="index" xsi:type="string">base_grand_total</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        <argument name="id" xsi:type="string">order_invoices</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">sales/order_invoice/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="invoice_id" xsi:type="string">getId</item>
+                                <item name="order_id" xsi:type="string">getOrderId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Invoice</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-invoice-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-invoice-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">billing_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Bill-to Name</argument>
+                            <argument name="index" xsi:type="string">billing_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Invoice Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="state">
+                        <arguments>
+                            <argument name="id" xsi:type="string">state</argument>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">state</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Order\Invoice\Grid\StatusList"/>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="base_grand_total">
+                        <arguments>
+                            <argument name="id" xsi:type="string">base_grand_total</argument>
+                            <argument name="header" xsi:type="string" translate="true">Amount</argument>
+                            <argument name="type" xsi:type="string">currency</argument>
+                            <argument name="currency" xsi:type="string">base_currency_code</argument>
+                            <argument name="index" xsi:type="string">base_grand_total</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml
index 10017a11c298ae38e03ea7a40987d5d852473f94..233709f8dfbab36205df8064f96cf3091a7e01fe 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -25,22 +25,24 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create" name="sales_invoice_create">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Form" name="form" template="order/invoice/create/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Items" name="order_items" template="order/invoice/create/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/create/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
-                        <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create" name="sales_invoice_create">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Form" name="form" template="order/invoice/create/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Items" name="order_items" template="order/invoice/create/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/create/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
+                            <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_updateqty.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_updateqty.xml
index fd84471a5ec8222c4958dea6db9d5b395c428927..0b6a51f81a36f57d1adb3f1fa433651ca7fa69f8 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_updateqty.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_updateqty.xml
@@ -25,14 +25,16 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_item_price"/>
-    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Items" name="order_items" template="order/invoice/create/items.phtml">
-        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/create/items/renderer/default.phtml"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-        <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
-        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Create\Items" name="order_items" template="order/invoice/create/items.phtml">
+            <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/create/items/renderer/default.phtml"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+            <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+            <block class="Magento\Sales\Block\Adminhtml\Order\Totalbar" name="order_totalbar" template="order/totalbar.phtml"/>
+            <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+            </block>
         </block>
-    </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml
index 3ab8c039d096d8ea5446b6941847f312add39a2a..11d241b95a29728a3b79df47abaca67a2f308b9c 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_invoice_view.xml
@@ -25,26 +25,28 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_invoice_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View" name="sales_invoice_view">
-            <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Form" name="form" template="order/invoice/view/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Items" name="invoice_items" template="order/invoice/view/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/view/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml">
-                    <action method="setParentType">
-                        <argument name="type" xsi:type="string">invoice</argument>
-                    </action>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View" name="sales_invoice_view">
+                <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Form" name="form" template="order/invoice/view/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\View\Items" name="invoice_items" template="order/invoice/view/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="order/invoice/view/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml">
+                        <action method="setParentType">
+                            <argument name="type" xsi:type="string">invoice</argument>
+                        </action>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_item_price.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_item_price.xml
index 25eafab7353216f8236435d757081bac00511213..7a0d33bf07b2b12f6ca11dee48598dec69823b0d 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_shipment_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_shipment_grid_block.xml
index 086bc8ec9a2766a1356671e27f378a0c140b4c3d..b425a06f9f257ffc4342db05803ac826a9a4847e 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_shipment_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_shipment_grid_block.xml
@@ -24,69 +24,71 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_order_shipment.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_shipment.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">order_shipments</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Shipment\Order\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="boolean">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="grid_url" xsi:type="url" path="sales/order/shipments">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_shipment.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_order_shipment.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.order_shipment.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">order_shipments</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">adminhtml/order_shipment/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="shipment_id" xsi:type="string">getId</item>
-                            <item name="order_id" xsi:type="string">getOrderId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Shipment\Order\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="boolean">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="grid_url" xsi:type="url" path="sales/order/shipments">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_shipment_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.order_shipment.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Shipment</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">real_shipment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-memo</argument>
-                        <argument name="column_css_class" xsi:type="string">col-memo</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">shipping_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
-                        <argument name="index" xsi:type="string">shipping_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Ship Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="total_qty">
-                    <arguments>
-                        <argument name="id" xsi:type="string">total_qty</argument>
-                        <argument name="header" xsi:type="string" translate="true">Total Quantity</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">total_qty</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        <argument name="id" xsi:type="string">order_shipments</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">adminhtml/order_shipment/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="shipment_id" xsi:type="string">getId</item>
+                                <item name="order_id" xsi:type="string">getOrderId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_shipment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Shipment</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">real_shipment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-memo</argument>
+                            <argument name="column_css_class" xsi:type="string">col-memo</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">shipping_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
+                            <argument name="index" xsi:type="string">shipping_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Ship Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="total_qty">
+                        <arguments>
+                            <argument name="id" xsi:type="string">total_qty</argument>
+                            <argument name="header" xsi:type="string" translate="true">Total Quantity</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">total_qty</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_assign.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_assign.xml
index c617a35b6bb82f0099ad7fe4390d5d6ab704fa78..0e457b706e2c068dd816a443a50c5e9670e7b835 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_assign.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_assign.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Status\Assign" name="sales_order_status.assign.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Status\Assign" name="sales_order_status.assign.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_edit.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_edit.xml
index cea5cfed4f3bf475bbfc42869dea3c1a0d359b96..05466624c13e450caee1b6714aeac0fa82e0fe0e 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_edit.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Status\Edit" name="sales_order_status.edit.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Status\Edit" name="sales_order_status.edit.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_index.xml
index 48a1b528860c720d84d1a98268ab98c1cdf2d215..74be1b2b17544b005264d03521cc0e68a7f25a9d 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_index.xml
@@ -24,101 +24,103 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Status" name="sales_order_status.grid.container">
-            <block class="Magento\Backend\Block\Widget\Grid" name="sales_order_status.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">sales_order_status_grid</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Status\Collection</argument>
-                    <argument name="default_sort" xsi:type="string">state</argument>
-                    <argument name="default_dir" xsi:type="string">desc</argument>
-                    <argument name="pager_visibility" xsi:type="string">0</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales_order_status.grid.columnSet">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Status" name="sales_order_status.grid.container">
+                <block class="Magento\Backend\Block\Widget\Grid" name="sales_order_status.grid" as="grid">
                     <arguments>
-                        <argument name="rowUrl" xsi:type="array">
-                            <item name="path" xsi:type="string">sales/order_status/edit</item>
-                            <item name="extraParamsTemplate" xsi:type="array">
-                                <item name="status" xsi:type="string">getStatus</item>
-                            </item>
-                        </argument>
-                        <argument name="filter_visibility" xsi:type="string">1</argument>
+                        <argument name="id" xsi:type="string">sales_order_status_grid</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Status\Collection</argument>
+                        <argument name="default_sort" xsi:type="string">state</argument>
+                        <argument name="default_dir" xsi:type="string">desc</argument>
+                        <argument name="pager_visibility" xsi:type="string">0</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="label">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales_order_status.grid.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Status</argument>
-                            <argument name="index" xsi:type="string">label</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Status Code</argument>
-                            <argument name="index" xsi:type="string">status</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                            <argument name="filter_index" xsi:type="string">main_table.status</argument>
-                            <argument name="width" xsi:type="string">200</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_default">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Default Status</argument>
-                            <argument name="index" xsi:type="string">is_default</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="column_css_class" xsi:type="string">col-status-default</argument>
-                            <argument name="header_css_class" xsi:type="string">col-status-default</argument>
-                            <argument name="options" xsi:type="array">
-                                <item name="no" xsi:type="array">
-                                    <item name="value" xsi:type="string">0</item>
-                                    <item name="label" xsi:type="string" translate="true">No</item>
-                                </item>
-                                <item name="yes" xsi:type="array">
-                                    <item name="value" xsi:type="string">1</item>
-                                    <item name="label" xsi:type="string" translate="true">Yes</item>
+                            <argument name="rowUrl" xsi:type="array">
+                                <item name="path" xsi:type="string">sales/order_status/edit</item>
+                                <item name="extraParamsTemplate" xsi:type="array">
+                                    <item name="status" xsi:type="string">getStatus</item>
                                 </item>
                             </argument>
+                            <argument name="filter_visibility" xsi:type="string">1</argument>
                         </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="visible_on_front">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Visible On Frontend</argument>
-                            <argument name="index" xsi:type="string">visible_on_front</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="column_css_class" xsi:type="string">col-status-visible</argument>
-                            <argument name="header_css_class" xsi:type="string">col-status-visible</argument>
-                            <argument name="options" xsi:type="array">
-                                <item name="no" xsi:type="array">
-                                    <item name="value" xsi:type="string">0</item>
-                                    <item name="label" xsi:type="string" translate="true">No</item>
-                                </item>
-                                <item name="yes" xsi:type="array">
-                                    <item name="value" xsi:type="string">1</item>
-                                    <item name="label" xsi:type="string" translate="true">Yes</item>
-                                </item>
-                            </argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Sales\Block\Status\Grid\Column\State" as="state">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">State Code and Title</argument>
-                            <argument name="index" xsi:type="string">state</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Sales\Block\Status\Grid\Column\Unassign" as="unassign">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Action</argument>
-                            <argument name="index" xsi:type="string">unassign</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="filter" xsi:type="string">0</argument>
-                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
-                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="label">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Status</argument>
+                                <argument name="index" xsi:type="string">label</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="status">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Status Code</argument>
+                                <argument name="index" xsi:type="string">status</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                                <argument name="filter_index" xsi:type="string">main_table.status</argument>
+                                <argument name="width" xsi:type="string">200</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_default">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Default Status</argument>
+                                <argument name="index" xsi:type="string">is_default</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="column_css_class" xsi:type="string">col-status-default</argument>
+                                <argument name="header_css_class" xsi:type="string">col-status-default</argument>
+                                <argument name="options" xsi:type="array">
+                                    <item name="no" xsi:type="array">
+                                        <item name="value" xsi:type="string">0</item>
+                                        <item name="label" xsi:type="string" translate="true">No</item>
+                                    </item>
+                                    <item name="yes" xsi:type="array">
+                                        <item name="value" xsi:type="string">1</item>
+                                        <item name="label" xsi:type="string" translate="true">Yes</item>
+                                    </item>
+                                </argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="visible_on_front">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Visible On Frontend</argument>
+                                <argument name="index" xsi:type="string">visible_on_front</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="column_css_class" xsi:type="string">col-status-visible</argument>
+                                <argument name="header_css_class" xsi:type="string">col-status-visible</argument>
+                                <argument name="options" xsi:type="array">
+                                    <item name="no" xsi:type="array">
+                                        <item name="value" xsi:type="string">0</item>
+                                        <item name="label" xsi:type="string" translate="true">No</item>
+                                    </item>
+                                    <item name="yes" xsi:type="array">
+                                        <item name="value" xsi:type="string">1</item>
+                                        <item name="label" xsi:type="string" translate="true">Yes</item>
+                                    </item>
+                                </argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Sales\Block\Status\Grid\Column\State" as="state">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">State Code and Title</argument>
+                                <argument name="index" xsi:type="string">state</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Sales\Block\Status\Grid\Column\Unassign" as="unassign">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Action</argument>
+                                <argument name="index" xsi:type="string">unassign</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="filter" xsi:type="string">0</argument>
+                                <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                                <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_new.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_new.xml
index bc93126cf515c337cd2f8af9841dbadbb4b78d67..e968f97eee4ee0b8bdaefecb0c0a690291f3cad6 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_new.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_status_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Status\NewStatus" name="sales_order_status.new.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Status\NewStatus" name="sales_order_status.new.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml
index d6530b05a73fbf49850b7dbe27488ed791c56a6d..05d6e9c847c0f5d8f8a1448e9abcc9e75dd93d1c 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_transactions_grid_block.xml
@@ -25,7 +25,8 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_transactions_grid_block"/>
-    <referenceBlock name="sales.transactions.grid">
+    <body>
+        <referenceBlock name="sales.transactions.grid">
             <arguments>
                 <argument name="id" xsi:type="string">order_transactions</argument>
                 <argument name="dataSource" xsi:type="object">
@@ -39,9 +40,9 @@
                     <param name="_current">1</param>
                 </argument>
             </arguments>
-        <referenceBlock name="sales.transactions.grid.columnSet">
-            <arguments>
-                <argument name="id" xsi:type="string">order_transactions</argument>
+            <referenceBlock name="sales.transactions.grid.columnSet">
+                <arguments>
+                    <argument name="id" xsi:type="string">order_transactions</argument>
                     <argument name="rowUrl" xsi:type="array">
                         <item name="path" xsi:type="string">sales/transactions/view</item>
                         <item name="params" xsi:type="array">
@@ -52,6 +53,7 @@
                         </item>
                     </argument>
                 </arguments>
+            </referenceBlock>
         </referenceBlock>
-    </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml
index e216116caaad60d46ea4a24617c9241dbe144c30..821d9e8308001516ad6932c5da0c1e1be23c5be6 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_order_view.xml
@@ -23,69 +23,71 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <head>
-        <link src="Magento_Sales::js/bootstrap/order-create-index.js"/>
-    </head>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Order\View" name="sales_order_edit"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_invoice_grid_block"/>
     <update handle="sales_order_shipment_grid_block"/>
     <update handle="sales_order_transactions_grid_block"/>
     <update handle="sales_order_creditmemo_grid_block"/>
+    <head>
+        <link src="Magento_Sales::js/bootstrap/order-create-index.js"/>
+    </head>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="left">
-        <block class="Magento\Sales\Block\Adminhtml\Order\View\Tabs" name="sales_order_tabs">
-            <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Info" name="order_tab_info" template="order/view/tab/info.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Messages" name="order_messages"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Items" name="order_items" template="order/view/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" as="default" template="order/view/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\History" name="order_history" template="order/view/history.phtml"/>
-                <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Giftmessage" name="order_giftmessage" template="order/view/giftmessage.phtml"/>
-                </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Totals" name="order_totals" template="order/totals.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Order\View" name="sales_order_edit"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Sales\Block\Adminhtml\Order\View\Tabs" name="sales_order_tabs">
+                <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Info" name="order_tab_info" template="order/view/tab/info.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Messages" name="order_messages"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Items" name="order_items" template="order/view/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" as="default" template="order/view/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\History" name="order_history" template="order/view/history.phtml"/>
+                    <block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\View\Giftmessage" name="order_giftmessage" template="order/view/giftmessage.phtml"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Totals" name="order_totals" template="order/totals.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="order/totals/tax.phtml"/>
+                    </block>
                 </block>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_info</argument>
+                    <argument name="block" xsi:type="string">order_tab_info</argument>
+                </action>
+                <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Invoices" name="sales_order_invoice.grid.container"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_invoices</argument>
+                    <argument name="block" xsi:type="string">sales_order_invoice.grid.container</argument>
+                </action>
+                <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Creditmemos" name="sales_order_creditmemo.grid.container"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_creditmemos</argument>
+                    <argument name="block" xsi:type="string">sales_order_creditmemo.grid.container</argument>
+                </action>
+                <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Shipments" name="sales_order_shipment.grid.container"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_shipments</argument>
+                    <argument name="block" xsi:type="string">sales_order_shipment.grid.container</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_history</argument>
+                    <argument name="block" xsi:type="string">Magento\Sales\Block\Adminhtml\Order\View\Tab\History</argument>
+                </action>
+                <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Transactions" name="sales_transactions.grid.container"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">order_transactions</argument>
+                    <argument name="block" xsi:type="string">sales_transactions.grid.container</argument>
+                </action>
             </block>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_info</argument>
-                <argument name="block" xsi:type="string">order_tab_info</argument>
-            </action>
-            <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Invoices" name="sales_order_invoice.grid.container"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_invoices</argument>
-                <argument name="block" xsi:type="string">sales_order_invoice.grid.container</argument>
-            </action>
-            <block class = "Magento\Sales\Block\Adminhtml\Order\View\Tab\Creditmemos" name="sales_order_creditmemo.grid.container"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_creditmemos</argument>
-                <argument name="block" xsi:type="string">sales_order_creditmemo.grid.container</argument>
-            </action>
-            <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Shipments" name="sales_order_shipment.grid.container"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_shipments</argument>
-                <argument name="block" xsi:type="string">sales_order_shipment.grid.container</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_history</argument>
-                <argument name="block" xsi:type="string">Magento\Sales\Block\Adminhtml\Order\View\Tab\History</argument>
-            </action>
-            <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Transactions" name="sales_transactions.grid.container"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">order_transactions</argument>
-                <argument name="block" xsi:type="string">sales_transactions.grid.container</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::page/js/components.phtml"/>
-    </referenceBlock>
+        </referenceContainer>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::page/js/components.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml
index 0047f983c8fec33cae05ec11452219fbbd2a4432..3f8eaeb12e76d37fba3e38464b7036fdb3f89c6a 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_shipment_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_shipment.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_shipment.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml
index 049b645916627addc02691dba2679bf7079b3b67..3f8eaeb12e76d37fba3e38464b7036fdb3f89c6a 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_exportexcel.xml
@@ -23,7 +23,9 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" >
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_shipment_grid_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_shipment.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="sales_shipment.grid.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml
index e2c0f329ecb6a2218799e633a51bb85373ca7ac4..5c183a091bdbe3196614d58ec76f408f9b595fb0 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_grid_block.xml
@@ -24,141 +24,143 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_shipment.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.shipment.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_shipment_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Shipment\Grid\Collection</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="grid_url" xsi:type="url" path="sales/*/*">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.shipment.grid.massaction" as="grid.massaction">
-                <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
-                    <argument name="form_field_name" xsi:type="string">shipment_ids</argument>
-                    <argument name="use_select_all" xsi:type="boolean">false</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="pdfshipments_order" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">PDF Packing Slips</item>
-                            <item name="url" xsi:type="string">sales/shipment/pdfshipments</item>
-                        </item>
-                        <item name="print_shipping_labels" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Print Shipping Labels</item>
-                            <item name="url" xsi:type="string">adminhtml/order_shipment/massPrintShippingLabel</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.shipment.grid.export" as="grid.export">
-                <arguments>
-                    <argument name="exportTypes" xsi:type="array">
-                        <item name="csv" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
-                            <item name="label" xsi:type="string" translate="true">CSV</item>
-                        </item>
-                        <item name="excel" xsi:type="array">
-                            <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
-                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                        </item>
-                    </argument>
-                </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.shipment.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_shipment.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.shipment.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sales_shipment_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
-                        <item name="path" xsi:type="string">sales/shipment/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="shipment_id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Order\Shipment\Grid\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="grid_url" xsi:type="url" path="sales/*/*">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_shipment_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Shipment</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">real_shipment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-shipment-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-shipment-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Ship Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="sales.shipment.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">order_increment_id</argument>
-                        <argument name="id" xsi:type="string">order_increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-order-number</argument>
-                        <argument name="column_css_class" xsi:type="string">col-order-number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order Date</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">order_created_at</argument>
-                        <argument name="id" xsi:type="string">order_created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
-                    <arguments>
-                        <argument name="id" xsi:type="string">shipping_name</argument>
-                        <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
-                        <argument name="index" xsi:type="string">shipping_name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-ship-to-name</argument>
-                        <argument name="column_css_class" xsi:type="string">col-ship-to-name</argument>
+                        <argument name="massaction_id_field" xsi:type="string">entity_id</argument>
+                        <argument name="form_field_name" xsi:type="string">shipment_ids</argument>
+                        <argument name="use_select_all" xsi:type="boolean">false</argument>
+                        <argument name="options" xsi:type="array">
+                            <item name="pdfshipments_order" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">PDF Packing Slips</item>
+                                <item name="url" xsi:type="string">sales/shipment/pdfshipments</item>
+                            </item>
+                            <item name="print_shipping_labels" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Print Shipping Labels</item>
+                                <item name="url" xsi:type="string">adminhtml/order_shipment/massPrintShippingLabel</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="total_qty">
+                <block class="Magento\Backend\Block\Widget\Grid\Export" name="sales.shipment.grid.export" as="grid.export">
                     <arguments>
-                        <argument name="id" xsi:type="string">total_qty</argument>
-                        <argument name="header" xsi:type="string" translate="true">Total Quantity</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">total_qty</argument>
-                        <argument name="header_css_class" xsi:type="string">col-qty</argument>
-                        <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        <argument name="exportTypes" xsi:type="array">
+                            <item name="csv" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportCsv</item>
+                                <item name="label" xsi:type="string" translate="true">CSV</item>
+                            </item>
+                            <item name="excel" xsi:type="array">
+                                <item name="urlPath" xsi:type="string">*/*/exportExcel</item>
+                                <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                            </item>
+                        </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.shipment.grid.columnSet">
                     <arguments>
-                        <argument name="id" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="getter" xsi:type="string">getId</argument>
-                        <argument name="filter" xsi:type="boolean">false</argument>
-                        <argument name="sortable" xsi:type="boolean">false</argument>
-                        <argument name="is_system" xsi:type="boolean">true</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="view_action" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">View</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">sales/shipment/view</item>
-                                </item>
-                                <item name="field" xsi:type="string">shipment_id</item>
+                        <argument name="id" xsi:type="string">sales_shipment_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Sales\Model\Order\Grid\Row\UrlGenerator</item>
+                            <item name="path" xsi:type="string">sales/shipment/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="shipment_id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
-                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="real_shipment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Shipment</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">real_shipment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-shipment-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-shipment-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Ship Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">order_increment_id</argument>
+                            <argument name="id" xsi:type="string">order_increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-order-number</argument>
+                            <argument name="column_css_class" xsi:type="string">col-order-number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="order_created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order Date</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">order_created_at</argument>
+                            <argument name="id" xsi:type="string">order_created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="shipping_name">
+                        <arguments>
+                            <argument name="id" xsi:type="string">shipping_name</argument>
+                            <argument name="header" xsi:type="string" translate="true">Ship-to Name</argument>
+                            <argument name="index" xsi:type="string">shipping_name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-ship-to-name</argument>
+                            <argument name="column_css_class" xsi:type="string">col-ship-to-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="total_qty">
+                        <arguments>
+                            <argument name="id" xsi:type="string">total_qty</argument>
+                            <argument name="header" xsi:type="string" translate="true">Total Quantity</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">total_qty</argument>
+                            <argument name="header_css_class" xsi:type="string">col-qty</argument>
+                            <argument name="column_css_class" xsi:type="string">col-qty</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action" acl="Magento_Sales::actions_view">
+                        <arguments>
+                            <argument name="id" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="getter" xsi:type="string">getId</argument>
+                            <argument name="filter" xsi:type="boolean">false</argument>
+                            <argument name="sortable" xsi:type="boolean">false</argument>
+                            <argument name="is_system" xsi:type="boolean">true</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="view_action" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">View</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">sales/shipment/view</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">shipment_id</item>
+                                </item>
+                            </argument>
+                            <argument name="header_css_class" xsi:type="string">col-actions</argument>
+                            <argument name="column_css_class" xsi:type="string">col-actions</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml
index 868a49176633be8f4719e36a7061cbdaee425ede..928742cf7886865acaee854aac8472827a32df2a 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_shipment_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_shipment_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Shipment" name="sales_shipment.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Shipment" name="sales_shipment.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transaction_child_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transaction_child_block.xml
index f795b20fdc1b8d22be13db0bfede1be896ef400f..a0dd92c6109f43aadfb68df7b15d0d1fd0d5516c 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transaction_child_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transaction_child_block.xml
@@ -25,56 +25,58 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_transactions_grid_block"/>
-    <referenceBlock name="sales.transactions.grid">
-        <arguments>
-            <argument name="id" xsi:type="string">transactionChildGrid</argument>
-            <argument name="dataSource" xsi:type="object">
-                <updater>Magento\Sales\Model\Grid\Child\CollectionUpdater</updater>
-            </argument>
-            <argument name="use_ajax" xsi:type="string">false</argument>
-            <argument name="pager_visibility" xsi:type="boolean">false</argument>
-        </arguments>
-        <referenceBlock name="sales.transactions.grid.columnSet">
+    <body>
+        <referenceBlock name="sales.transactions.grid">
             <arguments>
                 <argument name="id" xsi:type="string">transactionChildGrid</argument>
-                <argument name="filter_visibility" xsi:type="boolean">false</argument>
+                <argument name="dataSource" xsi:type="object">
+                    <updater>Magento\Sales\Model\Grid\Child\CollectionUpdater</updater>
+                </argument>
+                <argument name="use_ajax" xsi:type="string">false</argument>
+                <argument name="pager_visibility" xsi:type="boolean">false</argument>
             </arguments>
-            <referenceBlock name="transaction_id">
+            <referenceBlock name="sales.transactions.grid.columnSet">
                 <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="increment_id">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="txn_id">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <remove name="parent_txn_id"/>
-            <referenceBlock name="method">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="txn_type">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="is_closed">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
-                </arguments>
-            </referenceBlock>
-            <referenceBlock name="created_at">
-                <arguments>
-                    <argument name="sortable" xsi:type="boolean">false</argument>
+                    <argument name="id" xsi:type="string">transactionChildGrid</argument>
+                    <argument name="filter_visibility" xsi:type="boolean">false</argument>
                 </arguments>
+                <referenceBlock name="transaction_id">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="increment_id">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="txn_id">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="method">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="txn_type">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="is_closed">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
+                <referenceBlock name="created_at">
+                    <arguments>
+                        <argument name="sortable" xsi:type="boolean">false</argument>
+                    </arguments>
+                </referenceBlock>
             </referenceBlock>
         </referenceBlock>
-    </referenceBlock>
+        <remove name="parent_txn_id"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml
index ba50a4c051c1678c1228fab756ed325e7ab74f39..3bde53abca225e66c2dae3f0404b536f9fc120c4 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_grid_block.xml
@@ -24,114 +24,116 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales_transactions.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="sales.transactions.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sales_transactions_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Transaction\Grid\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">true</argument>
-                <argument name="default_sort" xsi:type="string">created_at</argument>
-                <argument name="default_dir" xsi:type="string">DESC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.transactions.grid.columnSet">
+    <body>
+        <referenceBlock name="sales_transactions.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="sales.transactions.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sales_transactions_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">sales/*/view</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="txn_id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\Resource\Transaction\Grid\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">true</argument>
+                    <argument name="default_sort" xsi:type="string">created_at</argument>
+                    <argument name="default_dir" xsi:type="string">DESC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="transaction_id" as="transaction_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="sales.transactions.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="index" xsi:type="string">transaction_id</argument>
-                        <argument name="id" xsi:type="string">transaction_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="increment_id" as="increment_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Order ID</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">increment_id</argument>
-                        <argument name="id" xsi:type="string">increment_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-order-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-order-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="txn_id" as="txn_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Transaction ID</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">txn_id</argument>
-                        <argument name="id" xsi:type="string">txn_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-transaction-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-transaction-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="parent_txn_id" as="parent_txn_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Parent Transaction ID</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">parent_txn_id</argument>
-                        <argument name="id" xsi:type="string">parent_txn_id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-parent-transaction-id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-parent-transaction-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="method" as="method">
-                    <arguments>
-                        <argument name="id" xsi:type="string">method</argument>
-                        <argument name="header" xsi:type="string" translate="true">Payment Method</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">method</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Payment\Model\Resource\Grid\TypeList"/>
-                        <argument name="option_groups" xsi:type="options" model="Magento\Payment\Model\Resource\Grid\GroupList"/>
-                        <argument name="header_css_class" xsi:type="string">col-method</argument>
-                        <argument name="column_css_class" xsi:type="string">col-method</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="txn_type" as="txn_type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Transaction Type</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">txn_type</argument>
-                        <argument name="id" xsi:type="string">txn_type</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Transaction\Grid\TypeList"/>
-                        <argument name="header_css_class" xsi:type="string">col-transaction-type</argument>
-                        <argument name="column_css_class" xsi:type="string">col-transaction-type</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="is_closed" as="is_closed">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Closed</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="index" xsi:type="string">is_closed</argument>
-                        <argument name="id" xsi:type="string">is_closed</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Yesno"/>
-                        <argument name="header_css_class" xsi:type="string">col-closed</argument>
-                        <argument name="column_css_class" xsi:type="string">col-closed</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="created_at" as="created_at">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Created</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="index" xsi:type="string">created_at</argument>
-                        <argument name="id" xsi:type="string">created_at</argument>
-                        <argument name="header_css_class" xsi:type="string">col-period</argument>
-                        <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        <argument name="id" xsi:type="string">sales_transactions_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">sales/*/view</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="txn_id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="transaction_id" as="transaction_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="index" xsi:type="string">transaction_id</argument>
+                            <argument name="id" xsi:type="string">transaction_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="increment_id" as="increment_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Order ID</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">increment_id</argument>
+                            <argument name="id" xsi:type="string">increment_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-order-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-order-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="txn_id" as="txn_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Transaction ID</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">txn_id</argument>
+                            <argument name="id" xsi:type="string">txn_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-transaction-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-transaction-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="parent_txn_id" as="parent_txn_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Parent Transaction ID</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">parent_txn_id</argument>
+                            <argument name="id" xsi:type="string">parent_txn_id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-parent-transaction-id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-parent-transaction-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="method" as="method">
+                        <arguments>
+                            <argument name="id" xsi:type="string">method</argument>
+                            <argument name="header" xsi:type="string" translate="true">Payment Method</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">method</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Payment\Model\Resource\Grid\TypeList"/>
+                            <argument name="option_groups" xsi:type="options" model="Magento\Payment\Model\Resource\Grid\GroupList"/>
+                            <argument name="header_css_class" xsi:type="string">col-method</argument>
+                            <argument name="column_css_class" xsi:type="string">col-method</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="txn_type" as="txn_type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Transaction Type</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">txn_type</argument>
+                            <argument name="id" xsi:type="string">txn_type</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Sales\Model\Resource\Transaction\Grid\TypeList"/>
+                            <argument name="header_css_class" xsi:type="string">col-transaction-type</argument>
+                            <argument name="column_css_class" xsi:type="string">col-transaction-type</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="is_closed" as="is_closed">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Closed</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="index" xsi:type="string">is_closed</argument>
+                            <argument name="id" xsi:type="string">is_closed</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Yesno"/>
+                            <argument name="header_css_class" xsi:type="string">col-closed</argument>
+                            <argument name="column_css_class" xsi:type="string">col-closed</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="created_at" as="created_at">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Created</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="index" xsi:type="string">created_at</argument>
+                            <argument name="id" xsi:type="string">created_at</argument>
+                            <argument name="header_css_class" xsi:type="string">col-period</argument>
+                            <argument name="column_css_class" xsi:type="string">col-period</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml
index 8d34e2c4b2a7f8143d92edc19471a2a9a146b688..1eb8e7782e5ad1a9b9459123339a91e4b73670cd 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_transactions_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Transactions" name="sales_transactions.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Transactions" name="sales_transactions.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml
index 7bce3e58008edc5bd573c7d1d5edbd6fa7b766b6..2a747251c1541e3b2de2352650a95d4e68fc5da9 100644
--- a/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml
+++ b/app/code/Magento/Sales/view/adminhtml/layout/sales_transactions_view.xml
@@ -25,10 +25,12 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_transaction_child_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail" name="sales_transactions.detail" template="transactions/detail.phtml">
-            <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail\Grid" name="sales_transactions.detail.grid" as="detail_grid"/>
-            <block class="Magento\Sales\Block\Adminhtml\Transactions" name="sales_transactions.grid.container" as="child_grid"/>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail" name="sales_transactions.detail" template="transactions/detail.phtml">
+                <block class="Magento\Sales\Block\Adminhtml\Transactions\Detail\Grid" name="sales_transactions.detail.grid" as="detail_grid"/>
+                <block class="Magento\Sales\Block\Adminhtml\Transactions" name="sales_transactions.grid.container" as="child_grid"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml
index 14910fda331127627591a73f5059953ec4321d84..12671771f99efc1faf6841484068eda27c02a7c3 100644
--- a/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml
+++ b/app/code/Magento/Sales/view/adminhtml/templates/order/create/items/grid.phtml
@@ -95,13 +95,6 @@
                                 <strong><?php echo __('SKU') ?>:</strong>
                                 <?php echo implode('<br />', $this->helper('Magento\Catalog\Helper\Data')->splitSku($this->escapeHtml($_item->getSku()))); ?>
                             </div>
-                            <?php if($_item->getMessage(false)): ?>
-                                <?php foreach ($_item->getMessage(false) as $message): ?>
-                                <div class="<?php if($_item->getHasError()): ?>error<?php else: ?>notice<?php endif; ?>">
-                                    <?php echo $this->escapeHtml($message); ?>
-                                </div>
-                                <?php endforeach; ?>
-                            <?php endif; ?>
                         </td>
                         <td class="col-configure">
                             <?php echo $this->getConfigureButtonHtml($_item) ?>
@@ -159,6 +152,19 @@
                             </select>
                         </td>
                     </tr>
+                    <tr>
+                        <td colspan="100">
+                            <?php foreach ($_item->getMessage(false) as $message):
+                                if (empty($message)) {
+                                    continue;
+                                }
+                                ?>
+                                <div class="message <?php if($_item->getHasError()): ?>error<?php else: ?>notice<?php endif; ?>">
+                                    <?php echo $this->escapeHtml($message); ?>
+                                </div>
+                            <?php endforeach; ?>
+                        </td>
+                    </tr>
                     <?php echo $this->getItemExtraInfo($_item)->toHtml(); ?>
                 </tbody>
                 <?php endforeach; ?>
diff --git a/app/code/Magento/Sales/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Sales/view/frontend/layout/checkout_onepage_index.xml
index 8c8566c3bc682818fbe6e09429c97bda77c2d673..7d704ae8fd74ab30c90031116a3179c4b87936d3 100644
--- a/app/code/Magento/Sales/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/checkout_onepage_index.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="sale.reorder.sidebar"/>
+    <body>
+        <remove name="sale.reorder.sidebar"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/customer_account.xml b/app/code/Magento/Sales/view/frontend/layout/customer_account.xml
index 433f4781ee3f40a29011c4fa96466dfbbf9b316e..41d164460e953fcadcdeeb2ebe9e594f6a0e6cb7 100644
--- a/app/code/Magento/Sales/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/customer_account.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-orders-link">
-            <arguments>
-                <argument name="path" xsi:type="string">sales/order/history</argument>
-                <argument name="label" xsi:type="string">My Orders</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-orders-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">sales/order/history</argument>
+                    <argument name="label" xsi:type="string">My Orders</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/customer_account_index.xml b/app/code/Magento/Sales/view/frontend/layout/customer_account_index.xml
index 24d02124f74adfe093e10a73fa8315f05180219d..b1d318ed0f913710c5cc7fe91a947145949b89c9 100644
--- a/app/code/Magento/Sales/view/frontend/layout/customer_account_index.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/customer_account_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Recent" name="customer_account_dashboard_top" after="customer_account_dashboard_hello" template="order/recent.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Recent" name="customer_account_dashboard_top" after="customer_account_dashboard_hello" template="order/recent.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/default.xml b/app/code/Magento/Sales/view/frontend/layout/default.xml
index 53aae5949a9cae45495d875b74182357f670750e..440ada6b871951d61c91fd630490067f99fea606 100644
--- a/app/code/Magento/Sales/view/frontend/layout/default.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/default.xml
@@ -24,18 +24,20 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="sidebar.additional">
-        <block class="Magento\Sales\Block\Reorder\Sidebar" name="sale.reorder.sidebar" as="reorder" template="reorder/sidebar.phtml"/>
-    </referenceContainer>
-    <referenceBlock name="footer_links">
-        <block class="Magento\Sales\Block\Guest\Link" name="sales-guest-form-link">
-            <arguments>
-                <argument name="label" xsi:type="string">Orders and Returns</argument>
-                <argument name="path" xsi:type="string">sales/guest/form</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="sidebar.additional">
+            <block class="Magento\Sales\Block\Reorder\Sidebar" name="sale.reorder.sidebar" as="reorder" template="reorder/sidebar.phtml"/>
+        </referenceContainer>
+        <referenceBlock name="footer_links">
+            <block class="Magento\Sales\Block\Guest\Link" name="sales-guest-form-link">
+                <arguments>
+                    <argument name="label" xsi:type="string">Orders and Returns</argument>
+                    <argument name="path" xsi:type="string">sales/guest/form</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_item_price.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_item_price.xml
index f74e85bd88c00de60e3bf070b51cc205eb325878..a3d4e2ca703abee8ec7f5d42bc79e3f28256ea93 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_item_price.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_item_price.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="items">
-        <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" name="item_price" template="email/items/price/row.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="items">
+            <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" name="item_price" template="email/items/price/row.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_items.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_items.xml
index 36acc11f47383feab334db0203461d2a43255138..bebd778c83a82b6af6744b3ecdd4999e126a6009 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_items.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_items.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
-    <update handle="sales_email_order_creditmemo_renderers" />
-    <update handle="sales_email_item_price" />
-    <block class="Magento\Sales\Block\Order\Email\Creditmemo\Items" name="items" template="email/creditmemo/items.phtml">
-        <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.creditmemo.renderers" as="renderer.list" />
-        <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
-            <arguments>
-                <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
-                <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
-            </arguments>
-            <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_email_order_creditmemo_renderers"/>
+    <update handle="sales_email_item_price"/>
+    <body>
+        <block class="Magento\Sales\Block\Order\Email\Creditmemo\Items" name="items" template="email/creditmemo/items.phtml">
+            <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.creditmemo.renderers" as="renderer.list"/>
+            <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
+                <arguments>
+                    <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
+                    <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
+                </arguments>
+                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+            </block>
         </block>
-    </block>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
index 6fe9b9cd7caa11e5c66ebae3aab7b1f101f32689..48b0037654508fc3ada0ab569cf6fa5f9603962c 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
-    <referenceBlock name="sales.email.order.creditmemo.renderers">
-        <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/creditmemo/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.creditmemo.renderers">
+            <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/creditmemo/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_items.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_items.xml
index c745088e18e7e0b5cb63ff3d3d378a04930c6314..aec558aef809bb8817b47bf3b750a9bf3e085f1f 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_items.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_items.xml
@@ -24,17 +24,19 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Invoice Items List" design_abstraction="custom">
-    <update handle="sales_email_order_invoice_renderers" />
-    <update handle="sales_email_item_price" />
-    <block class="Magento\Sales\Block\Order\Email\Invoice\Items" name="items" template="email/invoice/items.phtml">
-        <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.invoice.renderers" as="renderer.list" />
-        <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
-            <arguments>
-                <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
-                <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
-            </arguments>
-            <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_email_order_invoice_renderers"/>
+    <update handle="sales_email_item_price"/>
+    <body>
+        <block class="Magento\Sales\Block\Order\Email\Invoice\Items" name="items" template="email/invoice/items.phtml">
+            <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.invoice.renderers" as="renderer.list"/>
+            <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
+                <arguments>
+                    <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
+                    <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
+                </arguments>
+                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+            </block>
         </block>
-    </block>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_renderers.xml
index d44b6636845272029d883eee4b542dcec09e3f94..a025e61fe92910b23601cc324e7649ebcd89c9b0 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
-    <referenceBlock name="sales.email.order.invoice.renderers">
-        <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/invoice/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.invoice.renderers">
+            <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/invoice/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_items.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_items.xml
index ae237018830df45dfc731284a601cf2074b534e6..50116d4410e291d7d372dbd9f48101df8ff2f579 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_items.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_items.xml
@@ -24,21 +24,23 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Order Items List" design_abstraction="custom">
-    <update handle="sales_email_order_renderers" />
-    <update handle="sales_email_item_price" />
-    <block class="Magento\Sales\Block\Order\Email\Items" name="items" template="email/items.phtml" cacheable="false">
-        <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.renderers" as="renderer.list" />
-        <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
-            <arguments>
-                <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
-                <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
-            </arguments>
-            <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
-                <action method="setIsPlaneMode">
-                    <argument name="value" xsi:type="string">1</argument>
-                </action>
+    <update handle="sales_email_order_renderers"/>
+    <update handle="sales_email_item_price"/>
+    <body>
+        <block class="Magento\Sales\Block\Order\Email\Items" name="items" template="email/items.phtml" cacheable="false">
+            <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.renderers" as="renderer.list"/>
+            <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
+                <arguments>
+                    <argument name="label_properties" xsi:type="string">colspan="3" align="right" style="padding:3px 9px"</argument>
+                    <argument name="value_properties" xsi:type="string">align="right" style="padding:3px 9px"</argument>
+                </arguments>
+                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
+                    <action method="setIsPlaneMode">
+                        <argument name="value" xsi:type="string">1</argument>
+                    </action>
+                </block>
             </block>
         </block>
-    </block>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_renderers.xml
index fca3a41a3b2432e014543e2e1eb08430c0ec6947..e7bdd77635d6e6e33819fcb35b2a5cce67716699 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_renderers.xml
@@ -23,11 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"
-        label="Email Creditmemo Items List"
-        design_abstraction="custom">
-    <referenceBlock name="sales.email.order.renderers">
-        <block class="Magento\Sales\Block\Order\Email\Items\Order\DefaultOrder" as="default" template="email/items/order/default.phtml"/>
-    </referenceBlock>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
+    <body>
+        <referenceBlock name="sales.email.order.renderers">
+            <block class="Magento\Sales\Block\Order\Email\Items\Order\DefaultOrder" as="default" template="email/items/order/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_items.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_items.xml
index 6441cb728ca951f1ec3f9c9fc008609255ed16b9..fb8b88a33df0f2bdb8f2e06a52867ae610fddb5e 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_items.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_items.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Shipment Items List" design_abstraction="custom">
-    <update handle="sales_email_order_shipment_renderers" />
-    <block class="Magento\Sales\Block\Order\Email\Shipment\Items" name="items" template="email/shipment/items.phtml">
-        <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.shipment.renderers" as="renderer.list" />
-    </block>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    <update handle="sales_email_order_shipment_renderers"/>
+    <body>
+        <block class="Magento\Sales\Block\Order\Email\Shipment\Items" name="items" template="email/shipment/items.phtml">
+            <block class="Magento\Framework\View\Element\RendererList" name="sales.email.order.shipment.renderers" as="renderer.list"/>
+        </block>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_renderers.xml
index dedf34fc3101f1829edd082a47bb91461fd07151..6a0bbcf0ac30af1a4e136faf71787cc9c104662f 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Email Creditmemo Items List" design_abstraction="custom">
-    <referenceBlock name="sales.email.order.shipment.renderers">
-        <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/shipment/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.email.order.shipment.renderers">
+            <block class="Magento\Sales\Block\Order\Email\Items\DefaultItems" as="default" template="email/items/shipment/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_creditmemo.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_creditmemo.xml
index 72589c5d5b83c2af2f6ac19e505b8f7ccfb443ab..da11c3efaea10fdbf4e56d2d3887daac767215a3 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_creditmemo.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_creditmemo.xml
@@ -23,29 +23,31 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="sales_order_creditmemo_renderers" />
-    <update handle="sales_order_item_price" />
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </block>
-        <block class="Magento\Sales\Block\Order\Creditmemo" name="sales.order.creditmemo" after="sales.order.info" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Creditmemo\Items" name="creditmemo_items" template="order/creditmemo/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.creditmemo.renderers" as="renderer.list" />
-                <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="sales_order_creditmemo_renderers"/>
+    <update handle="sales_order_item_price"/>
+    <update handle="sales_order_guest_info_links"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </block>
+            <block class="Magento\Sales\Block\Order\Creditmemo" name="sales.order.creditmemo" after="sales.order.info" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Creditmemo\Items" name="creditmemo_items" template="order/creditmemo/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.creditmemo.renderers" as="renderer.list"/>
+                    <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="creditmemo_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="creditmemo_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <update handle="sales_order_guest_info_links"/>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_form.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_form.xml
index 4c27d4f54884d6afb6fa5ac968c10b638fa29402..74ca4d7570e2aa19d51328e4ba3ed1b3e0d691bc 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_form.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_form.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Widget\Guest\Form" name="guest.form" template="guest/form.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Widget\Guest\Form" name="guest.form" template="guest/form.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_invoice.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_invoice.xml
index 08863cf31645d653a9e1d349b59f673f7b0f8bb9..556a5a7b168509791ccf7f5387f1ea3ffceee2eb 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_invoice.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_invoice.xml
@@ -23,29 +23,31 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="sales_order_invoice_renderers" />
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <update handle="sales_order_invoice_renderers"/>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </block>
-        <block class="Magento\Sales\Block\Order\Invoice" name="sales.order.invoice" after="sales.order.info" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Invoice\Items" name="invoice_items" template="order/invoice/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.invoice.renderers" as="renderer.list" />
-                <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_order_guest_info_links"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </block>
+            <block class="Magento\Sales\Block\Order\Invoice" name="sales.order.invoice" after="sales.order.info" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Invoice\Items" name="invoice_items" template="order/invoice/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.invoice.renderers" as="renderer.list"/>
+                    <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="invoice_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="invoice_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <update handle="sales_order_guest_info_links"/>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_print.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_print.xml
index 522604804b08e324ffed299c692f49f69805875e..bb35180e608f9a4f8479670c79d06b5bbb96c057 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_print.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_print.xml
@@ -26,20 +26,31 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintShipment" name="sales.order.print" template="order/print.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.renderers" as="renderer.list" />
-            <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
-                    <action method="setIsPlaneMode">
-                        <argument name="value" xsi:type="string">1</argument>
-                    </action>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="sales-guest-view"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="sales.order.print" template="order/view.phtml">
+                <block class="Magento\Sales\Block\Order\PrintShipment" name="order_items" template="order/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.renderers" as="renderer.list" />
+                    <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
+                            <action method="setIsPlaneMode">
+                                <argument name="value" xsi:type="string">1</argument>
+                            </action>
+                        </block>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+            <block class="Magento\Sales\Block\Order\PrintShipment" as="sales.order.print.info" name="sales.order.print.info" template="order/info.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printcreditmemo.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printcreditmemo.xml
index 0d8079a93af7232fb044ccdfd6c60a6d6226cb00..38946f3631d86ff9b8b47d9f0b00b8bfd56738e8 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printcreditmemo.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printcreditmemo.xml
@@ -26,16 +26,24 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_creditmemo_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="sales.order.print.creditmemo" template="order/print/creditmemo.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.creditmemo.renderers" as="renderer.list"/>
-            <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="sales-guest-view"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="sales.order.print.creditmemo" template="order/print/creditmemo.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.creditmemo.renderers" as="renderer.list"/>
+                <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
+                    <arguments>
+                        <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
+                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                    </arguments>
+                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printinvoice.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printinvoice.xml
index 41068ee3a22d98cb6cc0cb517149c5773cd2e4a2..cf82817115986c7a438b95421fc8b7d4e8d05038 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printinvoice.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printinvoice.xml
@@ -26,16 +26,24 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_invoice_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="sales.order.print.invoice" template="order/print/invoice.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.invoice.renderers" as="renderer.list" />
-            <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="sales-guest-view"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="sales.order.print.invoice" template="order/print/invoice.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.invoice.renderers" as="renderer.list" />
+                <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
+                    <arguments>
+                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                    </arguments>
+                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printshipment.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printshipment.xml
index 0f4111acc21500d96d1af6bafde3e36492092995..b18e97581b5f7cce58e4f65e3c7234258d11d65d 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_printshipment.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_printshipment.xml
@@ -25,9 +25,17 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_shipment_renderers" />
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="sales.order.print.shipment" template="order/print/shipment.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.shipment.renderers" as="renderer.list" />
-        </block>
-    </referenceContainer>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="sales-guest-view"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="sales.order.print.shipment" template="order/print/shipment.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.shipment.renderers" as="renderer.list" />
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_reorder.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_reorder.xml
index e0ddc2552150807dd4e71cba75cc70c2118549aa..9a27810729c1fe312a98affc830336110bde12d1 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_reorder.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_reorder.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_shipment.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_shipment.xml
index 9fdd536ee847fdb53144deae82066f8bc6e879cb..4f20c7899f292e8ed42473f77941a799a937de25 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_shipment.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_shipment.xml
@@ -23,14 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_guest_info_links"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_guest_view.xml b/app/code/Magento/Sales/view/frontend/layout/sales_guest_view.xml
index 2e9fe5933cb3ecf0e6fbef0b20034dbab91a07a0..26d37414ca8e52d4c9417d0e15b025ac87ead8d6 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_guest_view.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_guest_view.xml
@@ -26,28 +26,32 @@
 <page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_item_renderers"/>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="page.main.title">
-        <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.items.renderers" as="renderer.list" />
-                <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_order_guest_info_links"/>
+    <body>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml" />
+            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.items.renderers" as="renderer.list" />
+                    <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
                 </block>
             </block>
-        </block>
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info"/>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <update handle="sales_order_guest_info_links"/>
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info"/>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo.xml
index b94f3e87cd08ef235fcf1ef858971469f644c8d0..069774210abca2f13c33b99104b1b889b645ada2 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo.xml
@@ -24,34 +24,36 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="sales_order_creditmemo_renderers" />
+    <update handle="sales_order_creditmemo_renderers"/>
     <update handle="customer_account"/>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="page.main.title">
-        <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml" />
-        <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml" />
-        <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Creditmemo" name="sales.order.creditmemo" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Creditmemo\Items" name="creditmemo_items" template="order/creditmemo/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.creditmemo.renderers" as="renderer.list" />
-                <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_order_info_links"/>
+    <body>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml"/>
+            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Creditmemo" name="sales.order.creditmemo" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Creditmemo\Items" name="creditmemo_items" template="order/creditmemo/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.creditmemo.renderers" as="renderer.list"/>
+                    <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="creditmemo_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="creditmemo_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <update handle="sales_order_info_links"/>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo_renderers.xml
index 2a8bf18e2b36823b72b68d15cca72ed708373291..d35ae2d57d695ccb1ca989581b1723e3a4c1120d 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.creditmemo.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/creditmemo/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.creditmemo.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/creditmemo/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
index 44e920981a1f8efc4ef10894900767ef94646c6f..5ad4d941f6e678e7cc990dc06d60de457c2775e0 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
@@ -24,38 +24,40 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.info">
-        <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links">
-            <arguments>
-                <argument name="css_class" xsi:type="string">items</argument>
-            </arguments>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.information">
+    <body>
+        <referenceBlock name="sales.order.info">
+            <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links">
                 <arguments>
-                    <argument name="path" xsi:type="string">sales/guest/view</argument>
-                    <argument name="label" xsi:type="string">Order Information</argument>
+                    <argument name="css_class" xsi:type="string">items</argument>
                 </arguments>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.information">
+                    <arguments>
+                        <argument name="path" xsi:type="string">sales/guest/view</argument>
+                        <argument name="label" xsi:type="string">Order Information</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.invoice">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Invoices</argument>
+                        <argument name="path" xsi:type="string">sales/guest/invoice</argument>
+                        <argument name="label" xsi:type="string">Invoices</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.shipment">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Shipments</argument>
+                        <argument name="path" xsi:type="string">sales/guest/shipment</argument>
+                        <argument name="label" xsi:type="string">Order Shipments</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.creditmemo">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Creditmemos</argument>
+                        <argument name="path" xsi:type="string">sales/guest/creditmemo</argument>
+                        <argument name="label" xsi:type="string">Refunds</argument>
+                    </arguments>
+                </block>
             </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.invoice">
-                <arguments>
-                    <argument name="key" xsi:type="string">Invoices</argument>
-                    <argument name="path" xsi:type="string">sales/guest/invoice</argument>
-                    <argument name="label" xsi:type="string">Invoices</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.shipment">
-                <arguments>
-                    <argument name="key" xsi:type="string">Shipments</argument>
-                    <argument name="path" xsi:type="string">sales/guest/shipment</argument>
-                    <argument name="label" xsi:type="string">Order Shipments</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.creditmemo">
-                <arguments>
-                    <argument name="key" xsi:type="string">Creditmemos</argument>
-                    <argument name="path" xsi:type="string">sales/guest/creditmemo</argument>
-                    <argument name="label" xsi:type="string">Refunds</argument>
-                </arguments>
-            </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_history.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_history.xml
index 0505510fc2607fdcb720ea556f577afd0be7e46e..48901eebdc4c1daa30efdc4b991ce2e2985a3f3c 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_history.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_history.xml
@@ -25,10 +25,12 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\History" name="sales.order.history" cacheable="false">
-            <container name="sales.order.history.info" as="info" label="Order History Info"/>
-        </block>
-        <block class="Magento\Customer\Block\Account\Dashboard" name="customer.account.link.back" template="account/link/back.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\History" name="sales.order.history" cacheable="false">
+                <container name="sales.order.history.info" as="info" label="Order History Info"/>
+            </block>
+            <block class="Magento\Customer\Block\Account\Dashboard" name="customer.account.link.back" template="account/link/back.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_info_links.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_info_links.xml
index d75db1f7668b149bdd194e2dce495123b5e43a5a..6dd8f63546dd903e6e1f7adbd83215eea40d13c0 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_info_links.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_info_links.xml
@@ -24,38 +24,40 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links" before="-">
-            <arguments>
-                <argument name="css_class" xsi:type="string">items order-links</argument>
-            </arguments>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.information">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links" before="-">
                 <arguments>
-                    <argument name="path" xsi:type="string">sales/order/view</argument>
-                    <argument name="label" xsi:type="string">Items Ordered</argument>
+                    <argument name="css_class" xsi:type="string">items order-links</argument>
                 </arguments>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.information">
+                    <arguments>
+                        <argument name="path" xsi:type="string">sales/order/view</argument>
+                        <argument name="label" xsi:type="string">Items Ordered</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.invoice">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Invoices</argument>
+                        <argument name="path" xsi:type="string">sales/order/invoice</argument>
+                        <argument name="label" xsi:type="string">Invoices</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.shipment">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Shipments</argument>
+                        <argument name="path" xsi:type="string">sales/order/shipment</argument>
+                        <argument name="label" xsi:type="string">Order Shipments</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.creditmemo">
+                    <arguments>
+                        <argument name="key" xsi:type="string">Creditmemos</argument>
+                        <argument name="path" xsi:type="string">sales/order/creditmemo</argument>
+                        <argument name="label" xsi:type="string">Refunds</argument>
+                    </arguments>
+                </block>
             </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.invoice">
-                <arguments>
-                    <argument name="key" xsi:type="string">Invoices</argument>
-                    <argument name="path" xsi:type="string">sales/order/invoice</argument>
-                    <argument name="label" xsi:type="string">Invoices</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.shipment">
-                <arguments>
-                    <argument name="key" xsi:type="string">Shipments</argument>
-                    <argument name="path" xsi:type="string">sales/order/shipment</argument>
-                    <argument name="label" xsi:type="string">Order Shipments</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.creditmemo">
-                <arguments>
-                    <argument name="key" xsi:type="string">Creditmemos</argument>
-                    <argument name="path" xsi:type="string">sales/order/creditmemo</argument>
-                    <argument name="label" xsi:type="string">Refunds</argument>
-                </arguments>
-            </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice.xml
index 0cdfbe42221d9911f407e604287d3d6d1e160d62..e634a64b0d4e29ece94fff0dc756f72df2ca9692 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice.xml
@@ -25,34 +25,36 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <update handle="sales_order_invoice_renderers" />
+    <update handle="sales_order_invoice_renderers"/>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="page.main.title">
-        <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml" />
-        <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml" />
-        <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Invoice" name="sales.order.invoice" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Invoice\Items" name="invoice_items" template="order/invoice/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.invoice.renderers" as="renderer.list"/>
-                <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_order_info_links"/>
+    <body>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml"/>
+            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Invoice" name="sales.order.invoice" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Invoice\Items" name="invoice_items" template="order/invoice/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.invoice.renderers" as="renderer.list"/>
+                    <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="invoice_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="invoice_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="-" />
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <update handle="sales_order_info_links"/>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="-"/>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice_renderers.xml
index 98f6b087a5866c1798867faaffdfa03c2890a866..baa4be5378f53b33c3a00c0c330a590696d98aca 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.invoice.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/invoice/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.invoice.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/invoice/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_item_price.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_item_price.xml
index d2937594cd432b041bb1d3339f64727a6921209d..cc42e4aa370fdfab8ee9d5456b64d1af6585960f 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_item_price.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_unit_price" template="items/price/unit.phtml"/>
-    <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_row_total" template="items/price/row.phtml"/>
-    <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_row_total_after_discount" template="items/price/total_after_discount.phtml"/>
+    <body>
+        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_unit_price" template="items/price/unit.phtml"/>
+        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_row_total" template="items/price/row.phtml"/>
+        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" name="item_row_total_after_discount" template="items/price/total_after_discount.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_item_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_item_renderers.xml
index 05dfa6fc45ccf0837cab2e5492412818f9f238b1..308d77a9f75db3a20510b03ffdfea1bb5b57ba11 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_item_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_item_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.items.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.items.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_print.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_print.xml
index 0afd5aad70a2108674bb75001f17455bbb664db9..2ee102cd581cbd9ff3cd3e0551201555e32a87e8 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_print.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_print.xml
@@ -26,21 +26,32 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintShipment" name="sales.order.print" template="order/print.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.renderers" as="renderer.list" />
-            <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
-                    <arguments>
-                        <argument name="is_plane_mode" xsi:type="string">1</argument>
-                    </arguments>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="account"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintShipment" name="sales.order.print" template="order/view.phtml">
+                <block class="Magento\Sales\Block\Order\PrintShipment" name="order_items" template="order/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.renderers" as="renderer.list" />
+                    <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml">
+                            <action method="setIsPlaneMode">
+                                <argument name="value" xsi:type="string">1</argument>
+                            </action>
+                        </block>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+            <block class="Magento\Sales\Block\Order\PrintShipment" as="sales.order.print.info" name="sales.order.print.info" template="order/info.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_creditmemo_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
index 3600977f83f238b6acc7a02079f99972460977bd..d1b8cf420cd513167c40b602156d3cf036b22819 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_creditmemo_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.creditmemo.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/creditmemo/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.creditmemo.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/creditmemo/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_invoice_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_invoice_renderers.xml
index 93973115fe64487a580821f89941f9f75a77b060..52767bf127078f12fabb86529732be352ae94cd5 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_invoice_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_invoice_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.invoice.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/invoice/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.invoice.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/invoice/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_renderers.xml
index 2a29812528c51a88898542497b74995cc7f7c14f..ad255a1c86d0ee63a9baf56f69092f58081539c7 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_shipment_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_shipment_renderers.xml
index 9c80cd6b0828ce1f587c016beca39fe8a6c57e98..b24d70d7e7adeab94f757af9f2277daa9cc60354 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_print_shipment_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_print_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.print.shipment.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/shipment/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.print.shipment.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/shipment/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_printcreditmemo.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_printcreditmemo.xml
index db93ead85e782155cdd623e24e6b72c9ba818604..56f2e61ec2cfbb640ad008ee1138f64daa6a6496 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_printcreditmemo.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_printcreditmemo.xml
@@ -26,17 +26,25 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_creditmemo_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="sales.order.print.creditmemo" template="order/print/creditmemo.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.creditmemo.renderers" as="renderer.list"/>
-            <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="account"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Creditmemo" name="sales.order.print.creditmemo" template="order/print/creditmemo.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.creditmemo.renderers" as="renderer.list"/>
+                <block class="Magento\Sales\Block\Order\Creditmemo\Totals" name="creditmemo_totals" template="order/totals.phtml" cacheable="false">
+                    <arguments>
+                        <argument name="label_properties" xsi:type="string">colspan="6" class="mark"</argument>
+                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                    </arguments>
+                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_printinvoice.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_printinvoice.xml
index 402d04b0a5ca9e0d6613ca0db8e75c376307e5a2..94b82fb33b46041b23d66a8d75ccd3b6f54746b1 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_printinvoice.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_printinvoice.xml
@@ -26,17 +26,25 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_invoice_renderers" />
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="sales.order.print.invoice" template="order/print/invoice.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.invoice.renderers" as="renderer.list" />
-            <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
-                <arguments>
-                    <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                    <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                </arguments>
-                <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="account"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Invoice" name="sales.order.print.invoice" template="order/print/invoice.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.invoice.renderers" as="renderer.list" />
+                <block class="Magento\Sales\Block\Order\Invoice\Totals" name="invoice_totals" template="order/totals.phtml" cacheable="false">
+                    <arguments>
+                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                    </arguments>
+                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                </block>
             </block>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_printshipment.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_printshipment.xml
index 34511268ffc14318be7438e48fe4d2dbdf3a7f18..5c6bda69699379ddad3e25e88f66913491ebe9ca 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_printshipment.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_printshipment.xml
@@ -25,10 +25,18 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="sales_order_print_shipment_renderers" />
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="sales.order.print.shipment" template="order/print/shipment.phtml">
-            <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.shipment.renderers" as="renderer.list"/>
-        </block>
-    </referenceContainer>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    <update handle="print" />
+    <body>
+        <attribute name="class" value="account"/>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="order.status" template="order/order_status.phtml" />
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="order.date" template="order/order_date.phtml" />
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\PrintOrder\Shipment" name="sales.order.print.shipment" template="order/print/shipment.phtml">
+                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.print.shipment.renderers" as="renderer.list"/>
+            </block>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_reorder.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_reorder.xml
index 1b8d243dab6dbea3354b4b2e8b5b8d141b9b2a65..967ffb5619cf92d897ab9a8eb6d13d91d20d05e6 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_reorder.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_reorder.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment.xml
index 1dea95386fc707f826f02ab17f7d47f68de28d73..bf384f818641186a1a0b4a729821b77f605b7997 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment.xml
@@ -25,19 +25,21 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="page.main.title">
-        <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml" />
-        <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml" />
-        <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="sales.order.shipment" />
-    </referenceContainer>
     <update handle="sales_order_info_links"/>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    <body>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml"/>
+            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="sales.order.shipment"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment_renderers.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment_renderers.xml
index 26f95697decc53a74b1211d337bcbc21cbcbc944..b530f7d870a0a96224e9a34783bb445b00e6e37a 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment_renderers.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_shipment_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.shipment.renderers">
-        <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/shipment/items/renderer/default.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.shipment.renderers">
+            <block class="Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer" as="default" template="order/shipment/items/renderer/default.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_view.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_view.xml
index 8508a406e960bbde8e75c01dbd385a0d73f6888f..56d0d3af2c2e8a30f903215190423350ac0722ee 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_view.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_view.xml
@@ -27,32 +27,34 @@
     <update handle="customer_account"/>
     <update handle="sales_order_item_renderers"/>
     <update handle="sales_order_item_price"/>
-    <referenceContainer name="page.main.title">
-        <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml" />
-        <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml" />
-        <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
-            <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="sales.order.info.buttons">
-        <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Sales\Block\Order\View" name="order.comments" template="order/order_comments.phtml" before="sales.order.info.links" />
-        <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false">
-            <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.items.renderers" as="renderer.list" />
-                <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
-                    <arguments>
-                        <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
-                        <argument name="value_properties" xsi:type="string">class="amount"</argument>
-                    </arguments>
-                    <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+    <update handle="sales_order_info_links"/>
+    <body>
+        <referenceContainer name="page.main.title">
+            <block class="Magento\Sales\Block\Order\Info" name="order.status" template="order/order_status.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" name="order.date" template="order/order_date.phtml"/>
+            <container name="order.actions.container" htmlTag="div" htmlClass="actions-toolbar order-actions-toolbar">
+                <block class="Magento\Sales\Block\Order\Info\Buttons" as="buttons" name="sales.order.info.buttons" cacheable="false"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="sales.order.info.buttons">
+            <block class="Magento\Sales\Block\Order\Info\Buttons\Rss" as="buttons.rss" name="sales.order.info.buttons.rss" cacheable="false"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Sales\Block\Order\View" name="order.comments" template="order/order_comments.phtml" before="sales.order.info.links"/>
+            <block class="Magento\Sales\Block\Order\View" name="sales.order.view" cacheable="false">
+                <block class="Magento\Sales\Block\Order\Items" name="order_items" template="order/items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.items.renderers" as="renderer.list"/>
+                    <block class="Magento\Sales\Block\Order\Totals" name="order_totals" template="order/totals.phtml">
+                        <arguments>
+                            <argument name="label_properties" xsi:type="string">colspan="4" class="mark"</argument>
+                            <argument name="value_properties" xsi:type="string">class="amount"</argument>
+                        </arguments>
+                        <block class="Magento\Tax\Block\Sales\Order\Tax" name="tax" template="order/tax.phtml"/>
+                    </block>
                 </block>
             </block>
-        </block>
-        <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="sales.order.view" />
-    </referenceContainer>
-    <update handle="sales_order_info_links"/>
-    <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+            <block class="Magento\Sales\Block\Order\Info" as="info" name="sales.order.info" after="sales.order.view"/>
+        </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="Magento_Core::template.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/templates/guest/form.phtml b/app/code/Magento/Sales/view/frontend/templates/guest/form.phtml
index 0c2d141bfece174f1cd0d6c2363f439ac372f816..87b52721795b0ccafdbf20f5a9b8184c0b48c271 100644
--- a/app/code/Magento/Sales/view/frontend/templates/guest/form.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/guest/form.phtml
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 ?>
-<form class="form orders search" id="oar-widget-orders-and-returns-form" data-mage-init='{"ordersReturns":{}, "validation":{}}' action="<?php echo $this->getActionUrl() ?>"
+<form class="form form-orders-search" id="oar-widget-orders-and-returns-form" data-mage-init='{"ordersReturns":{}, "validation":{}}' action="<?php echo $this->getActionUrl() ?>"
       method="post" name="guest_post">
     <fieldset class="fieldset">
         <legend class="legend"><span><?php echo __('Order Information') ?></span></legend>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
index d12df7489333e86cbf30bfd6294e1a2f3f8a7975..75a7a3424c787f3dfd6829b8fc4ea9aee03d6666 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items.phtml
@@ -42,7 +42,7 @@
 
 <div class="table-wrapper order-items-creditmemo">
     <table class="data table table-order-items creditmemo" id="my-refund-table-<?php echo $_creditmemo->getId(); ?>">
-        <caption class="table caption"><?php echo __('Items Refunded') ?></caption>
+        <caption class="table-caption"><?php echo __('Items Refunded') ?></caption>
         <thead>
             <tr>
                 <th class="col name"><?php echo __('Product Name') ?></th>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items/renderer/default.phtml b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items/renderer/default.phtml
index 3ac897b47902e7920d06216b8f74f0a0525bc6cb..77ead97e01f5d855cea7ac260b40b6f64129dc13 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items/renderer/default.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/creditmemo/items/renderer/default.phtml
@@ -29,7 +29,7 @@
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-        <dl class="item options">
+        <dl class="item-options">
         <?php foreach ($_options as $_option) : ?>
             <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
             <?php if (!$this->getPrintStatus()): ?>
@@ -68,11 +68,6 @@
             <?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
-            <a href="#" id="order-item-gift-message-link-<?php echo $_item->getId() ?>" class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId() ?>"
-               data-item-id="<?php echo $_item->getId() ?>"><?php echo __('Gift Message') ?></a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/history.phtml b/app/code/Magento/Sales/view/frontend/templates/order/history.phtml
index ea69f6635dd6d6fc2e28350a3acfbcb00d9c533d..d6019617745866ae4770768bf981e2f83c3ac54f 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/history.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/history.phtml
@@ -27,7 +27,7 @@
 <?php if($_orders->getSize()): ?>
     <div class="table-wrapper orders-history">
         <table class="data table table-order-items history" id="my-orders-table">
-            <caption class="table caption"><?php echo __('Orders') ?></caption>
+            <caption class="table-caption"><?php echo __('Orders') ?></caption>
             <thead>
                 <tr>
                     <th scope="col" class="col id"><?php echo __('Order #') ?></th>
@@ -46,7 +46,7 @@
                         <td data-th="<?php echo $this->escapeHtml(__('Ship To')) ?>" class="col shipping"><?php echo $_order->getShippingAddress() ? $this->escapeHtml($_order->getShippingAddress()->getName()) : '&nbsp;' ?></td>
                         <td data-th="<?php echo $this->escapeHtml(__('Order Total')) ?>" class="col total"><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></td>
                         <td data-th="<?php echo $this->escapeHtml(__('Status')) ?>" class="col status"><?php echo $_order->getStatusLabel() ?></td>
-                        <td data-th="" class="col actions">
+                        <td data-th="<?php echo $this->escapeHtml(__('Actions')) ?>" class="col actions">
                             <a href="<?php echo $this->getViewUrl($_order) ?>" class="action view">
                                 <span><?php echo __('View Order') ?></span>
                             </a>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
index fa70c0b03dc433c1353897af149a41f2718ac614..1e2d473bde2d6fa86b3266969b919a3304389cd8 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items.phtml
@@ -41,7 +41,7 @@
 </div>
 <div class="table-wrapper table-order-items invoice">
     <table class="data table table-order-items invoice" id="my-invoice-table-<?php echo $_invoice->getId(); ?>">
-        <caption class="table caption"><?php echo __('Items Invoiced') ?></caption>
+        <caption class="table-caption"><?php echo __('Items Invoiced') ?></caption>
         <thead>
             <tr>
                 <th class="col name"><?php echo __('Product Name') ?></th>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items/renderer/default.phtml b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items/renderer/default.phtml
index 49e3618ecbfab2c57e19113b5872422a3b1e3a96..6e4ff08b9c309dffb4ef316f8d5c18fddb568e06 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/invoice/items/renderer/default.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/invoice/items/renderer/default.phtml
@@ -29,7 +29,7 @@
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-        <dl class="item options">
+        <dl class="item-options">
         <?php foreach ($_options as $_option) : ?>
             <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
             <?php if (!$this->getPrintStatus()): ?>
@@ -56,14 +56,6 @@
             <?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
-            <a href="#"
-               id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
-               class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId()?>" data-item-id="<?php echo $_item->getId()?>">
-                <?php echo __('Gift Message') ?>
-            </a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/items.phtml b/app/code/Magento/Sales/view/frontend/templates/order/items.phtml
index b3e708bf8b8635a21f4a86e16c5542cdb24bf271..dabb1d4f188138528b8209b3393f00145c4dd9c8 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/items.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/items.phtml
@@ -26,7 +26,7 @@
 <?php $_giftMessage; ?>
 <div class="table-wrapper order-items">
     <table class="data table table-order-items" id="my-orders-table" summary="<?php echo __('Items Ordered') ?>">
-        <caption class="table caption"><?php echo __('Items Ordered') ?></caption>
+        <caption class="table-caption"><?php echo __('Items Ordered') ?></caption>
         <thead>
             <tr>
                 <th class="col name"><?php echo __('Product Name') ?></th>
@@ -48,25 +48,33 @@
             <tbody>
                 <?php echo $this->getItemHtml($_item) ?>
                 <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item) && $_item->getGiftMessageId()): ?>
-                <tr id="order-item-gift-message-<?php echo $_item->getId() ?>" role="region" aria-expanded="false" tabindex="-1" style="display: none;">
                     <?php $_giftMessage = $this->helper('Magento\GiftMessage\Helper\Message')->getGiftMessageForEntity($_item); ?>
-                    <td class="col message" colspan="7">
-                        <div class="gift message details">
+                    <tr>
+                        <td class="col options" colspan="5">
                             <a href="#"
-                               title="<?php echo __('Close') ?>"
-                               aria-controls="order-item-gift-message-<?php echo $_item->getId()?>"
-                               data-item-id="<?php echo $_item->getId()?>"
-                               class="action close">
-                                <?php echo __('Close') ?>
+                               id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
+                               class="action show"
+                               aria-controls="order-item-gift-message-<?php echo $_item->getId() ?>"
+                               data-item-id="<?php echo $_item->getId() ?>">
+                                <?php echo __('Gift Message') ?>
                             </a>
-                            <dl class="gift message">
-                                <dt class="gift sender"><strong class="label"><?php echo __('From:') ?></strong> <?php echo $this->escapeHtml($_giftMessage->getSender()) ?></dt>
-                                <dt class="gift recipient"><strong class="label"><?php echo __('To:') ?></strong> <?php echo $this->escapeHtml($_giftMessage->getRecipient()) ?></dt>
-                                <dd class="message text"><?php echo $this->helper('Magento\GiftMessage\Helper\Message')->getEscapedGiftMessage($_item) ?></dd>
-                            </dl>
-                        </div>
-                    </td>
-                </tr>
+                            <?php $_giftMessage = $this->helper('Magento\GiftMessage\Helper\Message')->getGiftMessageForEntity($_item); ?>
+                            <div class="order-gift-message" id="order-item-gift-message-<?php echo $_item->getId() ?>" role="region" aria-expanded="false" tabindex="-1">
+                                <a href="#"
+                                   title="<?php echo __('Close') ?>"
+                                   aria-controls="order-item-gift-message-<?php echo $_item->getId()?>"
+                                   data-item-id="<?php echo $_item->getId()?>"
+                                   class="action close">
+                                    <?php echo __('Close') ?>
+                                </a>
+                                <dl class="item-options">
+                                    <dt class="item-sender"><strong class="label"><?php echo __('From') ?></strong><?php echo $this->escapeHtml($_giftMessage->getSender()) ?></dt>
+                                    <dt class="item-recipient"><strong class="label"><?php echo __('To') ?></strong><?php echo $this->escapeHtml($_giftMessage->getRecipient()) ?></dt>
+                                    <dd class="item-message"><?php echo $this->helper('Magento\GiftMessage\Helper\Message')->getEscapedGiftMessage($_item) ?></dd>
+                                </dl>
+                            </div>
+                        </td>
+                    </tr>
                 <?php endif ?>
             </tbody>
             <?php endforeach; ?>
@@ -77,7 +85,7 @@
 require(['jquery', "mage/mage"], function(jQuery){
 
     jQuery('a.action.show').add('a.action.close').mage('giftMessage', {});
-    
+
 });
 </script>
 <?php endif; ?>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/items/renderer/default.phtml b/app/code/Magento/Sales/view/frontend/templates/order/items/renderer/default.phtml
index 0ca19d4cd61cd89f49a627b9fb981cbd2d5cac3c..8fbaac1ba6eab2927593b93c87b268eac95cfa5e 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/items/renderer/default.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/items/renderer/default.phtml
@@ -29,7 +29,7 @@ $_item = $this->getItem();
     <td class="col name" data-th="<?php echo $this->escapeHtml(__('Product Name')); ?>">
         <strong class="product name product-item-name"><?php echo $this->escapeHtml($_item->getName()) ?></strong>
         <?php if($_options = $this->getItemOptions()): ?>
-        <dl class="item options">
+        <dl class="item-options">
         <?php foreach ($_options as $_option) : ?>
             <dt><?php echo $this->escapeHtml($_option['label']) ?></dt>
             <?php if (!$this->getPrintStatus()): ?>
@@ -58,15 +58,6 @@ $_item = $this->getItem();
             <?php echo $addtInfoBlock->setItem($_item)->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item) && $_item->getGiftMessageId()): ?>
-            <a href="#"
-               id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
-               class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId()?>"
-               data-item-id="<?php echo $_item->getId()?>">
-                <?php echo __('Gift Message') ?>
-            </a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print.phtml
deleted file mode 100644
index 1d2073d39bae6b97cc7590589647cda9e1bc2e24..0000000000000000000000000000000000000000
--- a/app/code/Magento/Sales/view/frontend/templates/order/print.phtml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-?>
-<?php $_order = $this->getOrder() ?>
-<div class="page-title">
-    <h1 class="title"><?php echo __('Order #%1', $_order->getRealOrderId()) ?></h1>
-</div>
-<p class="order-date"><?php echo __('Order Date: %1', $this->formatDate($_order->getCreatedAtStoreDate(), 'long')) ?></p>
-
-<div class="order details view">
-    <?php if (!$_order->getIsVirtual()): ?>
-    <div class="block order shipping address">
-        <div class="title">
-            <strong><?php echo __('Shipping Address') ?></strong>
-        </div>
-        <div class="content">
-            <address><?php echo $_order->getShippingAddress()->format('html') ?></address>
-        </div>
-    </div>
-    <?php endif; ?>
-    <div class="block order billing address">
-        <div class="title">
-            <strong><?php echo __('Billing Address') ?></strong>
-        </div>
-        <div class="content">
-            <address><?php echo $_order->getBillingAddress()->format('html') ?></address>
-        </div>
-    </div>
-    <?php if (!$_order->getIsVirtual()): ?>
-    <div class="block order shipping method">
-        <div class="title">
-            <strong><?php echo __('Shipping Method') ?></strong>
-        </div>
-        <?php echo $this->escapeHtml($_order->getShippingDescription()) ?>
-    </div>
-    <?php endif; ?>
-    <div class="block order shipping">
-        <div class="title">
-            <strong><?php echo __('Payment Method') ?></strong>
-        </div>
-        <div class="content">
-            <?php echo $this->getPaymentInfoHtml() ?>
-        </div>
-    </div>
-</div>
-
-<div class="order-details-items">
-    <div class="order-title">
-        <strong><?php echo __('Items Ordered') ?></strong>
-    </div>
-    <table class="data table order items" id="my-orders-table">
-        <thead>
-        <tr>
-            <th class="col name"><?php echo __('Product Name') ?></th>
-            <th class="col sku"><?php echo __('SKU') ?></th>
-            <th class="col price"><?php echo __('Price') ?></th>
-            <th class="col qty"><?php echo __('Qty') ?></th>
-            <th class="col subtotal"><?php echo __('Subtotal') ?></th>
-        </tr>
-        </thead>
-        <tfoot>
-        <?php echo $this->getChildHtml('order_totals') ?>
-        </tfoot>
-        <?php $_items = $_order->getItemsCollection(); ?>
-        <?php $_count = $_items->count(); ?>
-        <?php foreach ($_items as $_item): ?>
-        <?php if ($_item->getParentItem()) continue; ?>
-        <tbody>
-            <?php echo $this->getItemHtml($_item) ?>
-        </tbody>
-        <?php endforeach; ?>
-    </table>
-</div>
-<script type="text/javascript">
-window.print();
-</script>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
index 58cdda0f2c4df7c0669ed2a51a18298b218a790e..4e14644b21320cfda40651a6e8421866579d3b54 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/print/creditmemo.phtml
@@ -23,10 +23,6 @@
  */
 ?>
 <?php $_order = $this->getOrder() ?>
-<div class="page-title">
-    <h1 class="title"><?php echo __('Order #%1', $_order->getRealOrderId()) ?></h1>
-</div>
-<p class="order date"><?php echo __('Order Date: %1', $this->formatDate($_order->getCreatedAtStoreDate(), 'long')) ?></p>
 <?php $_creditmemo = $this->getCreditmemo() ?>
 <?php if($_creditmemo): ?>
     <?php $_creditmemos = array($_creditmemo); ?>
@@ -34,57 +30,13 @@
     <?php $_creditmemos = $_order->getCreditmemosCollection() ?>
 <?php endif; ?>
 <?php foreach ($_creditmemos as $_creditmemo): ?>
-    <div class="order details view">
-        <div class="title">
-            <strong><?php echo __('Refund #%1', $_creditmemo->getIncrementId()) ?></strong>
-        </div>
-
-        <div class="block order shipping address">
-        <?php if (!$_order->getIsVirtual()): ?>
-            <div class="title">
-                <strong><?php echo __('Shipping Address') ?></strong>
-            </div>
-            <div class="content">
-                <?php $_shipping = $_creditmemo->getShippingAddress() ?>
-                <address><?php echo $_shipping->format('html') ?></address>
-            </div>
-        </div>
-
-        <div class="block order billing address">
-        <?php endif; ?>
-            <div class="title">
-                <strong><?php echo __('Billing Address') ?></strong>
-            </div>
-            <div class="content">
-                <?php $_billing = $_creditmemo->getbillingAddress() ?>
-                <address><?php echo $_order->getBillingAddress()->format('html') ?></address>
-            </div>
-        </div>
-
-        <?php if (!$_order->getIsVirtual()): ?>
-        <div class="block order shipping method">
-            <div class="title">
-                <strong><?php echo __('Shipping Method') ?></strong>
-            </div>
-            <div class="content">
-                <?php echo $this->escapeHtml($_order->getShippingDescription()) ?>
-            </div>
-        </div>
-        <?php endif; ?>
-        <div class="block order payment-method">
-            <div class="title">
-                <strong><?php echo __('Payment Method') ?></strong>
-            </div>
-            <div class="content">
-                <?php echo $this->getPaymentInfoHtml() ?>
-            </div>
-        </div>
+<div class="order-details-items creditmemo">
+    <div class="order-title">
+        <strong><?php echo __('Refund #%1', $_creditmemo->getIncrementId()) ?></strong>
     </div>
-    <div class="order-details-items">
-        <div class="order-title">
-            <strong><?php echo __('Items Refunded') ?></strong>
-        </div>
-        <table class="data table order items" id="my-refund-table-<?php echo $_creditmemo->getId(); ?>">
+    <div class="table-wrapper order-items-creditmemo">
+        <table class="data table table-order-items creditmemo" id="my-refund-table-<?php echo $_creditmemo->getId(); ?>">
+            <caption class="table-caption"><?php echo __('Items Refunded') ?></caption>
             <thead>
                 <tr>
                     <th class="col name"><?php echo __('Product Name') ?></th>
@@ -109,7 +61,48 @@
             <?php endforeach; ?>
         </table>
     </div>
+    <div class="block block-order-details-view">
+        <div class="block-title">
+            <strong><?php echo __('Order Information') ?></strong>
+        </div>
+        <div class="block-content">
+        <?php if (!$_order->getIsVirtual()): ?>
+            <div class="box box-order-shipping-address">
+                <div class="box-title">
+                    <strong><?php echo __('Shipping Address') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php $_shipping = $_creditmemo->getShippingAddress() ?>
+                    <address><?php echo $_shipping->format('html') ?></address>
+                </div>
+            </div>
+            <div class="box box-order-shipping-method">
+                <div class="box-title">
+                    <strong><?php echo __('Shipping Method') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php echo $this->escapeHtml($_order->getShippingDescription()) ?>
+                </div>
+            </div>
+        <?php endif; ?>
+            <div class="box box-order-billing-address">
+                <div class="box-title">
+                    <strong><?php echo __('Billing Address') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php $_billing = $_creditmemo->getbillingAddress() ?>
+                    <address><?php echo $_order->getBillingAddress()->format('html') ?></address>
+                </div>
+            </div>
+            <div class="box box-order-billing-method">
+                <div class="box-title">
+                    <strong><?php echo __('Payment Method') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php echo $this->getPaymentInfoHtml() ?>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
 <?php endforeach; ?>
-<script type="text/javascript">
-window.print();
-</script>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
index d9e7a05e76bc7e58625b303ad440eadaf32700ce..246bc7bac1c25ba09f54fcc5947451c3f2846b63 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/print/invoice.phtml
@@ -23,10 +23,6 @@
  */
 ?>
 <?php $_order = $this->getOrder() ?>
-<div class="page-title">
-    <h1 class="title"><?php echo __('Order #%1', $_order->getRealOrderId()) ?></h1>
-</div>
-<p class="order date"><?php echo __('Order Date: %1', $this->formatDate($_order->getCreatedAtStoreDate(), 'long')) ?></p>
 <?php $_invoice = $this->getInvoice() ?>
 <?php if ($_invoice): ?>
 <?php $_invoices = array($_invoice); ?>
@@ -34,79 +30,83 @@
 <?php $_invoices = $_order->getInvoiceCollection() ?>
 <?php endif; ?>
 <?php foreach ($_invoices as $_invoice): ?>
-<div class="order details view">
-    <div class="title">
-        <strong><?php echo __('Invoice #%1', $_invoice->getIncrementId()) ?></strong>
+<div class="order-details-items invoice">
+    <div class="order-title">
+        <strong><?php echo __('Invoice #') ?><?php echo $_invoice->getIncrementId(); ?></strong>
     </div>
-
-    <div class="block order shipping address">
-    <?php if (!$_order->getIsVirtual()): ?>
-        <div class="title">
-            <strong><?php echo __('Shipping Address') ?></strong>
-        </div>
-        <div class="content">
-            <?php $_shipping = $_invoice->getShippingAddress() ?>
-            <address><?php echo $_shipping->format('html') ?></address>
-        </div>
+    <div class="table-wrapper table-order-items invoice">
+        <table class="data table table-order-items invoice" id="my-invoice-table-<?php echo $_invoice->getId(); ?>">
+            <caption class="table-caption"><?php echo __('Items Invoiced') ?></caption>
+            <thead>
+            <tr>
+                <th class="col name"><?php echo __('Product Name') ?></th>
+                <th class="col sku"><?php echo __('SKU') ?></th>
+                <th class="col price"><?php echo __('Price') ?></th>
+                <th class="col qty"><?php echo __('Qty Invoiced') ?></th>
+                <th class="col subtotal"><?php echo __('Subtotal') ?></th>
+            </tr>
+            </thead>
+            <tfoot>
+                <?php echo $this->getInvoiceTotalsHtml($_invoice)?>
+            </tfoot>
+            <?php $_items = $_invoice->getItemsCollection(); ?>
+            <?php $_count = $_items->count(); ?>
+            <?php foreach ($_items as $_item): ?>
+            <?php if ($_item->getOrderItem()->getParentItem()) continue; ?>
+            <tbody>
+                <?php echo $this->getItemHtml($_item) ?>
+            </tbody>
+            <?php endforeach; ?>
+        </table>
     </div>
-    <div class="block order billing address">
-        <?php endif; ?>
-        <div class="title">
-            <strong><?php echo __('Billing Address') ?></strong>
-        </div>
-        <div class="content">
-            <?php $_billing = $_invoice->getbillingAddress() ?>
-            <address><?php echo $_order->getBillingAddress()->format('html') ?></address>
+    <div class="block block-order-details-view">
+        <div class="block-title">
+            <strong><?php echo __('Order Information') ?></strong>
         </div>
-    </div>
-    <?php if (!$_order->getIsVirtual()): ?>
+        <div class="block-content">
+        <?php if (!$_order->getIsVirtual()): ?>
+            <div class="box box-order-shipping-address">
+                <div class="box-title">
+                    <strong><?php echo __('Shipping Address') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php $_shipping = $_invoice->getShippingAddress() ?>
+                    <address><?php echo $_shipping->format('html') ?></address>
+                </div>
+            </div>
 
-    <div class="block order shipping method">
-        <div class="title">
-            <strong><?php echo __('Shipping Method') ?></strong>
-        </div>
-        <div class="content">
-            <?php echo $this->escapeHtml($_order->getShippingDescription()) ?>
-        </div>
-    </div>
-    <?php endif; ?>
-    <div class="block order payment-method">
-        <div class="title">
-            <strong><?php echo __('Payment Method') ?></strong>
-        </div>
-        <div class="content">
-            <?php echo $this->getPaymentInfoHtml() ?>
+            <div class="box box-order-shipping-method">
+                <div class="box-title">
+                    <strong><?php echo __('Shipping Method') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php if ($_order->getShippingDescription()): ?>
+                        <?php echo $this->escapeHtml($_order->getShippingDescription()) ?>
+                    <?php else: ?>
+                        <?php echo __('No shipping information available'); ?>
+                    <?php endif; ?>
+                </div>
+            </div>
+        <?php endif; ?>
+            <div class="box box-order-billing-address">
+                <div class="box-title">
+                    <strong><?php echo __('Billing Address') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php $_billing = $_invoice->getbillingAddress() ?>
+                    <address><?php echo $_order->getBillingAddress()->format('html') ?></address>
+                </div>
+            </div>
+
+            <div class="box box-order-billing-method">
+                <div class="box-title">
+                    <strong><?php echo __('Payment Method') ?></strong>
+                </div>
+                <div class="box-content">
+                    <?php echo $this->getPaymentInfoHtml() ?>
+                </div>
+            </div>
         </div>
     </div>
 </div>
-<div class="order-details-items">
-    <div class="order-title">
-        <strong><?php echo __('Items Invoiced') ?></strong>
-    </div>
-    <table class="data table order items" id="my-invoice-table-<?php echo $_invoice->getId(); ?>">
-        <thead>
-        <tr>
-            <th class="col name"><?php echo __('Product Name') ?></th>
-            <th class="col sku"><?php echo __('SKU') ?></th>
-            <th class="col price"><?php echo __('Price') ?></th>
-            <th class="col qty"><span class="nobr"><?php echo __('Qty Invoiced') ?></span></th>
-            <th class="col subtotal"><?php echo __('Subtotal') ?></th>
-        </tr>
-        </thead>
-        <tfoot>
-            <?php echo $this->getInvoiceTotalsHtml($_invoice)?>
-        </tfoot>
-        <?php $_items = $_invoice->getItemsCollection(); ?>
-        <?php $_count = $_items->count(); ?>
-        <?php foreach ($_items as $_item): ?>
-        <?php if ($_item->getOrderItem()->getParentItem()) continue; ?>
-        <tbody>
-            <?php echo $this->getItemHtml($_item) ?>
-        </tbody>
-        <?php endforeach; ?>
-    </table>
-</div>
 <?php endforeach; ?>
-<script type="text/javascript">
-window.print();
-</script>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/print/shipment.phtml b/app/code/Magento/Sales/view/frontend/templates/order/print/shipment.phtml
index 67091ed4ca39132d597a4e1db157415452267a1c..2077d1f23d9487de6aa62af1e0766c28fc4f9816 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/print/shipment.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/print/shipment.phtml
@@ -24,94 +24,80 @@
 ?>
 <?php /* @var $this \Magento\Sales\Block\Order\PrintOrder\Shipment */ ?>
 <?php $order = $this->getOrder(); ?>
-<div class="page-title">
-    <h1 class="title">
-        <?php echo __('Order #%1', $this->getObjectData($order, 'real_order_id')); ?>
-    </h1>
-</div>
-<p class="order-date"><?php echo __('Order Date: %1', $this->formatDate($this->getObjectData($order, 'created_at_store_date'), 'long')) ?></p>
 <?php if (!$this->getObjectData($order, 'is_virtual')): ?>
 <?php foreach ($this->getShipmentsCollection() as $shipment): ?>
-    <div class="order details view">
-        <div class="title">
+    <div class="order-details-items shipments">
+        <div class="order-title">
             <strong><?php echo __('Shipment #%1', $this->getObjectData($shipment, 'increment_id')); ?></strong>
         </div>
-
-        <div class="block order shipping address">
-            <div class="title">
-                <strong><?php echo __('Shipping Address') ?></strong>
-            </div>
-            <div class="content">
-                <address><?php echo $this->getShipmentAddressFormattedHtml($shipment); ?></address>
-            </div>
+        <div class="table-wrapper order-items-shipment">
+            <table class="data table table-order-items shipment" id="my-shipment-table-<?php echo $this->getObjectData($shipment, 'id') ?>">
+                <caption class="table-caption"><?php echo __('Items Invoiced') ?></caption>
+                <thead>
+                <tr>
+                    <th class="col name"><?php echo __('Product Name') ?></th>
+                    <th class="col sku"><?php echo __('SKU') ?></th>
+                    <th class="col price"><?php echo __('Qty Shipped') ?></th>
+                </tr>
+                </thead>
+                <?php foreach ($this->getShipmentItems($shipment) as $item): ?>
+                <tbody>
+                    <?php echo $this->getItemHtml($item) ?>
+                </tbody>
+                <?php endforeach; ?>
+            </table>
         </div>
-
-        <div class="block order billing address">
-            <div class="title">
-                <strong><?php echo __('Billing Address') ?></strong>
-            </div>
-            <div class="content">
-                <address><?php echo $this->getBillingAddressFormattedHtml($order); ?></address>
+        <div class="block block-order-details-view">
+            <div class="block-title">
+                <strong><?php echo __('Order Information') ?></strong>
             </div>
-        </div>
+            <div class="block-content">
+                <div class="box box-order-shipping-address">
+                    <div class="box-title">
+                        <strong><?php echo __('Shipping Address') ?></strong>
+                    </div>
+                    <div class="box-content">
+                        <address><?php echo $this->getShipmentAddressFormattedHtml($shipment); ?></address>
+                    </div>
+                </div>
 
-        <div class="block order shipping method">
-            <div class="title">
-                <strong><?php echo __('Shipping Method') ?></strong>
-            </div>
-            <?php echo $this->escapeHtml($this->getObjectData($order, 'shipping_description')); ?>
-            <?php $tracks = $this->getShipmentTracks($shipment);
-            if ($tracks): ?>
-                <table class="data table order tracking" id="my-shipment-tracking">
-                    <thead>
-                    <tr>
-                        <th class="col label"><?php echo __('Title')?></th>
-                        <th class="col number"><?php echo __('Number')?></th>
-                    </tr>
-                    </thead>
-                    <tbody>
+                <div class="box box-order-shipping-method">
+                    <div class="box-title">
+                        <strong><?php echo __('Shipping Method') ?></strong>
+                    </div>
+                    <div class="box-content">
+                    <?php echo $this->escapeHtml($this->getObjectData($order, 'shipping_description')); ?>
+                    <?php $tracks = $this->getShipmentTracks($shipment);
+                    if ($tracks): ?>
+                        <dl class="order-tracking">
                         <?php foreach ($tracks as $track): ?>
-                    <tr>
-                        <td class="col label"><?php echo $this->escapeHtml($this->getObjectData($track, 'title')); ?></td>
-                        <td class="col number"><?php echo $this->escapeHtml($this->getObjectData($track, 'number')); ?></td>
-                    </tr>
-                        <?php endforeach; ?>
-                    </tbody>
-                </table>
-            <?php endif; ?>
-        </div>
+                            <dt class="tracking-title"><?php echo $this->escapeHtml($this->getObjectData($track, 'title')); ?></dt>
+                            <dd class="tracking-content"><?php echo $this->escapeHtml($this->getObjectData($track, 'number')); ?></dd>
+                            <?php endforeach; ?>
+                        </dl>
+                    <?php endif; ?>
+                    </div>
+                </div>
 
-        <div class="block order payment-method">
-            <div class="title">
-                <strong><?php echo __('Payment Method') ?></strong>
-            </div>
-            <div class="content">
-                <?php echo $this->getPaymentInfoHtml() ?>
-            </div>
-        </div>
+                <div class="box box-order-billing-method">
+                    <div class="box-title">
+                        <strong><?php echo __('Billing Address') ?></strong>
+                    </div>
+                    <div class="box-content">
+                        <address><?php echo $this->getBillingAddressFormattedHtml($order); ?></address>
+                    </div>
+                </div>
 
-    </div>
-    <div class="order-details-items">
-        <div class="order-title">
-            <strong><?php echo __('Items Shipped') ?></strong>
+                <div class="box box-order-billing-method">
+                    <div class="box-title">
+                        <strong><?php echo __('Payment Method') ?></strong>
+                    </div>
+                    <div class="box-content">
+                        <?php echo $this->getPaymentInfoHtml() ?>
+                    </div>
+                </div>
+            </div>
         </div>
-        <table class="data table order items" id="my-shipment-table-<?php echo $this->getObjectData($shipment, 'id') ?>">
-            <thead>
-            <tr>
-                <th class="col name"><?php echo __('Product Name') ?></th>
-                <th class="col sku"><?php echo __('SKU') ?></th>
-                <th class="col price"><span class="nobr"><?php echo __('Qty Shipped') ?></span></th>
-            </tr>
-            </thead>
-            <?php foreach ($this->getShipmentItems($shipment) as $item): ?>
-            <tbody>
-                <?php echo $this->getItemHtml($item) ?>
-            </tbody>
-            <?php endforeach; ?>
-        </table>
     </div>
     <?php endforeach; ?>
 <?php endif; ?>
-<script type="text/javascript">
-window.print();
-</script>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/recent.phtml b/app/code/Magento/Sales/view/frontend/templates/order/recent.phtml
index caf54b3b9b3326f6eebc17c8a979ecedb738c1b8..5d63deba6f7f6847bafaed2e9472ae9fdeb5b919 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/recent.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/recent.phtml
@@ -37,7 +37,7 @@
     <?php if( sizeof($_orders->getItems()) > 0 ): ?>
         <div class="table-wrapper orders-recent">
             <table class="data table table-order-items recent" id="my-orders-table">
-                <caption class="table caption"><?php echo __('Recent Orders') ?></caption>
+                <caption class="table-caption"><?php echo __('Recent Orders') ?></caption>
                 <thead>
                     <tr>
                         <th scope="col" class="col id"><?php echo __('Order #') ?></th>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/shipment/items/renderer/default.phtml b/app/code/Magento/Sales/view/frontend/templates/order/shipment/items/renderer/default.phtml
index a5f1ceecc0ca140a883b1d8d0b10a63efa167edf..24d5c7383de3feea8d6594bb5c2007cd82c5ad0e 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/shipment/items/renderer/default.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/shipment/items/renderer/default.phtml
@@ -55,15 +55,6 @@
             <?php echo $addInfoBlock->setItem($_item->getOrderItem())->toHtml(); ?>
         <?php endif; ?>
         <?php echo $this->escapeHtml($_item->getDescription()) ?>
-        <?php if ($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order_item', $_item->getOrderItem()) && $_item->getGiftMessageId()): ?>
-            <a href="#"
-               id="order-item-gift-message-link-<?php echo $_item->getId() ?>"
-               class="action show"
-               aria-controls="order-item-gift-message-<?php echo $_item->getId() ?>"
-               data-item-id="<?php echo $_item->getId() ?>">
-                <?php echo __('Gift Message') ?>
-            </a>
-        <?php endif; ?>
     </td>
     <td class="col sku" data-th="<?php echo $this->escapeHtml(__('SKU')); ?>"><?php echo $this->prepareSku($this->getSku()) ?></td>
     <td class="col qty" data-th="<?php echo $this->escapeHtml(__('Qty Shipped')); ?>"><?php echo $_item->getQty()*1 ?></td>
diff --git a/app/code/Magento/Sales/view/frontend/templates/order/view.phtml b/app/code/Magento/Sales/view/frontend/templates/order/view.phtml
index 096ef21e0f70d1175d5c063917740eaf20a1c99b..258d434a79e867245e96e71be565b919f78bf2d6 100644
--- a/app/code/Magento/Sales/view/frontend/templates/order/view.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/order/view.phtml
@@ -36,14 +36,14 @@
     <?php echo $this->getChildHtml('order_items') ?>
 
     <?php if($this->helper('Magento\GiftMessage\Helper\Message')->getIsMessagesAvailable('order', $_order) && $_order->getGiftMessageId()): ?>
-    <div class="block block-order-details-additional">
+    <div class="block block-order-details-gift-message">
         <div class="block-title"><strong><?php echo __('Gift Message for This Order') ?></strong></div>
         <?php $_giftMessage=$this->helper('Magento\GiftMessage\Helper\Message')->getGiftMessageForEntity($_order); ?>
         <div class="block-content">
-            <dl class="gift-message">
-                <dt class="gift-sender"><strong class="label"><?php echo __('From:') ?></strong> <?php echo $this->escapeHtml($_giftMessage->getSender()) ?></dt>
-                <dt class="gift-recipient"><strong class="label"><?php echo __('To:') ?></strong> <?php echo $this->escapeHtml($_giftMessage->getRecipient()) ?></dt>
-                <dd class="gift-message-text"><?php echo $this->helper('Magento\GiftMessage\Helper\Message')->getEscapedGiftMessage($_order) ?></dd>
+            <dl class="item-options">
+                <dt class="item-sender"><strong class="label"><?php echo __('From') ?></strong><?php echo $this->escapeHtml($_giftMessage->getSender()) ?></dt>
+                <dt class="item-recipient"><strong class="label"><?php echo __('To') ?></strong><?php echo $this->escapeHtml($_giftMessage->getRecipient()) ?></dt>
+                <dd class="item-message"><?php echo $this->helper('Magento\GiftMessage\Helper\Message')->getEscapedGiftMessage($_order) ?></dd>
             </dl>
         </div>
     </div>
diff --git a/app/code/Magento/Sales/view/frontend/templates/widget/guest/form.phtml b/app/code/Magento/Sales/view/frontend/templates/widget/guest/form.phtml
index 45407067608761e8040b811f182de1eaba423a0a..8d6d832cd616557879b89d3b85bd4f016021adef 100644
--- a/app/code/Magento/Sales/view/frontend/templates/widget/guest/form.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/widget/guest/form.phtml
@@ -24,13 +24,13 @@
 /** @var $this \Magento\Sales\Block\Widget\Guest\Form */
 ?>
 <?php if ($this->isEnable()): ?>
-    <div class="widget block orders returns">
-        <div class="title">
+    <div class="widget block block-orders-returns">
+        <div class="block-title">
             <strong><?php echo __('Orders and Returns') ?></strong>
         </div>
-        <div class="content">
+        <div class="block-content">
             <form id="oar-widget-orders-and-returns-form" data-mage-init='{"ordersReturns":{},"validation":{}}' action="<?php echo $this->getActionUrl() ?>" method="post"
-                  class="form orders search" name="guest_post">
+                  class="form form-orders-search" name="guest_post">
                 <fieldset class="fieldset">
                     <div class="field find required">
                         <label class="label"><span><?php echo __('Find Order By:') ?></span></label>
@@ -67,7 +67,7 @@
                                    data-validate="{required:true, 'validate-email':true}">
                         </div>
                     </div>
-                    <div id="oar-zip" style="display:none;" class="field required">
+                    <div id="oar-zip" style="display: none;" class="field required">
                         <label for="oar_zip" class="label"><span><?php echo __('Billing ZIP Code') ?></span></label>
 
                         <div class="control">
@@ -79,7 +79,7 @@
                 <div class="actions-toolbar">
                     <div class="primary">
                         <button type="submit" title="Continue" class="action search">
-                            <span><?php echo __('Continue') ?></span>
+                            <span><?php echo __('Find') ?></span>
                         </button>
                     </div>
                 </div>
diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json
index 6cce4de8ff6940b715ef01a936e5c42c7f3b88b1..a53b5480102227e178b69fbda9b2a83a6ccb5138 100644
--- a/app/code/Magento/SalesRule/composer.json
+++ b/app/code/Magento/SalesRule/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-rule": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-reports": "0.1.0-alpha101",
-        "magento/module-catalog-rule": "0.1.0-alpha101",
-        "magento/module-widget": "0.1.0-alpha101",
-        "magento/module-cron": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-rule": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-reports": "0.1.0-alpha102",
+        "magento/module-catalog-rule": "0.1.0-alpha102",
+        "magento/module-widget": "0.1.0-alpha102",
+        "magento/module-cron": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_edit.xml b/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_edit.xml
index 5eb66a37ccb743bb4d0e1a8703764f77ea0607e0..cfd5e13cc784ffdf279c6cdf875163c695566803 100644
--- a/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_edit.xml
+++ b/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_edit.xml
@@ -23,41 +23,43 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tabs" name="promo_quote_edit_tabs">
-            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Main" name="promo_quote_edit_tab_main"/>
-            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Conditions" name="promo_quote_edit_tab_conditions"/>
-            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Actions" name="promo_quote_edit_tab_actions"/>
-            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Labels" name="promo_quote_edit_tab_labels"/>
-            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons" name="promo_quote_edit_tab_coupons">
-                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons\Form" name="promo_quote_edit_tab_coupons_form"/>
-                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons\Grid" name="promo_quote_edit_tab_coupons_grid"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tabs" name="promo_quote_edit_tabs">
+                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Main" name="promo_quote_edit_tab_main"/>
+                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Conditions" name="promo_quote_edit_tab_conditions"/>
+                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Actions" name="promo_quote_edit_tab_actions"/>
+                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Labels" name="promo_quote_edit_tab_labels"/>
+                <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons" name="promo_quote_edit_tab_coupons">
+                    <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons\Form" name="promo_quote_edit_tab_coupons_form"/>
+                    <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Coupons\Grid" name="promo_quote_edit_tab_coupons_grid"/>
+                </block>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">main_section</argument>
+                    <argument name="block" xsi:type="string">promo_quote_edit_tab_main</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">conditions_section</argument>
+                    <argument name="block" xsi:type="string">promo_quote_edit_tab_conditions</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">actions_section</argument>
+                    <argument name="block" xsi:type="string">promo_quote_edit_tab_actions</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">labels_section</argument>
+                    <argument name="block" xsi:type="string">promo_quote_edit_tab_labels</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">coupons_section</argument>
+                    <argument name="block" xsi:type="string">promo_quote_edit_tab_coupons</argument>
+                </action>
             </block>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">main_section</argument>
-                <argument name="block" xsi:type="string">promo_quote_edit_tab_main</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">conditions_section</argument>
-                <argument name="block" xsi:type="string">promo_quote_edit_tab_conditions</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">actions_section</argument>
-                <argument name="block" xsi:type="string">promo_quote_edit_tab_actions</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">labels_section</argument>
-                <argument name="block" xsi:type="string">promo_quote_edit_tab_labels</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">coupons_section</argument>
-                <argument name="block" xsi:type="string">promo_quote_edit_tab_coupons</argument>
-            </action>
-        </block>
-        <block class="Magento\Backend\Block\Template" template="Magento_SalesRule::promo/salesrulejs.phtml" name="promo_quote_edit_jsinit"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit" name="promo_quote_edit"/>
-    </referenceContainer>
+            <block class="Magento\Backend\Block\Template" template="Magento_SalesRule::promo/salesrulejs.phtml" name="promo_quote_edit_jsinit"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit" name="promo_quote_edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_index.xml b/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_index.xml
index 3033f1a3e8c681a0b2389531c7cbc4e59794043b..5501d0c01d9da4b0fb4c789235bfb8127dc908ce 100644
--- a/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_index.xml
+++ b/app/code/Magento/SalesRule/view/adminhtml/layout/sales_rule_promo_quote_index.xml
@@ -24,98 +24,100 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote" name="adminhtml.block.promo.quote.grid.container">
-            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.promo.quote.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">promo_quote_grid</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\SalesRule\Model\Resource\Rule\Quote\Collection</argument>
-                    <argument name="default_sort" xsi:type="string">sort_order</argument>
-                    <argument name="default_dir" xsi:type="string">ASC</argument>
-                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.promo.quote.grid.columnSet">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\SalesRule\Block\Adminhtml\Promo\Quote" name="adminhtml.block.promo.quote.grid.container">
+                <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.promo.quote.grid" as="grid">
                     <arguments>
-                        <argument name="rowUrl" xsi:type="array">
-                            <item name="path" xsi:type="string">sales_rule/*/edit</item>
-                            <item name="extraParamsTemplate" xsi:type="array">
-                                <item name="id" xsi:type="string">getRuleId</item>
-                            </item>
-                        </argument>
+                        <argument name="id" xsi:type="string">promo_quote_grid</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\SalesRule\Model\Resource\Rule\Quote\Collection</argument>
+                        <argument name="default_sort" xsi:type="string">sort_order</argument>
+                        <argument name="default_dir" xsi:type="string">ASC</argument>
+                        <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="rule_id">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.promo.quote.grid.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">ID</argument>
-                            <argument name="index" xsi:type="string">rule_id</argument>
-                            <argument name="column_css_class" xsi:type="string">col-id</argument>
-                            <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Rule</argument>
-                            <argument name="index" xsi:type="string">name</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="coupon_code">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Coupon Code</argument>
-                            <argument name="index" xsi:type="string">code</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="from_date">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Start on</argument>
-                            <argument name="type" xsi:type="string">date</argument>
-                            <argument name="index" xsi:type="string">from_date</argument>
-                            <argument name="column_css_class" xsi:type="string">col-date</argument>
-                            <argument name="header_css_class" xsi:type="string">col-date</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="to_date">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">End on</argument>
-                            <argument name="type" xsi:type="string">date</argument>
-                            <argument name="default" xsi:type="string">--</argument>
-                            <argument name="index" xsi:type="string">to_date</argument>
-                            <argument name="column_css_class" xsi:type="string">col-date</argument>
-                            <argument name="header_css_class" xsi:type="string">col-date</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Status</argument>
-                            <argument name="index" xsi:type="string">is_active</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="options" xsi:type="array">
-                                <item name="active" xsi:type="array">
-                                    <item name="value" xsi:type="string">1</item>
-                                    <item name="label" xsi:type="string" translate="true">Active</item>
-                                </item>
-                                <item name="inactive" xsi:type="array">
-                                    <item name="value" xsi:type="string">0</item>
-                                    <item name="label" xsi:type="string" translate="true">Inactive</item>
+                            <argument name="rowUrl" xsi:type="array">
+                                <item name="path" xsi:type="string">sales_rule/*/edit</item>
+                                <item name="extraParamsTemplate" xsi:type="array">
+                                    <item name="id" xsi:type="string">getRuleId</item>
                                 </item>
                             </argument>
                         </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="rule_website">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Web Site</argument>
-                            <argument name="index" xsi:type="string">website_ids</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sort_order">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Priority</argument>
-                            <argument name="index" xsi:type="string">sort_order</argument>
-                        </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="rule_id">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">ID</argument>
+                                <argument name="index" xsi:type="string">rule_id</argument>
+                                <argument name="column_css_class" xsi:type="string">col-id</argument>
+                                <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Rule</argument>
+                                <argument name="index" xsi:type="string">name</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="coupon_code">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Coupon Code</argument>
+                                <argument name="index" xsi:type="string">code</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="from_date">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Start on</argument>
+                                <argument name="type" xsi:type="string">date</argument>
+                                <argument name="index" xsi:type="string">from_date</argument>
+                                <argument name="column_css_class" xsi:type="string">col-date</argument>
+                                <argument name="header_css_class" xsi:type="string">col-date</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="to_date">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">End on</argument>
+                                <argument name="type" xsi:type="string">date</argument>
+                                <argument name="default" xsi:type="string">--</argument>
+                                <argument name="index" xsi:type="string">to_date</argument>
+                                <argument name="column_css_class" xsi:type="string">col-date</argument>
+                                <argument name="header_css_class" xsi:type="string">col-date</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Status</argument>
+                                <argument name="index" xsi:type="string">is_active</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="options" xsi:type="array">
+                                    <item name="active" xsi:type="array">
+                                        <item name="value" xsi:type="string">1</item>
+                                        <item name="label" xsi:type="string" translate="true">Active</item>
+                                    </item>
+                                    <item name="inactive" xsi:type="array">
+                                        <item name="value" xsi:type="string">0</item>
+                                        <item name="label" xsi:type="string" translate="true">Inactive</item>
+                                    </item>
+                                </argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="rule_website">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Web Site</argument>
+                                <argument name="index" xsi:type="string">website_ids</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="options" xsi:type="options" model="Magento\Backend\Model\Config\Source\Website\OptionHash"/>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="sort_order">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Priority</argument>
+                                <argument name="index" xsi:type="string">sort_order</argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term.php b/app/code/Magento/Search/Controller/Adminhtml/Term.php
index 8250fb33bddf8ab91510df36b74619357baf39e6..dfbbc2e9c12b59c9363ad17ecd9af4fa4dd1e160 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term.php
@@ -28,13 +28,32 @@ use Magento\Backend\App\Action;
 class Term extends \Magento\Backend\App\Action
 {
     /**
-     * @return $this
+     * @var \Magento\Framework\View\Result\PageFactory
      */
-    protected function _initAction()
+    protected $resultPageFactory;
+
+    /**
+     * @param Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory
+    ) {
+        parent::__construct($context);
+        $this->resultPageFactory = $resultPageFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Page
+     */
+    protected function createPage()
     {
-        $this->_view->loadLayout();
-        $this->_setActiveMenu('Magento_Search::search_term')->_addBreadcrumb(__('Search'), __('Search'));
-        return $this;
+        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
+        $resultPage = $this->resultPageFactory->create();
+        $resultPage->setActiveMenu('Magento_Search::search_term')
+            ->addBreadcrumb(__('Search'), __('Search'));
+        return $resultPage;
     }
 
     /**
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
index 1bec9443a92f34adc58021fd2aff2a91a4801b12..c730da3c34276c7621401b6b64f47d394625c60d 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Delete.php
@@ -27,26 +27,45 @@ namespace Magento\Search\Controller\Adminhtml\Term;
 class Delete extends \Magento\Search\Controller\Adminhtml\Term
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $resultPageFactory);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $id = $this->getRequest()->getParam('id');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
         if ($id) {
             try {
                 $model = $this->_objectManager->create('Magento\Search\Model\Query');
                 $model->setId($id);
                 $model->delete();
                 $this->messageManager->addSuccess(__('You deleted the search.'));
-                $this->_redirect('search/*/');
-                return;
+                return $redirectResult->setPath('search/*/');
             } catch (\Exception $e) {
                 $this->messageManager->addError($e->getMessage());
-                $this->_redirect('search/*/edit', array('id' => $this->getRequest()->getParam('id')));
-                return;
+                return $redirectResult->setPath('search/*/edit', ['id' => $this->getRequest()->getParam('id')]);
             }
         }
         $this->messageManager->addError(__('We can\'t find a search term to delete.'));
-        $this->_redirect('search/*/');
+        return $redirectResult->setPath('search/*/');
     }
 }
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
index a6b53192d12542ccf6e889afd9ddf1807bbbc9a8..dbde8f5b8a6598ff7435fdf869ad825cd8829f37 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Edit.php
@@ -37,16 +37,20 @@ class Edit extends \Magento\Search\Controller\Adminhtml\Term
 
     /**
      * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
      * @param \Magento\Framework\Registry $coreRegistry
      */
-    public function __construct(\Magento\Backend\App\Action\Context $context, \Magento\Framework\Registry $coreRegistry)
-    {
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Framework\Registry $coreRegistry
+    ) {
+        parent::__construct($context, $resultPageFactory);
         $this->_coreRegistry = $coreRegistry;
-        parent::__construct($context);
     }
 
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
@@ -72,19 +76,15 @@ class Edit extends \Magento\Search\Controller\Adminhtml\Term
 
         $this->_coreRegistry->register('current_catalog_search', $model);
 
-        $this->_initAction();
+        $resultPage = $this->createPage();
 
         $this->_title->add($id ? $model->getQueryText() : __('New Search'));
 
-        $this->_view->getLayout()->getBlock(
-            'adminhtml.search.term.edit'
-        )->setData(
-            'action',
-            $this->getUrl('search/term/save')
-        );
+        $resultPage->getLayout()->getBlock('adminhtml.search.term.edit')
+            ->setData('action', $this->getUrl('search/term/save'));
 
-        $this->_addBreadcrumb($id ? __('Edit Search') : __('New Search'), $id ? __('Edit Search') : __('New Search'));
+        $resultPage->addBreadcrumb($id ? __('Edit Search') : __('New Search'), $id ? __('Edit Search') : __('New Search'));
 
-        $this->_view->renderLayout();
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
index b9e00b949edcb2202625094ab29fbb83ab625111..9cfc7f0bc4b514ca7d0085cbb5999e50860f7f25 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Index.php
@@ -27,13 +27,14 @@ namespace Magento\Search\Controller\Adminhtml\Term;
 class Index extends \Magento\Search\Controller\Adminhtml\Term
 {
     /**
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Page
      */
     public function execute()
     {
         $this->_title->add(__('Search Terms'));
 
-        $this->_initAction()->_addBreadcrumb(__('Search'), __('Search'));
-        $this->_view->renderLayout();
+        $resultPage = $this->createPage();
+        $resultPage->addBreadcrumb(__('Search'), __('Search'));
+        return $resultPage;
     }
 }
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php b/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
index 0575a8e562f1077a34f286480519ddf208871ccb..b705d45a31f02fbb59869df531259096559fe02a 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/MassDelete.php
@@ -27,7 +27,26 @@ namespace Magento\Search\Controller\Adminhtml\Term;
 class MassDelete extends \Magento\Search\Controller\Adminhtml\Term
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $resultPageFactory);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
@@ -45,6 +64,8 @@ class MassDelete extends \Magento\Search\Controller\Adminhtml\Term
                 $this->messageManager->addError($e->getMessage());
             }
         }
-        $this->_redirect('catalog/*/index');
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
+        return $redirectResult->setPath('catalog/*/index');
     }
 }
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php b/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
index 8cc62a2f4861105ba2cd1ae3bb6f9613c1331914..5d1438ae841ab8c8ad1abbab018b54924175c958 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/NewAction.php
@@ -27,10 +27,31 @@ namespace Magento\Search\Controller\Adminhtml\Term;
 class NewAction extends \Magento\Search\Controller\Adminhtml\Term
 {
     /**
-     * @return void
+     * @var \Magento\Backend\Model\View\Result\ForwardFactory
+     */
+    protected $resultForwardFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
+    ) {
+        parent::__construct($context, $resultPageFactory);
+        $this->resultForwardFactory = $resultForwardFactory;
+    }
+
+    /**
+     * @return \Magento\Backend\Model\View\Result\Forward
      */
     public function execute()
     {
-        $this->_forward('edit');
+        /** @var \Magento\Backend\Model\View\Result\Forward $resultForward */
+        $resultForward = $this->resultForwardFactory->create();
+        return $resultForward->forward('edit');
     }
 }
diff --git a/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php b/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
index 2bbad0862f7e9e67422729e6ec3b06f25e9aa72c..51805186462322b67c165f27c75f545dec7b0d9e 100644
--- a/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
+++ b/app/code/Magento/Search/Controller/Adminhtml/Term/Save.php
@@ -26,16 +26,37 @@ namespace Magento\Search\Controller\Adminhtml\Term;
 
 class Save extends \Magento\Search\Controller\Adminhtml\Term
 {
+    /**
+     * @var \Magento\Backend\Model\View\Result\RedirectFactory
+     */
+    protected $resultRedirectFactory;
+
+    /**
+     * @param \Magento\Backend\App\Action\Context $context
+     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
+     * @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+     */
+    public function __construct(
+        \Magento\Backend\App\Action\Context $context,
+        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
+        \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
+    ) {
+        parent::__construct($context, $resultPageFactory);
+        $this->resultRedirectFactory = $resultRedirectFactory;
+    }
+
     /**
      * Save search query
      *
-     * @return void
+     * @return \Magento\Backend\Model\View\Result\Redirect
      */
     public function execute()
     {
         $hasError = false;
         $data = $this->getRequest()->getPost();
         $queryId = $this->getRequest()->getPost('query_id', null);
+        /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */
+        $redirectResult = $this->resultRedirectFactory->create();
         if ($this->getRequest()->isPost() && $data) {
             /* @var $model \Magento\Search\Model\Query */
             $model = $this->_objectManager->create('Magento\Search\Model\Query');
@@ -74,9 +95,9 @@ class Save extends \Magento\Search\Controller\Adminhtml\Term
 
         if ($hasError) {
             $this->_getSession()->setPageData($data);
-            $this->_redirect('search/*/edit', array('id' => $queryId));
+            return $redirectResult->setPath('search/*/edit', ['id' => $queryId]);
         } else {
-            $this->_redirect('search/*');
+            return $redirectResult->setPath('search/*');
         }
     }
 }
diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json
index c155cfc008a369475b406f699f07d472542f05b9..e3269ead358e1b28e11723f3761bfde66b776286 100644
--- a/app/code/Magento/Search/composer.json
+++ b/app/code/Magento/Search/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Search/view/adminhtml/layout/adminhtml_dashboard_index.xml b/app/code/Magento/Search/view/adminhtml/layout/adminhtml_dashboard_index.xml
index 9024dfecb5fc0d17a22c8cafb898ff608f0cf7b6..033b43977ddff0ca4e3d688875746fc71e2a6592 100644
--- a/app/code/Magento/Search/view/adminhtml/layout/adminhtml_dashboard_index.xml
+++ b/app/code/Magento/Search/view/adminhtml/layout/adminhtml_dashboard_index.xml
@@ -24,8 +24,10 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="dashboard">
-      <block class="Magento\Search\Block\Adminhtml\Dashboard\Last" as="lastSearches" />
-      <block class="Magento\Search\Block\Adminhtml\Dashboard\Top" as="topSearches" />
-    </referenceBlock>
+    <body>
+        <referenceBlock name="dashboard">
+          <block class="Magento\Search\Block\Adminhtml\Dashboard\Last" as="lastSearches" />
+          <block class="Magento\Search\Block\Adminhtml\Dashboard\Top" as="topSearches" />
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/view/adminhtml/layout/search_term_edit.xml b/app/code/Magento/Search/view/adminhtml/layout/search_term_edit.xml
index 11e932b30574507969a0e367b8bace94840edd44..44ddd2a06630411d903a04758fd959e934035c9c 100644
--- a/app/code/Magento/Search/view/adminhtml/layout/search_term_edit.xml
+++ b/app/code/Magento/Search/view/adminhtml/layout/search_term_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Search\Block\Adminhtml\Term\Edit" name="adminhtml.search.term.edit"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Search\Block\Adminhtml\Term\Edit" name="adminhtml.search.term.edit"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/view/adminhtml/layout/search_term_grid_block.xml b/app/code/Magento/Search/view/adminhtml/layout/search_term_grid_block.xml
index e96ecb33145a1e2e4156b09560759d957ae0ddfa..2c8567216a52186d61dbac5c222acdf03020846b 100644
--- a/app/code/Magento/Search/view/adminhtml/layout/search_term_grid_block.xml
+++ b/app/code/Magento/Search/view/adminhtml/layout/search_term_grid_block.xml
@@ -24,117 +24,119 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.search.term.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.catalog.search.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">search_term_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Search\Model\Resource\Query\Collection</argument>
-                <argument name="default_sort" xsi:type="string">name</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.catalog.search.grid.massaction" as="grid.massaction">
+    <body>
+        <referenceBlock name="adminhtml.search.term.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.catalog.search.grid" as="grid">
                 <arguments>
-                    <argument name="massaction_id_field" xsi:type="string">query_id</argument>
-                    <argument name="form_field_name" xsi:type="string">search</argument>
-                    <argument name="use_select_all" xsi:type="string">1</argument>
-                    <argument name="options" xsi:type="array">
-                        <item name="delete" xsi:type="array">
-                            <item name="label" xsi:type="string" translate="true">Delete</item>
-                            <item name="url" xsi:type="string">*/*/massDelete</item>
-                            <item name="confirm" xsi:type="string" translate="true">Are you sure?</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">search_term_grid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Search\Model\Resource\Query\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">name</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.search.grid.columnSet" as="grid.columnSet">
-                <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="search_query">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Search Query</argument>
-                        <argument name="index" xsi:type="string">query_text</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store</argument>
-                        <argument name="type" xsi:type="string">store</argument>
-                        <argument name="id" xsi:type="string">store_id</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                        <argument name="store_view" xsi:type="string">1</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="num_results">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Results</argument>
-                        <argument name="index" xsi:type="string">num_results</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="popularity">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Uses</argument>
-                        <argument name="index" xsi:type="string">popularity</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="synonym_for">
+                <block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.catalog.search.grid.massaction" as="grid.massaction">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Synonym</argument>
-                        <argument name="index" xsi:type="string">synonym_for</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="redirect">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Redirect URL</argument>
-                        <argument name="index" xsi:type="string">redirect</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="display_in_terms">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Suggested Terms</argument>
-                        <argument name="sortable" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">display_in_terms</argument>
-                        <argument name="type" xsi:type="string">options</argument>
+                        <argument name="massaction_id_field" xsi:type="string">query_id</argument>
+                        <argument name="form_field_name" xsi:type="string">search</argument>
+                        <argument name="use_select_all" xsi:type="string">1</argument>
                         <argument name="options" xsi:type="array">
-                            <item name="yes" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">yes</item>
-                            </item>
-                            <item name="no" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">no</item>
+                            <item name="delete" xsi:type="array">
+                                <item name="label" xsi:type="string" translate="true">Delete</item>
+                                <item name="url" xsi:type="string">*/*/massDelete</item>
+                                <item name="confirm" xsi:type="string" translate="true">Are you sure?</item>
                             </item>
                         </argument>
                     </arguments>
                 </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.search.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="type" xsi:type="string">action</argument>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">query_id</argument>
-                        <argument name="actions" xsi:type="array">
-                            <item name="edit" xsi:type="array">
-                                <item name="caption" xsi:type="string" translate="true">Edit</item>
-                                <item name="url" xsi:type="array">
-                                    <item name="base" xsi:type="string">*/*/edit</item>
-                                </item>
-                                <item name="field" xsi:type="string">id</item>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
                             </item>
                         </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="search_query">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Search Query</argument>
+                            <argument name="index" xsi:type="string">query_text</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store</argument>
+                            <argument name="type" xsi:type="string">store</argument>
+                            <argument name="id" xsi:type="string">store_id</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                            <argument name="store_view" xsi:type="string">1</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="num_results">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Results</argument>
+                            <argument name="index" xsi:type="string">num_results</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="popularity">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Uses</argument>
+                            <argument name="index" xsi:type="string">popularity</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="synonym_for">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Synonym</argument>
+                            <argument name="index" xsi:type="string">synonym_for</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="redirect">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Redirect URL</argument>
+                            <argument name="index" xsi:type="string">redirect</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="display_in_terms">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Suggested Terms</argument>
+                            <argument name="sortable" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">display_in_terms</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="yes" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">yes</item>
+                                </item>
+                                <item name="no" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">no</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="type" xsi:type="string">action</argument>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">query_id</argument>
+                            <argument name="actions" xsi:type="array">
+                                <item name="edit" xsi:type="array">
+                                    <item name="caption" xsi:type="string" translate="true">Edit</item>
+                                    <item name="url" xsi:type="array">
+                                        <item name="base" xsi:type="string">*/*/edit</item>
+                                    </item>
+                                    <item name="field" xsi:type="string">id</item>
+                                </item>
+                            </argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/view/adminhtml/layout/search_term_index.xml b/app/code/Magento/Search/view/adminhtml/layout/search_term_index.xml
index f9517381f4cb466e72308a1787eda72129c450ec..cb6028fac9f0f3444a9e28213471ce292ba886b7 100644
--- a/app/code/Magento/Search/view/adminhtml/layout/search_term_index.xml
+++ b/app/code/Magento/Search/view/adminhtml/layout/search_term_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="search_term_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Search\Block\Adminhtml\Term" name="adminhtml.search.term.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Search\Block\Adminhtml\Term" name="adminhtml.search.term.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/view/frontend/layout/default.xml b/app/code/Magento/Search/view/frontend/layout/default.xml
index 2c3a12bd32e19c46e96920c77d985a3495368e6e..a69943725c91d54d85b46009e08159c8634dee0e 100644
--- a/app/code/Magento/Search/view/frontend/layout/default.xml
+++ b/app/code/Magento/Search/view/frontend/layout/default.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="header-wrapper">
-        <block class="Magento\Framework\View\Element\Template" name="top.search" as="topSearch" template="Magento_Search::form.mini.phtml" />
-    </referenceContainer>
-    <referenceBlock name="footer_links">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="catalog/seo/search_terms" name="search-term-popular-link">
-            <arguments>
-                <argument name="label" xsi:type="string">Search Terms</argument>
-                <argument name="path" xsi:type="string">search/term/popular</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceContainer name="header-wrapper">
+            <block class="Magento\Framework\View\Element\Template" name="top.search" as="topSearch" template="Magento_Search::form.mini.phtml" />
+        </referenceContainer>
+        <referenceBlock name="footer_links">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="catalog/seo/search_terms" name="search-term-popular-link">
+                <arguments>
+                    <argument name="label" xsi:type="string">Search Terms</argument>
+                    <argument name="path" xsi:type="string">search/term/popular</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Search/view/frontend/layout/search_term_popular.xml b/app/code/Magento/Search/view/frontend/layout/search_term_popular.xml
index bcb5f81002254cf29c8c1d3a958f58a920db7c22..e9966c272a7f26fdb87f0b1e83bda9b160ef4d9a 100644
--- a/app/code/Magento/Search/view/frontend/layout/search_term_popular.xml
+++ b/app/code/Magento/Search/view/frontend/layout/search_term_popular.xml
@@ -23,11 +23,13 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <title>Popular Search Terms</title>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Search\Block\Term" name="seo.searchterm" template="term.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Search\Block\Term" name="seo.searchterm" template="term.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sendfriend/README.md b/app/code/Magento/Sendfriend/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3de38fe9f9dfa452d81670ee79ddebbdb7e7af52
--- /dev/null
+++ b/app/code/Magento/Sendfriend/README.md
@@ -0,0 +1 @@
+The Magento_Sendfriend implements the functionality behind the "Email to a Friend" link on a product page, which allows to share favorite products with others by clicking the link.
diff --git a/app/code/Magento/Sendfriend/composer.json b/app/code/Magento/Sendfriend/composer.json
index d2026c84fddae16278860da09426cb085f79167f..ab35dfe1ffacc2caf60bcfb7c45cb849a0a36458 100644
--- a/app/code/Magento/Sendfriend/composer.json
+++ b/app/code/Magento/Sendfriend/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sendfriend/view/frontend/layout/sendfriend_product_send.xml b/app/code/Magento/Sendfriend/view/frontend/layout/sendfriend_product_send.xml
index a1f2f2324a0bfe113d37b8f9b65f638c87978f15..1f97139ef375fae675cec9e13f0ebe63c05aa780 100644
--- a/app/code/Magento/Sendfriend/view/frontend/layout/sendfriend_product_send.xml
+++ b/app/code/Magento/Sendfriend/view/frontend/layout/sendfriend_product_send.xml
@@ -23,13 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="page.main.title">
-        <action method="setPageTitle">
-            <argument name="title" translate="true" xsi:type="string">Email to a Friend</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Sendfriend\Block\Send" name="sendfriend.send" template="send.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="page.main.title">
+            <action method="setPageTitle">
+                <argument name="title" translate="true" xsi:type="string">Email to a Friend</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Sendfriend\Block\Send" name="sendfriend.send" template="send.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/Block/Order/Shipment.php b/app/code/Magento/Shipping/Block/Order/Shipment.php
index bd22549f6405fb02ff7ce806fceff15a211a58c0..96fd59b63ed8f500d24f55030a8108190dafb5fe 100644
--- a/app/code/Magento/Shipping/Block/Order/Shipment.php
+++ b/app/code/Magento/Shipping/Block/Order/Shipment.php
@@ -77,7 +77,8 @@ class Shipment extends \Magento\Framework\View\Element\Template
     protected function _prepareLayout()
     {
         $this->pageConfig->setTitle(__('Order # %1', $this->getOrder()->getRealOrderId()));
-        $this->setChild('payment_info', $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment()));
+        $infoBlock = $this->_paymentHelper->getInfoBlock($this->getOrder()->getPayment(), $this->getLayout());
+        $this->setChild('payment_info', $infoBlock);
     }
 
     /**
diff --git a/app/code/Magento/Shipping/Controller/Tracking/Popup.php b/app/code/Magento/Shipping/Controller/Tracking/Popup.php
index 0e41a03e6d1bbd2dc4541060b7999fc19e8d1446..b8e4e9f6f2a60ef301a8a6aa3b89b1ae9a92ac54 100644
--- a/app/code/Magento/Shipping/Controller/Tracking/Popup.php
+++ b/app/code/Magento/Shipping/Controller/Tracking/Popup.php
@@ -78,6 +78,7 @@ class Popup extends \Magento\Framework\App\Action\Action
             throw new NotFoundException();
         }
         $this->_view->loadLayout();
+        $this->_view->getPage()->getConfig()->setTitle(__('Tracking Information'));
         $this->_view->renderLayout();
     }
 }
diff --git a/app/code/Magento/Shipping/README.md b/app/code/Magento/Shipping/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..54dd5f64244803bbb5bbd64c2a5f84bd7f125d78
--- /dev/null
+++ b/app/code/Magento/Shipping/README.md
@@ -0,0 +1,2 @@
+The Magento_Shipping module provides the abstract models and interfaces for a shipping carrier integration, including the web interface for the Shipment entity.
+You need to extend these abstractions if you are adding new shipping carrier integration.
diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json
index 6eff5fb3b845719a80f99f310e82a4286b7420c7..ba8d4194e890c2404fb384f4e0ae3ed65c891869 100644
--- a/app/code/Magento/Shipping/composer.json
+++ b/app/code/Magento/Shipping/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-contact": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-payment": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-contact": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "ext-gd": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addcomment.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addcomment.xml
index 312847e37d417d82c1792855afbd73da7f2ab0b2..e1d9cb0adc57d39e9ba7d1d0cb6576e2920b5c66 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addcomment.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addcomment.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Shipping\Block\Adminhtml\View\Comments" name="shipment_comments">
-        <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
-    </block>
+    <body>
+        <block class="Magento\Shipping\Block\Adminhtml\View\Comments" name="shipment_comments">
+            <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addtrack.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addtrack.xml
index f2bed59059359b914b046fb42f03f386c29607c3..897935b5dea2adbaa0fe253ee515a34e6ddea26e 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addtrack.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_addtrack.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
+    <body>
+        <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml
index e572a752c1a00b2063c0533bc34d6bad5cd229fc..bb5ced5d63ab028bf965933fb74eb69d7c2f0c12 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_new.xml
@@ -24,20 +24,22 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Shipping\Block\Adminhtml\Create" name="sales_shipment_create">
-            <block class="Magento\Shipping\Block\Adminhtml\Create\Form" name="form" template="create/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Shipping\Block\Adminhtml\Create\Items" name="order_items" template="create/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="Magento_Shipping::create/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="Magento_Sales::items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="Magento_Sales::items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Shipping\Block\Adminhtml\Create" name="sales_shipment_create">
+                <block class="Magento\Shipping\Block\Adminhtml\Create\Form" name="form" template="create/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\Create\Items" name="order_items" template="create/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="Magento_Shipping::create/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="Magento_Sales::items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="Magento_Sales::items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                    </block>
+                    <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking" name="shipment_tracking" template="order/tracking.phtml"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packaging" template="Magento_Shipping::order/packaging/popup.phtml"/>
                 </block>
-                <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking" name="shipment_tracking" template="order/tracking.phtml"/>
-                <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packaging" template="Magento_Shipping::order/packaging/popup.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_removetrack.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_removetrack.xml
index f2bed59059359b914b046fb42f03f386c29607c3..897935b5dea2adbaa0fe253ee515a34e6ddea26e 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_removetrack.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_removetrack.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
+    <body>
+        <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml
index 1b2a64ad2bc28a1345093bb95826952184b855b5..131da748a6b2a3ea6a513189cb0e71cfb2170608 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/adminhtml_order_shipment_view.xml
@@ -24,22 +24,24 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Shipping\Block\Adminhtml\View" name="sales_shipment_view">
-            <block class="Magento\Shipping\Block\Adminhtml\View\Form" name="form" template="view/form.phtml">
-                <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml"/>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
-                <block class="Magento\Shipping\Block\Adminhtml\View\Items" name="shipment_items" template="view/items.phtml">
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="Magento_Shipping::view/items/renderer/default.phtml"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="Magento_Sales::items/column/qty.phtml" group="column"/>
-                    <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="Magento_Sales::items/column/name.phtml" group="column"/>
-                    <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Shipping\Block\Adminhtml\View" name="sales_shipment_view">
+                <block class="Magento\Shipping\Block\Adminhtml\View\Form" name="form" template="view/form.phtml">
+                    <block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml"/>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\View\Items" name="shipment_items" template="view/items.phtml">
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer" as="default" template="Magento_Shipping::view/items/renderer/default.phtml"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="Magento_Sales::items/column/qty.phtml" group="column"/>
+                        <block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="Magento_Sales::items/column/name.phtml" group="column"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
+                    </block>
+                    <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packaging" template="order/packaging/popup.phtml"/>
+                    <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packed" template="order/packaging/packed.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Adminhtml\Order\Comments\View" name="order_comments" template="order/comments/view.phtml"/>
-                <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\View" name="shipment_tracking" template="order/tracking/view.phtml"/>
-                <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packaging" template="order/packaging/popup.phtml"/>
-                <block class="Magento\Shipping\Block\Adminhtml\Order\Packaging" name="shipment_packed" template="order/packaging/packed.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_invoice_new.xml
index 29dd4d49b894ba6c4405c33162bc86af7c59e739..b6771b0a260487efed0e5e15bfb48f99479fe485 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="form">
-        <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\Invoice" name="tracking" template="order/tracking.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="form">
+            <block class="Magento\Shipping\Block\Adminhtml\Order\Tracking\Invoice" name="tracking" template="order/tracking.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_view.xml
index 1aee36dd4b3af99e65425428da13b940739f7909..b16c9b1af4a79912a078f512ccf049489f6454d6 100644
--- a/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/Shipping/view/adminhtml/layout/sales_order_view.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_tab_info">
-        <block class="Magento\Sales\Block\Adminhtml\Order\AbstractOrder" name="order_shipping_view" template="Magento_Shipping::order/view/info.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_tab_info">
+            <block class="Magento\Sales\Block\Adminhtml\Order\AbstractOrder" name="order_shipping_view" template="Magento_Shipping::order/view/info.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_reorder.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_reorder.xml
index 8539818ed1c3b890708dece70494e1b9030375c9..f45f0f50df3df6db0a9bf34226479e13eb6d1bea 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_reorder.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_reorder.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.view">
-        <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
-            <arguments>
-                <argument name="label" xsi:type="string">Track your order</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.view">
+            <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
+                <arguments>
+                    <argument name="label" xsi:type="string">Track your order</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_shipment.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_shipment.xml
index 8f3e80e20c695a552101a35b3e99ebfd790e7c6f..eb788f57884c4b3269d1dd3a92fe461b2a560c06 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_shipment.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_shipment.xml
@@ -24,18 +24,20 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="sales_order_shipment_renderers" />
-    <referenceContainer name="content">
-        <block class="Magento\Shipping\Block\Order\Shipment" name="sales.order.shipment" after="sales.order.info">
-            <block class="Magento\Shipping\Block\Items" name="shipment_items" template="items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.shipment.renderers" as="renderer.list" />
-                <block class="Magento\Shipping\Block\Tracking\Link" name="track-all-link" template="tracking/link.phtml">
-                    <arguments>
-                        <argument name="label" xsi:type="string">Track All Shipments</argument>
-                    </arguments>
+    <update handle="sales_order_shipment_renderers"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Shipping\Block\Order\Shipment" name="sales.order.shipment" after="sales.order.info">
+                <block class="Magento\Shipping\Block\Items" name="shipment_items" template="items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.shipment.renderers" as="renderer.list"/>
+                    <block class="Magento\Shipping\Block\Tracking\Link" name="track-all-link" template="tracking/link.phtml">
+                        <arguments>
+                            <argument name="label" xsi:type="string">Track All Shipments</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="shipment_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="shipment_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_view.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_view.xml
index 8539818ed1c3b890708dece70494e1b9030375c9..f45f0f50df3df6db0a9bf34226479e13eb6d1bea 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_guest_view.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_guest_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.view">
-        <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
-            <arguments>
-                <argument name="label" xsi:type="string">Track your order</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.view">
+            <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
+                <arguments>
+                    <argument name="label" xsi:type="string">Track your order</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_order_reorder.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_order_reorder.xml
index 8539818ed1c3b890708dece70494e1b9030375c9..f45f0f50df3df6db0a9bf34226479e13eb6d1bea 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_order_reorder.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_order_reorder.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.view">
-        <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
-            <arguments>
-                <argument name="label" xsi:type="string">Track your order</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.view">
+            <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
+                <arguments>
+                    <argument name="label" xsi:type="string">Track your order</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_order_shipment.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_order_shipment.xml
index e7762b5c6c1689f5fbc2069e7a3e7a1620f1979c..f832f1a40b0e47d9e10d5e5f3ebe4f3534751670 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_order_shipment.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_order_shipment.xml
@@ -24,18 +24,20 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <update handle="sales_order_shipment_renderers" />
-    <referenceContainer name="content">
-        <block class="Magento\Shipping\Block\Order\Shipment" name="sales.order.shipment" cacheable="false">
-            <block class="Magento\Shipping\Block\Items" name="shipment_items" template="items.phtml">
-                <block class="Magento\Framework\View\Element\RendererList" name="sales.order.shipment.renderers" as="renderer.list" />
-                <block class="Magento\Shipping\Block\Tracking\Link" name="track-all-link" template="tracking/link.phtml">
-                    <arguments>
-                        <argument name="label" xsi:type="string">Track All Shipments</argument>
-                    </arguments>
+    <update handle="sales_order_shipment_renderers"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Shipping\Block\Order\Shipment" name="sales.order.shipment" cacheable="false">
+                <block class="Magento\Shipping\Block\Items" name="shipment_items" template="items.phtml">
+                    <block class="Magento\Framework\View\Element\RendererList" name="sales.order.shipment.renderers" as="renderer.list"/>
+                    <block class="Magento\Shipping\Block\Tracking\Link" name="track-all-link" template="tracking/link.phtml">
+                        <arguments>
+                            <argument name="label" xsi:type="string">Track All Shipments</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Sales\Block\Order\Comments" name="shipment_comments" template="order/comments.phtml"/>
                 </block>
-                <block class="Magento\Sales\Block\Order\Comments" name="shipment_comments" template="order/comments.phtml"/>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/sales_order_view.xml b/app/code/Magento/Shipping/view/frontend/layout/sales_order_view.xml
index 8539818ed1c3b890708dece70494e1b9030375c9..f45f0f50df3df6db0a9bf34226479e13eb6d1bea 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/sales_order_view.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/sales_order_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="sales.order.view">
-        <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
-            <arguments>
-                <argument name="label" xsi:type="string">Track your order</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="sales.order.view">
+            <block class="Magento\Shipping\Block\Tracking\Link" name="tracking-info-link" template="tracking/link.phtml">
+                <arguments>
+                    <argument name="label" xsi:type="string">Track your order</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/layout/shipping_tracking_popup.xml b/app/code/Magento/Shipping/view/frontend/layout/shipping_tracking_popup.xml
index ab48dd503e1467707c42a6c55087d25724606c91..0aec0b5a38c4f2b963cfc282f9c77917ef6bc584 100644
--- a/app/code/Magento/Shipping/view/frontend/layout/shipping_tracking_popup.xml
+++ b/app/code/Magento/Shipping/view/frontend/layout/shipping_tracking_popup.xml
@@ -23,8 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="empty" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Shipping\Block\Tracking\Popup" name="shipping.tracking.popup" template="tracking/popup.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="empty" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Shipping\Block\Tracking\Popup" name="shipping.tracking.popup" template="tracking/popup.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Shipping/view/frontend/templates/items.phtml b/app/code/Magento/Shipping/view/frontend/templates/items.phtml
index 55f3d5187a9d55a7ff5ed6eef85e5500b3c9ba50..667d4c513035a88eca82189d6830c369c51d04e7 100644
--- a/app/code/Magento/Shipping/view/frontend/templates/items.phtml
+++ b/app/code/Magento/Shipping/view/frontend/templates/items.phtml
@@ -72,7 +72,7 @@
 <?php  endif; ?>
 <div class="table-wrapper order-items-shipment">
     <table class="data table table-order-items shipment" id="my-shipment-table-<?php echo $_shipment->getId(); ?>">
-        <caption class="table caption"><?php echo __('Items Shipped') ?></caption>
+        <caption class="table-caption"><?php echo __('Items Shipped') ?></caption>
         <thead>
             <tr>
                 <th class="col name"><?php echo __('Product Name') ?></th>
diff --git a/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml b/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
index 4e1964180e69d7ac98fa67d568540b8cdf61d337..d755b37e5c7db1b24742bfe15c69ef75805d416b 100644
--- a/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
+++ b/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
@@ -25,11 +25,6 @@
 <?php /** @var $this \Magento\Shipping\Block\Tracking\Popup */ ?>
 <?php $_results = $this->getTrackingInfo(); ?>
 <div class="page tracking">
-    <div class="page-title">
-        <h1 class="title">
-            <span class="base"><?php echo __('Tracking Information'); ?></span>
-        </h1>
-    </div>
     <?php if(sizeof($_results)>0): ?>
     <?php foreach($_results as $shipid => $_result): ?>
         <?php if($shipid): ?>
@@ -38,116 +33,122 @@
         <?php if(sizeof($_result)>0): ?>
             <?php $rowCount = sizeof($_result); $counter = 1; ?>
             <?php $_id = 0; foreach($_result as $track): ?>
-                <table class="data table order tracking" id="tracking-table-popup-<?php echo $_id ?>">
-                    <tbody>
-                    <?php if(is_object($track)): ?>
-                        <tr>
-                            <th class="col label"><?php echo __('Tracking Number:'); ?></th>
-                            <td class="col value"><?php echo $this->escapeHtml($track->getTracking()); ?></td>
-                        </tr>
-                        <?php if ($track->getCarrierTitle()): ?>
-                        <tr>
-                            <th class="col label"><?php echo __('Carrier:'); ?></th>
-                            <td class="col value"><?php echo $this->escapeHtml($track->getCarrierTitle()); ?></td>
-                        </tr>
-                        <?php endif; ?>
-                        <?php if($track->getErrorMessage()): ?>
-                        <tr>
-                            <th class="col label"><?php echo __('Error:'); ?></th>
-                            <td class="col error"><?php echo __('Tracking information is currently not available. Please '); if ($this->getContactUsEnabled()) : ?><a href="<?php echo $this->getContactUs() ?>" title="<?php echo __('contact us') ?>" onclick="this.target='_blank'"><?php echo __('contact us') ?></a><?php echo __(' for more information or '); endif; echo __('email us at '); ?><a href="mailto:<?php echo $this->getStoreSupportEmail() ?>"><?php echo $this->getStoreSupportEmail() ?></a></td>
-                        </tr>
-                        <?php elseif($track->getTrackSummary()): ?>
-                        <tr>
-                            <th class="col label"><?php echo __('Info:'); ?></th>
-                            <td class="col value"><?php echo $track->getTrackSummary(); ?></td>
-                        </tr>
-                        <?php elseif($track->getUrl()): ?>
-                        <tr>
-                            <th class="col label"><?php echo __('Track:'); ?></th>
-                            <td class="col value"><a href="<?php echo $this->escapeHtml($track->getUrl()); ?>" onclick="this.target='_blank'"><?php echo $this->escapeHtml($track->getUrl()); ?></a></td>
-                        </tr>
-                        <?php else: ?>
-                            <?php if ($track->getStatus()): ?>
+                <div class="table-wrapper">
+                    <table class="data table order tracking" id="tracking-table-popup-<?php echo $_id ?>">
+                        <caption class="table-caption"><?php echo __('Order tracking'); ?></caption>
+                        <tbody>
+                        <?php if(is_object($track)): ?>
                             <tr>
-                                <th class="col label"><?php echo __('Status:'); ?></th>
-                                <td class="col value"><?php echo $track->getStatus(); ?></td>
+                                <th class="col label" scope="row"><?php echo __('Tracking Number:'); ?></th>
+                                <td class="col value"><?php echo $this->escapeHtml($track->getTracking()); ?></td>
                             </tr>
+                            <?php if ($track->getCarrierTitle()): ?>
+                                <tr>
+                                    <th class="col label" scope="row"><?php echo __('Carrier:'); ?></th>
+                                    <td class="col value"><?php echo $this->escapeHtml($track->getCarrierTitle()); ?></td>
+                                </tr>
                             <?php endif; ?>
+                            <?php if($track->getErrorMessage()): ?>
+                                <tr>
+                                    <th class="col label" scope="row"><?php echo __('Error:'); ?></th>
+                                    <td class="col error"><?php echo __('Tracking information is currently not available. Please '); if ($this->getContactUsEnabled()) : ?><a href="<?php echo $this->getContactUs() ?>" title="<?php echo __('contact us') ?>" onclick="this.target='_blank'"><?php echo __('contact us') ?></a><?php echo __(' for more information or '); endif; echo __('email us at '); ?><a href="mailto:<?php echo $this->getStoreSupportEmail() ?>"><?php echo $this->getStoreSupportEmail() ?></a></td>
+                                </tr>
+                            <?php elseif($track->getTrackSummary()): ?>
+                                <tr>
+                                    <th class="col label" scope="row"><?php echo __('Info:'); ?></th>
+                                    <td class="col value"><?php echo $track->getTrackSummary(); ?></td>
+                                </tr>
+                            <?php elseif($track->getUrl()): ?>
+                                <tr>
+                                    <th class="col label" scope="row"><?php echo __('Track:'); ?></th>
+                                    <td class="col value"><a href="<?php echo $this->escapeHtml($track->getUrl()); ?>" onclick="this.target='_blank'"><?php echo $this->escapeHtml($track->getUrl()); ?></a></td>
+                                </tr>
+                            <?php else: ?>
+                                <?php if ($track->getStatus()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Status:'); ?></th>
+                                        <td class="col value"><?php echo $track->getStatus(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getDeliverydate()): ?>
-                            <tr>
-                                <th class="col label"><?php echo __('Delivered on:'); ?></th>
-                                <td class="col value"><?php echo $this->formatDeliveryDateTime($track->getDeliverydate(),$track->getDeliverytime()); ?></td>
-                            </tr>
-                            <?php endif; ?>
+                                <?php if ($track->getDeliverydate()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Delivered on:'); ?></th>
+                                        <td class="col value"><?php echo $this->formatDeliveryDateTime($track->getDeliverydate(),$track->getDeliverytime()); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getSignedby()): ?>
-                            <tr>
-                                <th class="col label"><?php echo __('Signed by:'); ?></th>
-                                <td class="col value"><?php echo $track->getSignedby(); ?></td>
-                            </tr>
-                            <?php endif; ?>
+                                <?php if ($track->getSignedby()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Signed by:'); ?></th>
+                                        <td class="col value"><?php echo $track->getSignedby(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getDeliveryLocation()): ?>
-                            <tr>
-                                <th class="col label"><?php echo __('Delivered to:'); ?></th>
-                                <td class="col value"><?php echo $track->getDeliveryLocation(); ?></td>
-                            </tr>
-                            <?php endif; ?>
+                                <?php if ($track->getDeliveryLocation()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Delivered to:'); ?></th>
+                                        <td class="col value"><?php echo $track->getDeliveryLocation(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getShippedDate()): ?>
-                            <tr>
-                                <th class="col label"><?php echo __('Shipped or billed on:'); ?></th>
-                                <td class="col value"><?php echo $track->getShippedDate(); ?></td>
-                            </tr>
-                            <?php endif; ?>
+                                <?php if ($track->getShippedDate()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Shipped or billed on:'); ?></th>
+                                        <td class="col value"><?php echo $track->getShippedDate(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getService()): ?>
-                            <tr>
-                                <th class="col label"><?php echo __('Service Type:'); ?></th>
-                                <td class="col value"><?php echo $track->getService(); ?></td>
-                            </tr>
-                            <?php endif; ?>
+                                <?php if ($track->getService()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Service Type:'); ?></th>
+                                        <td class="col value"><?php echo $track->getService(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
 
-                            <?php if ($track->getWeight()): ?>
+                                <?php if ($track->getWeight()): ?>
+                                    <tr>
+                                        <th class="col label" scope="row"><?php echo __('Weight:'); ?></th>
+                                        <td class="col value"><?php echo $track->getWeight(); ?></td>
+                                    </tr>
+                                <?php endif; ?>
+                            <?php endif; ?>
+                        <?php elseif(isset($track['title']) && isset($track['number']) && $track['number']): ?>
+                            <?php /* if the tracking is custom value */ ?>
                             <tr>
-                                <th class="col label"><?php echo __('Weight:'); ?></th>
-                                <td class="col value"><?php echo $track->getWeight(); ?></td>
+                                <th class="col label" scope="row"><?php echo ($track['title'] ? $this->escapeHtml($track['title']) : __('N/A')); ?>:</th>
+                                <td class="col value"><?php echo (isset($track['number']) ? $this->escapeHtml($track['number']) : ''); ?></td>
                             </tr>
-                            <?php endif; ?>
                         <?php endif; ?>
-                    <?php elseif(isset($track['title']) && isset($track['number']) && $track['number']): ?>
-                        <?php /* if the tracking is custom value */ ?>
-                        <tr>
-                            <th class="col label"><?php echo ($track['title'] ? $this->escapeHtml($track['title']) : __('N/A')); ?>:</th>
-                            <td class="col value"><?php echo (isset($track['number']) ? $this->escapeHtml($track['number']) : ''); ?></td>
-                        </tr>
-                    <?php endif; ?>
-                    </tbody>
-                </table>
+                        </tbody>
+                    </table>
+                </div>
                 <?php if (is_object($track) && sizeof($track->getProgressdetail())>0): ?>
-                    <table class="data table order tracking" id="track-history-table-<?php echo $track->getTracking(); ?>">
-                        <thead>
+                    <div class="table-wrapper">
+                        <table class="data table order tracking" id="track-history-table-<?php echo $track->getTracking(); ?>">
+                            <caption class="table-caption"><?php echo __('Track history'); ?></caption>
+                            <thead>
                             <tr>
-                                <th class="col location"><?php echo __('Location') ?></th>
-                                <th class="col date"><?php echo __('Date') ?></th>
-                                <th class="col time"><?php echo __('Local Time') ?></th>
-                                <th class="col description"><?php echo __('Description') ?></th>
+                                <th class="col location" scope="col"><?php echo __('Location') ?></th>
+                                <th class="col date" scope="col"><?php echo __('Date') ?></th>
+                                <th class="col time" scope="col"><?php echo __('Local Time') ?></th>
+                                <th class="col description" scope="col"><?php echo __('Description') ?></th>
                             </tr>
-                       </thead>
-                       <tbody>
-                       <?php foreach($track->getProgressdetail() as $_detail): ?>
-                        <?php $_detailDate = (isset($_detail['deliverydate']) ? $this->formatDeliveryDate($_detail['deliverydate']) : '') ?>
-                        <?php $_detailTime = (isset($_detail['deliverytime']) ? $this->formatDeliveryTime($_detail['deliverytime'], $_detail['deliverydate']) : '') ?>
-                            <tr>
-                                <td class="col location"><?php echo (isset($_detail['deliverylocation']) ? $_detail['deliverylocation'] : ''); ?></td>
-                                <td class="col date"><?php echo $_detailDate ?></td>
-                                <td class="col time"><?php echo $_detailTime ?></td>
-                                <td class="col description"><?php echo (isset($_detail['activity']) ? $_detail['activity'] : '') ?></td>
-                            </tr>
-                       <?php endforeach; ?>
-                       </tbody>
-                    </table>
+                            </thead>
+                            <tbody>
+                            <?php foreach($track->getProgressdetail() as $_detail): ?>
+                                <?php $_detailDate = (isset($_detail['deliverydate']) ? $this->formatDeliveryDate($_detail['deliverydate']) : '') ?>
+                                <?php $_detailTime = (isset($_detail['deliverytime']) ? $this->formatDeliveryTime($_detail['deliverytime'], $_detail['deliverydate']) : '') ?>
+                                <tr>
+                                    <td data-th="<?php echo $this->escapeHtml(__('Location')) ?>" class="col location"><?php echo (isset($_detail['deliverylocation']) ? $_detail['deliverylocation'] : ''); ?></td>
+                                    <td data-th="<?php echo $this->escapeHtml(__('Date')) ?>" class="col date"><?php echo $_detailDate ?></td>
+                                    <td data-th="<?php echo $this->escapeHtml(__('Local Time')) ?>" class="col time"><?php echo $_detailTime ?></td>
+                                    <td data-th="<?php echo $this->escapeHtml(__('Description')) ?>" class="col description"><?php echo (isset($_detail['activity']) ? $_detail['activity'] : '') ?></td>
+                                </tr>
+                            <?php endforeach; ?>
+                            </tbody>
+                        </table>
+                    </div>
                 <?php endif; ?>
                 <?php if($counter!=$rowCount): ?>
                 <?php endif; ?>
diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json
index 78bdfbe9be600630bd01b7e73fd72c65d829cb97..e9d89e4571e48395eff7c9772c184272061cad15 100644
--- a/app/code/Magento/Sitemap/composer.json
+++ b/app/code/Magento/Sitemap/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index.xml b/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index.xml
index 7ecc4770361c41d794ebda508736d952d8f7a23c..9db24d230967c8bd7c5a23a2096f5ac4ca5e9255 100644
--- a/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index.xml
+++ b/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_sitemap_index_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Sitemap\Block\Adminhtml\Sitemap" name="adminhtml.sitemap.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Sitemap\Block\Adminhtml\Sitemap" name="adminhtml.sitemap.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index_grid_block.xml b/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index_grid_block.xml
index 44b387f28b5a1135ae7a71f818b4109ee1fea955..6320eec7a0ce1907cb7f64bec1cdde5b8dda4b17 100644
--- a/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index_grid_block.xml
+++ b/app/code/Magento/Sitemap/view/adminhtml/layout/adminhtml_sitemap_index_grid_block.xml
@@ -24,76 +24,78 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.sitemap.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.sitemap.container.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">sitemapGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Sitemap\Model\Resource\Sitemap\Collection</argument>
-                <argument name="default_sort" xsi:type="string">sitemap_id</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.sitemap.container.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.sitemap.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.sitemap.container.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">sitemapGrid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="sitemap_id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Sitemap\Model\Resource\Sitemap\Collection</argument>
+                    <argument name="default_sort" xsi:type="string">sitemap_id</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.sitemap.container.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">sitemap_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_filename">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Filename</argument>
-                        <argument name="index" xsi:type="string">sitemap_filename</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_path">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Path</argument>
-                        <argument name="index" xsi:type="string">sitemap_path</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="link">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Link for Google</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Sitemap\Block\Adminhtml\Grid\Renderer\Link</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_time">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Last Generated</argument>
-                        <argument name="index" xsi:type="string">sitemap_time</argument>
-                        <argument name="type" xsi:type="string">datetime</argument>
-                        <argument name="column_css_class" xsi:type="string">col-date</argument>
-                        <argument name="header_css_class" xsi:type="string">col-date</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Store View</argument>
-                        <argument name="type" xsi:type="string">store</argument>
-                        <argument name="id" xsi:type="string">store_id</argument>
-                        <argument name="index" xsi:type="string">store_id</argument>
-                        <argument name="store_view" xsi:type="string">true</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Action</argument>
-                        <argument name="filter" xsi:type="string">0</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Sitemap\Block\Adminhtml\Grid\Renderer\Action</argument>
+                        <argument name="id" xsi:type="string">sitemapGrid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="sitemap_id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">sitemap_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_filename">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Filename</argument>
+                            <argument name="index" xsi:type="string">sitemap_filename</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_path">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Path</argument>
+                            <argument name="index" xsi:type="string">sitemap_path</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="link">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Link for Google</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Sitemap\Block\Adminhtml\Grid\Renderer\Link</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sitemap_time">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Last Generated</argument>
+                            <argument name="index" xsi:type="string">sitemap_time</argument>
+                            <argument name="type" xsi:type="string">datetime</argument>
+                            <argument name="column_css_class" xsi:type="string">col-date</argument>
+                            <argument name="header_css_class" xsi:type="string">col-date</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Store View</argument>
+                            <argument name="type" xsi:type="string">store</argument>
+                            <argument name="id" xsi:type="string">store_id</argument>
+                            <argument name="index" xsi:type="string">store_id</argument>
+                            <argument name="store_view" xsi:type="string">true</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Action</argument>
+                            <argument name="filter" xsi:type="string">0</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Sitemap\Block\Adminhtml\Grid\Renderer\Action</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Store/App/Response/Redirect.php b/app/code/Magento/Store/App/Response/Redirect.php
index 8f6f8555cc834aa86a85b8ed37129ad1c8ae7667..9f95846040452ee0a0730474840947e979ec2db7 100644
--- a/app/code/Magento/Store/App/Response/Redirect.php
+++ b/app/code/Magento/Store/App/Response/Redirect.php
@@ -63,6 +63,8 @@ class Redirect implements \Magento\Framework\App\Response\RedirectInterface
     protected $_urlBuilder;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\RequestInterface $request
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param \Magento\Framework\Encryption\UrlCoder $urlCoder
@@ -176,18 +178,16 @@ class Redirect implements \Magento\Framework\App\Response\RedirectInterface
     }
 
     /**
-     * Set redirect into response
+     * {@inheritdoc}
      *
-     * @param \Magento\Framework\App\ResponseInterface $response
-     * @param string $path
      * @param array $arguments
-     * @return void
+     * @return array
      */
-    public function redirect(\Magento\Framework\App\ResponseInterface $response, $path, $arguments = array())
+    public function updatePathParams(array $arguments)
     {
-        if ($this->_session->getCookieShouldBeReceived() &&
-            $this->_urlBuilder->getUseSession() &&
-            $this->_canUseSessionIdInParam
+        if ($this->_session->getCookieShouldBeReceived()
+            && $this->_sidResolver->getUseSessionInUrl()
+            && $this->_canUseSessionIdInParam
         ) {
             $arguments += array(
                 '_query' => array(
@@ -195,6 +195,20 @@ class Redirect implements \Magento\Framework\App\Response\RedirectInterface
                 )
             );
         }
+        return $arguments;
+    }
+
+    /**
+     * Set redirect into response
+     *
+     * @param \Magento\Framework\App\ResponseInterface $response
+     * @param string $path
+     * @param array $arguments
+     * @return void
+     */
+    public function redirect(\Magento\Framework\App\ResponseInterface $response, $path, $arguments = [])
+    {
+        $arguments = $this->updatePathParams($arguments);
         $response->setRedirect($this->_urlBuilder->getUrl($path, $arguments));
     }
 
diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json
index a9a392271aed7e4a64745b4a55b05e1506190ca2..3a9e2b96925e77ac614ca9f194b31a49539f28b9 100644
--- a/app/code/Magento/Store/composer.json
+++ b/app/code/Magento/Store/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-ui": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-ui": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
index 5a9e2449333005f62d0155ae10fbe4a3ff90b9f0..33700d0592aac5476d1273cae975d4a3d652d318 100644
--- a/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
+++ b/app/code/Magento/Tax/Controller/Adminhtml/Rule/Index.php
@@ -36,7 +36,5 @@ class Index extends \Magento\Tax\Controller\Adminhtml\Rule
         $this->_title->add(__('Tax Rules'));
         $this->_initAction();
         $this->_view->renderLayout();
-
-        return $this;
     }
 }
diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json
index d1ec4f8766c4f1c54516a5a1df2aa64b75722c1b..dcc259ffc1e1ee843c6c09fc46c7cf7d4fc78c2e 100644
--- a/app/code/Magento/Tax/composer.json
+++ b/app/code/Magento/Tax/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-reports": "0.1.0-alpha101",
-        "magento/module-configurable-product": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-reports": "0.1.0-alpha102",
+        "magento/module-configurable-product": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/sales_creditmemo_item_price.xml b/app/code/Magento/Tax/view/adminhtml/layout/sales_creditmemo_item_price.xml
index 039a27d116e5c10ca8b84682360946403f6b5eeb..4d22b08ee5129acba6314e5a032bb8dbd5bdf830 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/sales_creditmemo_item_price.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/sales_creditmemo_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/sales_invoice_item_price.xml b/app/code/Magento/Tax/view/adminhtml/layout/sales_invoice_item_price.xml
index d6f150987da7095be1a6b5cf1868d1ff0d5216a1..be09af8f3dfde49dad5b252fac4551a04bc634c2 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/sales_invoice_item_price.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/sales_invoice_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_items">
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/sales_order_create_item_price.xml b/app/code/Magento/Tax/view/adminhtml/layout/sales_order_create_item_price.xml
index 74cd0e51e1d2068df3b020fee4503df8a3ae3da6..15d6fa8ed668962a99468daa7c99815fc5910120 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/sales_order_create_item_price.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/sales_order_create_item_price.xml
@@ -24,19 +24,21 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_unit_price" template="order/create/items/price/unit.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total" template="order/create/items/price/row.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total_with_discount" template="order/create/items/price/total.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
+    <body>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_unit_price" template="order/create/items/price/unit.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total" template="order/create/items/price/row.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total_with_discount" template="order/create/items/price/total.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/sales_order_item_price.xml b/app/code/Magento/Tax/view/adminhtml/layout/sales_order_item_price.xml
index 666f78f949fae0eef03348c8368c51d587b98162..4202a022cb186bfc5efb821ac66b38c07c63155f 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/sales_order_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Tax\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_block.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_block.xml
index 05eaf013f6c8a4d91e06593d3e0f549df8ea4501..17cf1de91b51d3ce4d2a081ed1793eb4ed0ee00b 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_block.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_block.xml
@@ -24,70 +24,72 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.tax.rate.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.tax.rate.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">tax_rate_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Tax\Service\V1\Collection\TaxRateCollection</argument>
-                <argument name="default_sort" xsi:type="string">region_name</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.tax.rate.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.tax.rate.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">tax_rate_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">tax/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="rate" xsi:type="string">getTaxCalculationRateId</item>
-                        </item>
-                    </argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Tax\Service\V1\Collection\TaxRateCollection</argument>
+                    <argument name="default_sort" xsi:type="string">region_name</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.code" as="code">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.catalog.product.set.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Tax Identifier</argument>
-                        <argument name="filter_index" xsi:type="string">code</argument>
-                        <argument name="index" xsi:type="string">code</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.tax_country_id" as="tax_country_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Country</argument>
-                        <argument name="type" xsi:type="string">country</argument>
-                        <argument name="filter_index" xsi:type="string">tax_country_id</argument>
-                        <argument name="index" xsi:type="string">tax_country_id</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.region_name" as="region_name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">State/Region</argument>
-                        <argument name="filter_index" xsi:type="string">region_name</argument>
-                        <argument name="index" xsi:type="string">region_name</argument>
-                        <argument name="default" xsi:type="string">*</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.tax_postcode" as="tax_postcode">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Zip/Post Code</argument>
-                        <argument name="index" xsi:type="string">tax_postcode</argument>
-                        <argument name="default" xsi:type="string">*</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.rate" as="rate">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Rate</argument>
-                        <argument name="index" xsi:type="string">rate</argument>
-                        <argument name="type" xsi:type="string">number</argument>
-                        <argument name="default" xsi:type="string">0.00</argument>
-                        <argument name="renderer" xsi:type="string">Magento\Tax\Block\Adminhtml\Rate\Grid\Renderer\Data</argument>
-                        <argument name="column_css_class" xsi:type="string">col-price</argument>
-                        <argument name="header_css_class" xsi:type="string">col-price</argument>
+                        <argument name="id" xsi:type="string">tax_rate_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">tax/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="rate" xsi:type="string">getTaxCalculationRateId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.code" as="code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Tax Identifier</argument>
+                            <argument name="filter_index" xsi:type="string">code</argument>
+                            <argument name="index" xsi:type="string">code</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.tax_country_id" as="tax_country_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Country</argument>
+                            <argument name="type" xsi:type="string">country</argument>
+                            <argument name="filter_index" xsi:type="string">tax_country_id</argument>
+                            <argument name="index" xsi:type="string">tax_country_id</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.region_name" as="region_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">State/Region</argument>
+                            <argument name="filter_index" xsi:type="string">region_name</argument>
+                            <argument name="index" xsi:type="string">region_name</argument>
+                            <argument name="default" xsi:type="string">*</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.tax_postcode" as="tax_postcode">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Zip/Post Code</argument>
+                            <argument name="index" xsi:type="string">tax_postcode</argument>
+                            <argument name="default" xsi:type="string">*</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.catalog.product.set.grid.column.rate" as="rate">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Rate</argument>
+                            <argument name="index" xsi:type="string">rate</argument>
+                            <argument name="type" xsi:type="string">number</argument>
+                            <argument name="default" xsi:type="string">0.00</argument>
+                            <argument name="renderer" xsi:type="string">Magento\Tax\Block\Adminhtml\Rate\Grid\Renderer\Data</argument>
+                            <argument name="column_css_class" xsi:type="string">col-price</argument>
+                            <argument name="header_css_class" xsi:type="string">col-price</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportcsv.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportcsv.xml
index 5315724aafc716a46ecfbcd29bdcf4665483290c..ce7e1f2c1bda4acee9f666ce8ff8d53f3a4b8714 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportcsv.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportcsv.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="tax_rate_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.tax.rate.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.tax.rate.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportxml.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportxml.xml
index 5315724aafc716a46ecfbcd29bdcf4665483290c..ce7e1f2c1bda4acee9f666ce8ff8d53f3a4b8714 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportxml.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_exportxml.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="tax_rate_block"/>
-    <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.tax.rate.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    <body>
+        <block class="Magento\Backend\Block\Widget\Grid\Container" name="adminhtml.tax.rate.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_index.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_index.xml
index 56547dc01fe9235e26c3fb26fa0de8d896e104e6..976d97772d5136149e758cedd82db6974d3eccdc 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_index.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rate_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="tax_rate_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Tax\Block\Adminhtml\Rate\Toolbar\Add" name="adminhtml.tax.rate.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Tax\Block\Adminhtml\Rate\Toolbar\Add" name="adminhtml.tax.rate.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_block.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_block.xml
index 94671b90120917fd7501561e7378b355233621e3..09d7510624ae8fb7e555096ad9764aee82800d01 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_block.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_block.xml
@@ -24,91 +24,93 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.block.tax.rule.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.tax.rule.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">taxRuleGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Tax\Service\V1\Collection\TaxRuleCollection</argument>
-                <argument name="default_sort" xsi:type="string">tax_rule_id</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.block.tax.rule.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.block.tax.rule.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.tax.rule.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">tax/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="rule" xsi:type="string">getTaxCalculationRuleId</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">taxRuleGrid</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Tax\Service\V1\Collection\TaxRuleCollection</argument>
+                    <argument name="default_sort" xsi:type="string">tax_rule_id</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.block.tax.rule.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Name</argument>
-                        <argument name="index" xsi:type="string">code</argument>
-                        <argument name="type" xsi:type="string">longtext</argument>
-                        <argument name="filter_index" xsi:type="string">code</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_tax_classes">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Customer Tax Class</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">customer_tax_classes</argument>
-                        <argument name="filter_index" xsi:type="string">ctc.customer_tax_class_id</argument>
-                        <argument name="show_missing_option_values" xsi:type="string">1</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Tax\Model\TaxClass\Source\Customer"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="product_tax_classes">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Product Tax Class</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">product_tax_classes</argument>
-                        <argument name="filter_index" xsi:type="string">ptc.product_tax_class_id</argument>
-                        <argument name="show_missing_option_values" xsi:type="string">1</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Tax\Model\TaxClass\Source\Product"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="tax_rates">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Tax Rate</argument>
-                        <argument name="sortable" xsi:type="string">0</argument>
-                        <argument name="index" xsi:type="string">tax_rates</argument>
-                        <argument name="filter_index" xsi:type="string">rate.tax_calculation_rate_id</argument>
-                        <argument name="show_missing_option_values" xsi:type="string">1</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Tax\Model\Rate\Source"/>
-                        <argument name="column_css_class" xsi:type="string">col-title</argument>
-                        <argument name="header_css_class" xsi:type="string">col-title</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="priority">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Priority</argument>
-                        <argument name="index" xsi:type="string">priority</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="calculate_subtotal">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Subtotal Only</argument>
-                        <argument name="index" xsi:type="string">calculate_subtotal</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="position">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
-                        <argument name="index" xsi:type="string">position</argument>
-                        <argument name="type" xsi:type="string">text</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">tax/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="rule" xsi:type="string">getTaxCalculationRuleId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="code">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Name</argument>
+                            <argument name="index" xsi:type="string">code</argument>
+                            <argument name="type" xsi:type="string">longtext</argument>
+                            <argument name="filter_index" xsi:type="string">code</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="customer_tax_classes">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Customer Tax Class</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">customer_tax_classes</argument>
+                            <argument name="filter_index" xsi:type="string">ctc.customer_tax_class_id</argument>
+                            <argument name="show_missing_option_values" xsi:type="string">1</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Tax\Model\TaxClass\Source\Customer"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="product_tax_classes">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Product Tax Class</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">product_tax_classes</argument>
+                            <argument name="filter_index" xsi:type="string">ptc.product_tax_class_id</argument>
+                            <argument name="show_missing_option_values" xsi:type="string">1</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Tax\Model\TaxClass\Source\Product"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="tax_rates">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Tax Rate</argument>
+                            <argument name="sortable" xsi:type="string">0</argument>
+                            <argument name="index" xsi:type="string">tax_rates</argument>
+                            <argument name="filter_index" xsi:type="string">rate.tax_calculation_rate_id</argument>
+                            <argument name="show_missing_option_values" xsi:type="string">1</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Tax\Model\Rate\Source"/>
+                            <argument name="column_css_class" xsi:type="string">col-title</argument>
+                            <argument name="header_css_class" xsi:type="string">col-title</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="priority">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Priority</argument>
+                            <argument name="index" xsi:type="string">priority</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="calculate_subtotal">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Subtotal Only</argument>
+                            <argument name="index" xsi:type="string">calculate_subtotal</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="position">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
+                            <argument name="index" xsi:type="string">position</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_edit.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_edit.xml
index 73d6a4497e7c99c3407c63d3de78126546ccddf2..0c23aaf3b74e107231ce8d5088507570f6f2b35f 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_edit.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_edit.xml
@@ -29,9 +29,11 @@
         <css src="jquery/editableMultiselect/css/jquery.multiselect.css"/>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Tax\Block\Adminhtml\Rule\Edit"/>
-        <block class="Magento\Tax\Block\Adminhtml\Rule\Edit\Form" name="tax-rule-edit" template="rule/edit.phtml"/>
-        <block class="Magento\Tax\Block\Adminhtml\Rate\Form" name="tax-rate-form" template="rule/rate/form.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Tax\Block\Adminhtml\Rule\Edit"/>
+            <block class="Magento\Tax\Block\Adminhtml\Rule\Edit\Form" name="tax-rule-edit" template="rule/edit.phtml"/>
+            <block class="Magento\Tax\Block\Adminhtml\Rate\Form" name="tax-rate-form" template="rule/rate/form.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_index.xml b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_index.xml
index 35e1018a5cbfbfc99e7350e04aad37f9eca05656..f1ffaede81c3f17775dc9f7803f451b5abad427e 100644
--- a/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_index.xml
+++ b/app/code/Magento/Tax/view/adminhtml/layout/tax_rule_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="tax_rule_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Tax\Block\Adminhtml\Rule" name="adminhtml.block.tax.rule.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Tax\Block\Adminhtml\Rule" name="adminhtml.block.tax.rule.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/base/layout/catalog_product_prices.xml b/app/code/Magento/Tax/view/base/layout/catalog_product_prices.xml
index 07942c496089d7c72d312ada63c2e56ebc78c17e..c3209e86922991d36867440da89981c63ab5dcf8 100644
--- a/app/code/Magento/Tax/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/Tax/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <referenceBlock name="render.product.prices">
         <arguments>
             <argument name="default" xsi:type="array">
@@ -48,4 +48,4 @@
             </argument>
         </arguments>
     </referenceBlock>
-</page>
+</layout>
diff --git a/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml b/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
index 38d5aa616ab8cdf2b53a898cece0bb8cfe91eeca..ca31379925ebc41a0ea854db531283f2ea877823 100644
--- a/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="minicart">
-        <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="Magento_Tax::checkout/cart/item/price/sidebar.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="minicart">
+            <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="Magento_Tax::checkout/cart/item/price/sidebar.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml b/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
index 159b6dd6b0f47eb00bc277f7875a461558bb526c..5ec5999a94b2b48ec0fbb1904b1edcc2273d1389 100644
--- a/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/checkout_cart_sidebar_total_renderers.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="minicart">
-        <block class="Magento\Tax\Block\Checkout\Cart\Sidebar\Totals" name="checkout.cart.minicart.totals" template="Magento_Tax::checkout/cart/minicart/totals.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="minicart">
+            <block class="Magento\Tax\Block\Checkout\Cart\Sidebar\Totals" name="checkout.cart.minicart.totals" template="Magento_Tax::checkout/cart/minicart/totals.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/frontend/layout/checkout_item_price_renderers.xml b/app/code/Magento/Tax/view/frontend/layout/checkout_item_price_renderers.xml
index 477f050ae49c1339e5c303484eb048565b9aa6e8..12c3aa5574447601515d2eef8b48cd2da3ae0556 100644
--- a/app/code/Magento/Tax/view/frontend/layout/checkout_item_price_renderers.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/checkout_item_price_renderers.xml
@@ -24,6 +24,8 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="Magento_Tax::item/price/unit.phtml"/>
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.item.price.row" template="Magento_Tax::item/price/row.phtml"/>
+    <body>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="Magento_Tax::item/price/unit.phtml"/>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="checkout.item.price.row" template="Magento_Tax::item/price/row.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/frontend/layout/checkout_shipping_price_renderer.xml b/app/code/Magento/Tax/view/frontend/layout/checkout_shipping_price_renderer.xml
index 842e7abdd6469d74241ae85d96cd60340b291470..af6d08444b2de3a9c266e60543f0bf804f21ba5d 100644
--- a/app/code/Magento/Tax/view/frontend/layout/checkout_shipping_price_renderer.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/checkout_shipping_price_renderer.xml
@@ -24,6 +24,7 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Tax\Block\Checkout\Shipping\Price" name="checkout.shipping.price" as="shipping.price" template="Magento_Tax::checkout/shipping/price.phtml"/>
+    <body>
+        <block class="Magento\Tax\Block\Checkout\Shipping\Price" name="checkout.shipping.price" as="shipping.price" template="Magento_Tax::checkout/shipping/price.phtml"/>
+    </body>
 </page>
-
diff --git a/app/code/Magento/Tax/view/frontend/layout/sales_email_item_price.xml b/app/code/Magento/Tax/view/frontend/layout/sales_email_item_price.xml
index fce8c2b4b12f5753f7776aea0c7a3d3ff4df6d35..5dc24c2a5c3ade1090f3f836af8d65e466a646fa 100644
--- a/app/code/Magento/Tax/view/frontend/layout/sales_email_item_price.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/sales_email_item_price.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="items">
-        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_price" template="email/items/price/row.phtml">
-            <arguments>
-                <argument name="zone" xsi:type="string">email</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="items">
+            <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_price" template="email/items/price/row.phtml">
+                <arguments>
+                    <argument name="zone" xsi:type="string">email</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Tax/view/frontend/layout/sales_order_item_price.xml b/app/code/Magento/Tax/view/frontend/layout/sales_order_item_price.xml
index 989bb8e135f2bae94f87c04aa11bb75e5adaba6b..df6bab9d93de715ceed405945c756d62c0e079ab 100644
--- a/app/code/Magento/Tax/view/frontend/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Tax/view/frontend/layout/sales_order_item_price.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_unit_price" template="item/price/unit.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">sales</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total" template="item/price/row.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">sales</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total_after_discount" template="item/price/total_after_discount.phtml"/>
+    <body>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_unit_price" template="item/price/unit.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">sales</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total" template="item/price/row.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">sales</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Tax\Block\Item\Price\Renderer" name="item_row_total_after_discount" template="item/price/total_after_discount.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json
index 4869de1a5cd9fcff0baf7121733b0f911f570b5b..47930195b403ef725f0285c3c6b263d15ddf95cd 100644
--- a/app/code/Magento/TaxImportExport/composer.json
+++ b/app/code/Magento/TaxImportExport/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rate_block.xml b/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rate_block.xml
index 8829604ec41892ca83c27419ff90a55f815d2e4c..2379f05f9e44f23afb91d872ababd5a931a4d981 100644
--- a/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rate_block.xml
+++ b/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rate_block.xml
@@ -24,35 +24,37 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.tax.rate.grid">
-        <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.tax.rate.grid.export" as="grid.export">
+    <body>
+        <referenceBlock name="adminhtml.tax.rate.grid">
+            <block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.tax.rate.grid.export" as="grid.export">
+                <arguments>
+                    <argument name="exportTypes" xsi:type="array">
+                        <item name="csv" xsi:type="array">
+                            <item name="urlPath" xsi:type="string">tax/*/exportCsv</item>
+                            <item name="label" xsi:type="string" translate="true">CSV</item>
+                        </item>
+                        <item name="excel" xsi:type="array">
+                            <item name="urlPath" xsi:type="string">tax/*/exportXml</item>
+                            <item name="label" xsi:type="string" translate="true">Excel XML</item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.catalog.product.set.grid.column.tax_country_id">
             <arguments>
-                <argument name="exportTypes" xsi:type="array">
-                    <item name="csv" xsi:type="array">
-                        <item name="urlPath" xsi:type="string">tax/*/exportCsv</item>
-                        <item name="label" xsi:type="string" translate="true">CSV</item>
-                    </item>
-                    <item name="excel" xsi:type="array">
-                        <item name="urlPath" xsi:type="string">tax/*/exportXml</item>
-                        <item name="label" xsi:type="string" translate="true">Excel XML</item>
-                    </item>
-                </argument>
+                <argument name="renderer" xsi:type="string">Magento\TaxImportExport\Block\Adminhtml\Rate\Grid\Renderer\Country</argument>
             </arguments>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.catalog.product.set.grid.column.tax_country_id">
-        <arguments>
-            <argument name="renderer" xsi:type="string">Magento\TaxImportExport\Block\Adminhtml\Rate\Grid\Renderer\Country</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.catalog.product.set.grid.column.code">
-        <arguments>
-            <argument name="header_export" xsi:type="string" translate="true">Code</argument>
-        </arguments>
-    </referenceBlock>
-    <referenceBlock name="adminhtml.catalog.product.set.grid.column.region_name">
-        <arguments>
-            <argument name="header_export" xsi:type="string" translate="true">State</argument>
-        </arguments>
-    </referenceBlock>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.catalog.product.set.grid.column.code">
+            <arguments>
+                <argument name="header_export" xsi:type="string" translate="true">Code</argument>
+            </arguments>
+        </referenceBlock>
+        <referenceBlock name="adminhtml.catalog.product.set.grid.column.region_name">
+            <arguments>
+                <argument name="header_export" xsi:type="string" translate="true">State</argument>
+            </arguments>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rule_edit.xml b/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rule_edit.xml
index 0987ad228aac9320c0c56ffeb0c0302da99b9ed0..d36b856dbc8fb05bff80a6df4f0ce2b7a428fadd 100644
--- a/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rule_edit.xml
+++ b/app/code/Magento/TaxImportExport/view/adminhtml/layout/tax_rule_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="content">
-        <block class="Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExport" name="tax-rate-importExport" template="importExport.phtml"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="content">
+            <block class="Magento\TaxImportExport\Block\Adminhtml\Rate\ImportExport" name="tax-rate-importExport" template="importExport.phtml"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json
index 08c4a580d3e538fe304b67b1528ae98083cd3b4c..d9480153a73c5b36875c9ba75242241e13382ec8 100644
--- a/app/code/Magento/Theme/composer.json
+++ b/app/code/Magento/Theme/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-translation": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-translation": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_block.xml b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_block.xml
index 8f64fc588fe78cbc399b2999ed7829f98fc69b9c..9bf3765ea2df07fb68e7e3aabb401374f9aef320 100644
--- a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_block.xml
+++ b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_block.xml
@@ -24,60 +24,62 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="design_theme">
-        <block class="Magento\Backend\Block\Widget\Grid" name="theme.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">theme_grid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Theme\Grid\Collection</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="theme.grid.columnSet">
+    <body>
+        <referenceBlock name="design_theme">
+            <block class="Magento\Backend\Block\Widget\Grid" name="theme.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">theme_grid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="id" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Core\Model\Resource\Theme\Grid\Collection</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/grid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_title">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="theme.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Theme Title</argument>
-                        <argument name="index" xsi:type="string">theme_title</argument>
-                        <argument name="filter_index" xsi:type="string">main_table.theme_title</argument>
-                        <argument name="column_css_class" xsi:type="string">theme-title</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="parent_theme_title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Parent Theme</argument>
-                        <argument name="index" xsi:type="string">parent_theme_title</argument>
-                        <argument name="filter_index" xsi:type="string">parent.theme_title</argument>
-                        <argument name="column_css_class" xsi:type="string">parent-theme-title</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_path">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Theme Path</argument>
-                        <argument name="index" xsi:type="string">theme_path</argument>
-                        <argument name="filter_index" xsi:type="string">main_table.theme_path</argument>
-                        <argument name="column_css_class" xsi:type="string">theme-path</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_version">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Theme Version</argument>
-                        <argument name="index" xsi:type="string">theme_version</argument>
-                        <argument name="filter_index" xsi:type="string">main_table.theme_version</argument>
-                        <argument name="column_css_class" xsi:type="string">theme-version</argument>
+                        <argument name="id" xsi:type="string">theme_grid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="id" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Theme Title</argument>
+                            <argument name="index" xsi:type="string">theme_title</argument>
+                            <argument name="filter_index" xsi:type="string">main_table.theme_title</argument>
+                            <argument name="column_css_class" xsi:type="string">theme-title</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="parent_theme_title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Parent Theme</argument>
+                            <argument name="index" xsi:type="string">parent_theme_title</argument>
+                            <argument name="filter_index" xsi:type="string">parent.theme_title</argument>
+                            <argument name="column_css_class" xsi:type="string">parent-theme-title</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_path">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Theme Path</argument>
+                            <argument name="index" xsi:type="string">theme_path</argument>
+                            <argument name="filter_index" xsi:type="string">main_table.theme_path</argument>
+                            <argument name="column_css_class" xsi:type="string">theme-path</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_version">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Theme Version</argument>
+                            <argument name="index" xsi:type="string">theme_version</argument>
+                            <argument name="filter_index" xsi:type="string">main_table.theme_version</argument>
+                            <argument name="column_css_class" xsi:type="string">theme-version</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_edit.xml b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_edit.xml
index 39efd395be0b054cd39c00d3b4b86f8bbe846368..2b96742c35f581ac80fb26e06d913899a7b02673 100644
--- a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_edit.xml
+++ b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_edit.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/>
         <css src="Magento_Theme::css/theme.css"/>
@@ -31,27 +31,29 @@
         <css src="Magento_Core::prototype/magento.css"/>
         <link src="Magento_Theme::js/bootstrap.js"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit" name="theme_edit"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tabs" name="theme_edit_tabs">
-            <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\Css" template="tabs/css.phtml" name="theme_edit_tabs_tab_css_tab"/>
-            <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\Js" template="tabs/js.phtml" name="theme_edit_tabs_tab_js_tab">
-                <block class="Magento\Backend\Block\Widget\Form\Renderer\Fieldset" template="Magento_Theme::tabs/fieldset/js.phtml" name="theme_edit_tabs_tab_js_tab_content"/>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit" name="theme_edit"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tabs" name="theme_edit_tabs">
+                <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\Css" template="tabs/css.phtml" name="theme_edit_tabs_tab_css_tab"/>
+                <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\Js" template="tabs/js.phtml" name="theme_edit_tabs_tab_js_tab">
+                    <block class="Magento\Backend\Block\Widget\Form\Renderer\Fieldset" template="Magento_Theme::tabs/fieldset/js.phtml" name="theme_edit_tabs_tab_js_tab_content"/>
+                </block>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">general_section</argument>
+                    <argument name="block" xsi:type="string">Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\General</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">css_tab</argument>
+                    <argument name="block" xsi:type="string">theme_edit_tabs_tab_css_tab</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">js_tab</argument>
+                    <argument name="block" xsi:type="string">theme_edit_tabs_tab_js_tab</argument>
+                </action>
             </block>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">general_section</argument>
-                <argument name="block" xsi:type="string">Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\Tab\General</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">css_tab</argument>
-                <argument name="block" xsi:type="string">theme_edit_tabs_tab_css_tab</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">js_tab</argument>
-                <argument name="block" xsi:type="string">theme_edit_tabs_tab_js_tab</argument>
-            </action>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_index.xml b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_index.xml
index 46eabdb3f21bce5c6f282108f8e6919141145652..e8f657115088539edb1f9638ab17a90d5f13d8fb 100644
--- a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_index.xml
+++ b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_theme_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_system_design_theme_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme" name="design_theme"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Theme\Block\Adminhtml\System\Design\Theme" name="design_theme"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_wysiwyg_files_index.xml b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_wysiwyg_files_index.xml
index 951085c463ec9868834155d59c39d53fa3feb9ab..b42eb6e739ed813e0b433279730ba1a49a94003c 100644
--- a/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_wysiwyg_files_index.xml
+++ b/app/code/Magento/Theme/view/adminhtml/layout/adminhtml_system_design_wysiwyg_files_index.xml
@@ -23,14 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="footer"/>
-    <referenceContainer name="left">
-        <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Tree" name="wysiwyg_files.tree" template="Magento_Cms::browser/tree.phtml"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Content" name="wysiwyg_files.content" template="browser/content.phtml">
-            <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Content\Uploader" name="wysiwyg_files.uploader" template="browser/content/uploader.phtml"/>
-        </block>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <remove name="footer"/>
+        <referenceContainer name="left">
+            <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Tree" name="wysiwyg_files.tree" template="Magento_Cms::browser/tree.phtml"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Content" name="wysiwyg_files.content" template="browser/content.phtml">
+                <block class="Magento\Theme\Block\Adminhtml\Wysiwyg\Files\Content\Uploader" name="wysiwyg_files.uploader" template="browser/content/uploader.phtml"/>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/base/page_layout/empty.xml b/app/code/Magento/Theme/view/base/page_layout/empty.xml
index 28eedaa4f0bd6ef5d71cf86d620ba1caf7416573..da642803bd2b453e1b8093835a4bcee6e9b78084 100644
--- a/app/code/Magento/Theme/view/base/page_layout/empty.xml
+++ b/app/code/Magento/Theme/view/base/page_layout/empty.xml
@@ -34,7 +34,7 @@
                     <container name="main" label="Main Content Container" htmlTag="div" htmlClass="column main"/>
                 </container>
             </container>
-            <container name="page.bottom" as="page_bottom" label="Before Page Footer Container" after="main.content" htmlTag="div" htmlClass="page bottom"/>
+            <container name="page.bottom" as="page_bottom" label="Before Page Footer Container" after="main.content" htmlTag="div" htmlClass="page-bottom"/>
             <container name="before.body.end" as="before_body_end" after="-" label="Page Bottom"/>
         </container>
     </container>
diff --git a/app/code/Magento/Theme/view/frontend/layout/default.xml b/app/code/Magento/Theme/view/frontend/layout/default.xml
index 036309d1fdf674966efcdcece87b78392f569973..ec9999cd0680374d064fc1ba320e787fc3c8fccf 100644
--- a/app/code/Magento/Theme/view/frontend/layout/default.xml
+++ b/app/code/Magento/Theme/view/frontend/layout/default.xml
@@ -24,78 +24,76 @@
  */
 -->
 <page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <!-- Temporary solution -->
-    <block name="require.js" class="Magento\Framework\View\Element\Template" template="Magento_Theme::js/require_js.phtml" />
-    <referenceContainer name="after.body.start">
-        <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/>
-        <block class="Magento\Framework\View\Element\Js\Cookie" name="js_cookies" template="Magento_Theme::js/cookie.phtml"/>
-        <block class="Magento\Theme\Block\Html\Notices" name="global_notices" template="html/notices.phtml"/>
-    </referenceContainer>
-
-    <referenceBlock name="top.links">
-        <block class="Magento\Theme\Block\Html\Header" name="header" as="header" before="-">
-            <arguments>
-                <argument name="show_part" xsi:type="string">welcome</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
-
-    <referenceContainer name="header.container">
-        <container name="header.panel" label="Page Header Panel" htmlTag="div" htmlClass="panel header">
-            <block class="Magento\Framework\View\Element\Template" name="skip_to_content" template="Magento_Theme::html/skip.phtml">
-                <arguments>
-                    <argument name="target" xsi:type="string">maincontent</argument>
-                    <argument name="label" translate="true" xsi:type="string">Skip to content</argument>
-                </arguments>
-            </block>
-            <block class="Magento\Store\Block\Switcher" name="store_language" as="store_language" template="switch/languages.phtml"/>
-        </container>
-        <container name="header-wrapper" label="Page Header" as="header-wrapper" htmlTag="div" htmlClass="header content">
-            <block class="Magento\Theme\Block\Html\Header\Logo" name="logo" />
-            <block class="Magento\Framework\View\Element\Html\Links" name="top.links">
-                <arguments>
-                    <argument name="css_class" xsi:type="string">header links</argument>
-                </arguments>
-            </block>
-        </container>
-    </referenceContainer>
-
-    <referenceContainer name="page.top">
-        <block class="Magento\Theme\Block\Html\Topmenu" name="catalog.topnav" template="html/topmenu.phtml" ttl="3600"/>
-        <container name="top.container" as="topContainer" label="After Page Header Top" htmlTag="div" htmlClass="top-container"/>
-        <block class="Magento\Theme\Block\Html\Breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
-    </referenceContainer>
-    <referenceContainer name="columns.top">
-        <block class="Magento\Theme\Block\Html\Title" name="page.main.title" template="html/title.phtml"/>
-        <container name="page.messages" label="invisible" htmlTag="div" htmlClass="page messages">
-            <block class="Magento\Framework\View\Element\Messages" name="global_messages" as="global_messages"/>
-            <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
-        </container>
-    </referenceContainer>
-    <referenceContainer name="main">
-        <container name="content.top" label="Main Content Top"/>
-        <container name="content" label="Main Content Area"/>
-        <container name="content.aside" label="Main Content Aside"/>
-        <container name="content.bottom" label="Main Content Bottom"/>
-    </referenceContainer>
-    <referenceContainer name="page.bottom.container">
-        <container name="page.bottom" label="Before Page Footer" htmlTag="div" htmlClass="content"/>
-    </referenceContainer>
-    <referenceContainer name="footer-container">
-        <container name="footer" as="footer" label="Page Footer" htmlTag="div" htmlClass="footer content">
-            <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" template="switch/stores.phtml"/>
-            <block class="Magento\Framework\View\Element\Html\Links" name="footer_links">
+    <update handle="default_head_blocks"/>
+    <body>
+        <!-- Temporary solution -->
+        <block name="require.js" class="Magento\Framework\View\Element\Template" template="Magento_Theme::js/require_js.phtml" />
+        <referenceContainer name="after.body.start">
+            <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/>
+            <block class="Magento\Framework\View\Element\Js\Cookie" name="js_cookies" template="Magento_Theme::js/cookie.phtml"/>
+            <block class="Magento\Theme\Block\Html\Notices" name="global_notices" template="html/notices.phtml"/>
+        </referenceContainer>
+        <referenceBlock name="top.links">
+            <block class="Magento\Theme\Block\Html\Header" name="header" as="header" before="-">
                 <arguments>
-                    <argument name="css_class" xsi:type="string">footer links</argument>
+                    <argument name="show_part" xsi:type="string">welcome</argument>
                 </arguments>
             </block>
-            <block class="Magento\Theme\Block\Html\Footer" name="copyright" template="html/copyright.phtml"/>
-            <block class="Magento\Framework\View\Element\Template" name="report.bugs" template="Magento_Theme::html/bugreport.phtml" />
-        </container>
-    </referenceContainer>
-
-    <update handle="default_head_blocks"/>
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\FormKey" name="formkey"/>
-    </referenceContainer>
+        </referenceBlock>
+        <referenceContainer name="header.container">
+            <container name="header.panel" label="Page Header Panel" htmlTag="div" htmlClass="panel header">
+                <block class="Magento\Framework\View\Element\Template" name="skip_to_content" template="Magento_Theme::html/skip.phtml">
+                    <arguments>
+                        <argument name="target" xsi:type="string">maincontent</argument>
+                        <argument name="label" translate="true" xsi:type="string">Skip to content</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Store\Block\Switcher" name="store_language" as="store_language" template="switch/languages.phtml"/>
+            </container>
+            <container name="header-wrapper" label="Page Header" as="header-wrapper" htmlTag="div" htmlClass="header content">
+                <block class="Magento\Theme\Block\Html\Header\Logo" name="logo" />
+                <block class="Magento\Framework\View\Element\Html\Links" name="top.links">
+                    <arguments>
+                        <argument name="css_class" xsi:type="string">header links</argument>
+                    </arguments>
+                </block>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="page.top">
+            <block class="Magento\Theme\Block\Html\Topmenu" name="catalog.topnav" template="html/topmenu.phtml" ttl="3600"/>
+            <container name="top.container" as="topContainer" label="After Page Header Top" htmlTag="div" htmlClass="top-container"/>
+            <block class="Magento\Theme\Block\Html\Breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
+        </referenceContainer>
+        <referenceContainer name="columns.top">
+            <block class="Magento\Theme\Block\Html\Title" name="page.main.title" template="html/title.phtml"/>
+            <container name="page.messages" label="invisible" htmlTag="div" htmlClass="page messages">
+                <block class="Magento\Framework\View\Element\Messages" name="global_messages" as="global_messages"/>
+                <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
+            </container>
+        </referenceContainer>
+        <referenceContainer name="main">
+            <container name="content.top" label="Main Content Top"/>
+            <container name="content" label="Main Content Area"/>
+            <container name="content.aside" label="Main Content Aside"/>
+            <container name="content.bottom" label="Main Content Bottom"/>
+        </referenceContainer>
+        <referenceContainer name="page.bottom.container">
+            <container name="page.bottom" label="Before Page Footer" htmlTag="div" htmlClass="content"/>
+        </referenceContainer>
+        <referenceContainer name="footer-container">
+            <container name="footer" as="footer" label="Page Footer" htmlTag="div" htmlClass="footer content">
+                <block class="Magento\Store\Block\Switcher" name="store_switcher" as="store_switcher" template="switch/stores.phtml"/>
+                <block class="Magento\Framework\View\Element\Html\Links" name="footer_links">
+                    <arguments>
+                        <argument name="css_class" xsi:type="string">footer links</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Theme\Block\Html\Footer" name="copyright" template="html/copyright.phtml"/>
+                <block class="Magento\Framework\View\Element\Template" name="report.bugs" template="Magento_Theme::html/bugreport.phtml" />
+            </container>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\FormKey" name="formkey"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml
index 91b513079c52130cccd6ca095ab433d388d0721e..8b65b502cb8957ad9e53bd48633d4327cf12b19f 100644
--- a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml
+++ b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml
@@ -27,17 +27,19 @@
     <head>
         <meta name="x_ua_compatible" content="IE=edge,chrome=1"/>
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
-        <css src="mage/calendar.css" />
-        <script src="requirejs/require.js" />
+        <css src="mage/calendar.css"/>
+        <script src="requirejs/require.js"/>
         <!-- /**
         TODO: remove jQuery. jQuery could be loaded through RequireJS. But only in case ALL MODULES ARE AMD MODULES.
         Detail: http://requirejs.org/docs/jquery.html#noconflictmap
         */ -->
-        <script src="jquery/jquery.js" />
-        <script src="app-config.js" />
-        <script src="mage/jquery-no-conflict.js" />
+        <script src="jquery/jquery.js"/>
+        <script src="app-config.js"/>
+        <script src="mage/jquery-no-conflict.js"/>
     </head>
-    <referenceContainer name="after.body.start">
-        <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Theme::js/components.phtml" before="-" />
-    </referenceContainer>
+    <body>
+        <referenceContainer name="after.body.start">
+            <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Theme::js/components.phtml" before="-"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/frontend/layout/page_calendar.xml b/app/code/Magento/Theme/view/frontend/layout/page_calendar.xml
index 71fa3b8e1119face10d7fac5da143f6dd7490793..05e9081194f4be5a918fb8c4d7ce6aac668b8f9a 100644
--- a/app/code/Magento/Theme/view/frontend/layout/page_calendar.xml
+++ b/app/code/Magento/Theme/view/frontend/layout/page_calendar.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Html\Calendar" name="html_calendar" as="html_calendar" template="Magento_Theme::js/calendar.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Theme/view/frontend/layout/print.xml b/app/code/Magento/Theme/view/frontend/layout/print.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6a549e3c2396fad7789a666a412c7e1489b76ba7
--- /dev/null
+++ b/app/code/Magento/Theme/view/frontend/layout/print.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <attribute name="class" value="page-print"/>
+        <remove name="header.container" />
+        <remove name="catalog.topnav" />
+        <remove name="footer-container" />
+        <move element="logo" destination="main.content" before="-" />
+        <move element="copyright" destination="main.content" after="-" />
+        <referenceContainer name="before.body.end">
+            <block class="Magento\Framework\View\Element\Template" name="sales.order.print.js" template="Magento_Theme::html/print.phtml" />
+        </referenceContainer>
+    </body>
+</page>
diff --git a/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml b/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
index 85171d2ccfe9e8b2c41b7ed01f3b647f31328152..ee47a3ae122b51ad94994c754c4f26505dcfb86b 100644
--- a/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
+++ b/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
@@ -40,7 +40,7 @@
             <span class="toolbar-number">
             <?php if($this->getLastPageNum()>1): ?>
                 <?php echo __('Items %1 to %2 of %3 total', $this->getFirstNum(), $this->getLastNum(), $this->getTotalNum()) ?>
-            <?php elseif ($this->getLastPageNum() == 1): ?>
+            <?php elseif ($this->getTotalNum() == 1): ?>
                 <?php echo __('%1 Item', $this->getTotalNum()) ?>
             <?php else: ?>
                 <?php echo __('%1 Item(s)', $this->getTotalNum()) ?>
diff --git a/app/code/Magento/Theme/view/frontend/templates/html/print.phtml b/app/code/Magento/Theme/view/frontend/templates/html/print.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..48b92c20b984cd6734d1e62db665ae472b7f282c
--- /dev/null
+++ b/app/code/Magento/Theme/view/frontend/templates/html/print.phtml
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+?>
+<script type="text/javascript">
+    jQuery(function() {
+        window.print();
+    });
+</script>
diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json
index 3b75c0d8e27d151ae89d5a8cb6623505bd6ef8e8..d1b8ab8ea658d1cba9227536ce19deedf4990555 100644
--- a/app/code/Magento/Translation/composer.json
+++ b/app/code/Magento/Translation/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json
index 1e67498761367817b83fd41d040757310e1f4d24..45d8eceb7261fce2f358d2f3ae98783bcab1b106 100644
--- a/app/code/Magento/Ui/composer.json
+++ b/app/code/Magento/Ui/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ui/view/base/layout/default.xml b/app/code/Magento/Ui/view/base/layout/default.xml
index f8c0a0b4a0e711724e3b1c119685d0d82bb5a920..48ba0b2bda164bdcf49a034bb756e4387b0ff94f 100644
--- a/app/code/Magento/Ui/view/base/layout/default.xml
+++ b/app/code/Magento/Ui/view/base/layout/default.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="footer">
-        <block class="Magento\Ui\Context\DataProvider" name="ui.global.config" after="-">
-            <arguments>
-                <argument name="content_template" xsi:type="string">Magento_Ui::context/default.phtml</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="footer">
+            <block class="Magento\Ui\Context\DataProvider" name="ui.global.config" after="-">
+                <arguments>
+                    <argument name="content_template" xsi:type="string">Magento_Ui::context/default.phtml</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Ups/README.md b/app/code/Magento/Ups/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ddf125ea66b998f373a48cb02325df7ef3f20a2f
--- /dev/null
+++ b/app/code/Magento/Ups/README.md
@@ -0,0 +1 @@
+The Magento_Ups module implements integration with the United Parcel Service shipping carrier.
diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json
index bb6c52f7e06d8e1d2f65ba85fe155f4f38619810..04b84901b25a5e4b6fc6c96990459b2fceb3eb1f 100644
--- a/app/code/Magento/Ups/composer.json
+++ b/app/code/Magento/Ups/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ups/view/adminhtml/layout/adminhtml_system_config_edit.xml b/app/code/Magento/Ups/view/adminhtml/layout/adminhtml_system_config_edit.xml
index f905127876596c119a2e4c5b381d1fe6c23f071e..f355658ea7390fd75778253d4a5612a9df89ffe4 100644
--- a/app/code/Magento/Ups/view/adminhtml/layout/adminhtml_system_config_edit.xml
+++ b/app/code/Magento/Ups/view/adminhtml/layout/adminhtml_system_config_edit.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="js">
-        <block class="Magento\Ups\Block\Backend\System\CarrierConfig" template="system/shipping/carrier_config.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="js">
+            <block class="Magento\Ups\Block\Backend\System\CarrierConfig" template="system/shipping/carrier_config.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json
index 3946a9f2ae49ae203b8c3ee16075f526295b9bd4..4e321ab1b9b72e240447cf66433eab2dd1326361 100644
--- a/app/code/Magento/UrlRewrite/composer.json
+++ b/app/code/Magento/UrlRewrite/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-cms-url-rewrite": "0.1.0-alpha101",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-cms-url-rewrite": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/UrlRewrite/view/adminhtml/layout/adminhtml_url_rewrite_index.xml b/app/code/Magento/UrlRewrite/view/adminhtml/layout/adminhtml_url_rewrite_index.xml
index d0f2e2a7aaec09f9ce8effe4ef57e5385e692e7d..b10a6d56be035381909e353b8200bf355d5ee234 100644
--- a/app/code/Magento/UrlRewrite/view/adminhtml/layout/adminhtml_url_rewrite_index.xml
+++ b/app/code/Magento/UrlRewrite/view/adminhtml/layout/adminhtml_url_rewrite_index.xml
@@ -24,88 +24,90 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\UrlRewrite\Block\GridContainer" name="adminhtml.block.url_rewrite.grid.container">
-            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.url_rewrite.grid" as="grid">
-                <arguments>
-                    <argument name="id" xsi:type="string">urlrewriteGrid</argument>
-                    <argument name="dataSource" xsi:type="object">Magento\UrlRewrite\Model\Resource\UrlRewriteCollection</argument>
-                    <argument name="default_sort" xsi:type="string">url_rewrite_id</argument>
-                </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.url_rewrite.grid.columnSet">
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\UrlRewrite\Block\GridContainer" name="adminhtml.block.url_rewrite.grid.container">
+                <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.block.url_rewrite.grid" as="grid">
                     <arguments>
-                        <argument name="rowUrl" xsi:type="array">
-                            <item name="path" xsi:type="string">adminhtml/*/edit</item>
-                            <item name="extraParamsTemplate" xsi:type="array">
-                                <item name="id" xsi:type="string">getId</item>
-                            </item>
-                        </argument>
+                        <argument name="id" xsi:type="string">urlrewriteGrid</argument>
+                        <argument name="dataSource" xsi:type="object">Magento\UrlRewrite\Model\Resource\UrlRewriteCollection</argument>
+                        <argument name="default_sort" xsi:type="string">url_rewrite_id</argument>
                     </arguments>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="url_rewrite_id">
+                    <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="adminhtml.url_rewrite.grid.columnSet">
                         <arguments>
-                            <argument name="header" xsi:type="string" translate="true">ID</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                            <argument name="id" xsi:type="string">url_rewrite_id</argument>
-                            <argument name="index" xsi:type="string">url_rewrite_id</argument>
-                            <argument name="column_css_class" xsi:type="string">col-id</argument>
-                            <argument name="header_css_class" xsi:type="string">col-id</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Store View</argument>
-                            <argument name="type" xsi:type="string">store</argument>
-                            <argument name="id" xsi:type="string">store_id</argument>
-                            <argument name="index" xsi:type="string">store_id</argument>
-                            <argument name="store_view" xsi:type="string">true</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="request_path">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Request Path</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                            <argument name="id" xsi:type="string">request_path</argument>
-                            <argument name="index" xsi:type="string">request_path</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="target_path">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Target Path</argument>
-                            <argument name="type" xsi:type="string">text</argument>
-                            <argument name="id" xsi:type="string">target_path</argument>
-                            <argument name="index" xsi:type="string">target_path</argument>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="redirect_type">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Redirect Type</argument>
-                            <argument name="type" xsi:type="string">options</argument>
-                            <argument name="id" xsi:type="string">redirect_type</argument>
-                            <argument name="index" xsi:type="string">redirect_type</argument>
-                            <argument name="options" xsi:type="options" model="Magento\UrlRewrite\Model\OptionProvider"/>
-                        </arguments>
-                    </block>
-                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="actions">
-                        <arguments>
-                            <argument name="header" xsi:type="string" translate="true">Action</argument>
-                            <argument name="sortable" xsi:type="string">0</argument>
-                            <argument name="filter" xsi:type="string">0</argument>
-                            <argument name="type" xsi:type="string">action</argument>
-                            <argument name="id" xsi:type="string">actions</argument>
-                            <argument name="index" xsi:type="string">url_rewrite_id</argument>
-                            <argument name="actions" xsi:type="array">
-                                <item name="view_action" xsi:type="array">
-                                    <item name="caption" xsi:type="string" translate="true">Edit</item>
-                                    <item name="url" xsi:type="array">
-                                        <item name="base" xsi:type="string">adminhtml/*/edit</item>
-                                    </item>
-                                    <item name="field" xsi:type="string">id</item>
+                            <argument name="rowUrl" xsi:type="array">
+                                <item name="path" xsi:type="string">adminhtml/*/edit</item>
+                                <item name="extraParamsTemplate" xsi:type="array">
+                                    <item name="id" xsi:type="string">getId</item>
                                 </item>
                             </argument>
                         </arguments>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="url_rewrite_id">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">ID</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                                <argument name="id" xsi:type="string">url_rewrite_id</argument>
+                                <argument name="index" xsi:type="string">url_rewrite_id</argument>
+                                <argument name="column_css_class" xsi:type="string">col-id</argument>
+                                <argument name="header_css_class" xsi:type="string">col-id</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" as="store_id">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Store View</argument>
+                                <argument name="type" xsi:type="string">store</argument>
+                                <argument name="id" xsi:type="string">store_id</argument>
+                                <argument name="index" xsi:type="string">store_id</argument>
+                                <argument name="store_view" xsi:type="string">true</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="request_path">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Request Path</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                                <argument name="id" xsi:type="string">request_path</argument>
+                                <argument name="index" xsi:type="string">request_path</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="target_path">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Target Path</argument>
+                                <argument name="type" xsi:type="string">text</argument>
+                                <argument name="id" xsi:type="string">target_path</argument>
+                                <argument name="index" xsi:type="string">target_path</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="redirect_type">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Redirect Type</argument>
+                                <argument name="type" xsi:type="string">options</argument>
+                                <argument name="id" xsi:type="string">redirect_type</argument>
+                                <argument name="index" xsi:type="string">redirect_type</argument>
+                                <argument name="options" xsi:type="options" model="Magento\UrlRewrite\Model\OptionProvider"/>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Backend\Block\Widget\Grid\Column" as="actions">
+                            <arguments>
+                                <argument name="header" xsi:type="string" translate="true">Action</argument>
+                                <argument name="sortable" xsi:type="string">0</argument>
+                                <argument name="filter" xsi:type="string">0</argument>
+                                <argument name="type" xsi:type="string">action</argument>
+                                <argument name="id" xsi:type="string">actions</argument>
+                                <argument name="index" xsi:type="string">url_rewrite_id</argument>
+                                <argument name="actions" xsi:type="array">
+                                    <item name="view_action" xsi:type="array">
+                                        <item name="caption" xsi:type="string" translate="true">Edit</item>
+                                        <item name="url" xsi:type="array">
+                                            <item name="base" xsi:type="string">adminhtml/*/edit</item>
+                                        </item>
+                                        <item name="field" xsi:type="string">id</item>
+                                    </item>
+                                </argument>
+                            </arguments>
+                        </block>
                     </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json
index e56f90a71f9b3136ce18aa883aef7e8fb20e5a05..a5af18ba5523c0859eae7f0970ae44c04841b25a 100644
--- a/app/code/Magento/User/composer.json
+++ b/app/code/Magento/User/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-authorization": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-integration": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-integration": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_auth_login.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_auth_login.xml
index dae8d36b33bbc5f5b3399b2f6beea2bdca9e1f61..05f27019ce2bf674c983bfd045ee85808efa7547 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_auth_login.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_auth_login.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="form.buttons">
-        <block class="Magento\Backend\Block\Template" name="adminhtml_auth_login_forgotpassword" template="Magento_User::admin/forgotpassword_url.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="form.buttons">
+            <block class="Magento\Backend\Block\Template" name="adminhtml_auth_login_forgotpassword" template="Magento_User::admin/forgotpassword_url.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_edit.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_edit.xml
index 0e1a4cf3dc1301a034fd3079d7b025718b05ef3f..5738bc3b77b93cf5f5b625b8237d2abefe4821dc 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_edit.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_edit.xml
@@ -23,14 +23,16 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\User\Block\User\Edit\Tabs" name="adminhtml.user.edit.tabs"/>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\User\Block\User\Edit" name="adminhtml.user.edit"/>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" name="adminhtml.user.roles.grid.js" template="Magento_User::user/roles_grid_js.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\User\Block\User\Edit\Tabs" name="adminhtml.user.edit.tabs"/>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\User\Block\User\Edit" name="adminhtml.user.edit"/>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" name="adminhtml.user.roles.grid.js" template="Magento_User::user/roles_grid_js.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_grid_block.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_grid_block.xml
index c74257d7024fdbfdf5335d81d696e5ec505868b3..f1fd39f1945a84ad3be4aea4960747e3a6549f8e 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_grid_block.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_grid_block.xml
@@ -24,94 +24,95 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.user.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.user.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">permissionsUserGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\User\Model\Resource\User\Collection</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="default_sort" xsi:type="string">username</argument>
-                <argument name="default_dir" xsi:type="string">asc</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/roleGrid"/>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="permission.user.grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.user.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.user.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">permissionsUserGrid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="generatorClass" xsi:type="string">Magento\Backend\Model\Widget\Grid\Row\UrlGenerator</item>
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="user_id" xsi:type="string">getId</item>
-                        </item>
-                    </argument>
+                    <argument name="dataSource" xsi:type="object">Magento\User\Model\Resource\User\Collection</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="default_sort" xsi:type="string">username</argument>
+                    <argument name="default_dir" xsi:type="string">asc</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/roleGrid"/>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="user_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="permission.user.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="sortable" xsi:type="string">true</argument>
-                        <argument name="index" xsi:type="string">user_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="username">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">User Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">username</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">First Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">firstname</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Last Name</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">lastname</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="column_css_class" xsi:type="string">col-name</argument>
-                        <argument name="header_css_class" xsi:type="string">col-name</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Email</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="index" xsi:type="string">email</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Status</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="array">
-                            <item name="active" xsi:type="array">
-                                <item name="value" xsi:type="string">1</item>
-                                <item name="label" xsi:type="string" translate="true">Active</item>
-                            </item>
-                            <item name="inactive" xsi:type="array">
-                                <item name="value" xsi:type="string">0</item>
-                                <item name="label" xsi:type="string" translate="true">Inactive</item>
+                        <argument name="id" xsi:type="string">permissionsUserGrid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="generatorClass" xsi:type="string">Magento\Backend\Model\Widget\Grid\Row\UrlGenerator</item>
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="user_id" xsi:type="string">getId</item>
                             </item>
                         </argument>
-                        <argument name="index" xsi:type="string">is_active</argument>
-                        <argument name="column_css_class" xsi:type="string">col-status</argument>
-                        <argument name="header_css_class" xsi:type="string">col-status</argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="user_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="sortable" xsi:type="string">true</argument>
+                            <argument name="index" xsi:type="string">user_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="username">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">User Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">username</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="firstname">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">First Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">firstname</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="lastname">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Last Name</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">lastname</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="column_css_class" xsi:type="string">col-name</argument>
+                            <argument name="header_css_class" xsi:type="string">col-name</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="email">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Email</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="index" xsi:type="string">email</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="is_active">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Status</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="array">
+                                <item name="active" xsi:type="array">
+                                    <item name="value" xsi:type="string">1</item>
+                                    <item name="label" xsi:type="string" translate="true">Active</item>
+                                </item>
+                                <item name="inactive" xsi:type="array">
+                                    <item name="value" xsi:type="string">0</item>
+                                    <item name="label" xsi:type="string" translate="true">Inactive</item>
+                                </item>
+                            </argument>
+                            <argument name="index" xsi:type="string">is_active</argument>
+                            <argument name="column_css_class" xsi:type="string">col-status</argument>
+                            <argument name="header_css_class" xsi:type="string">col-status</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_index.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_index.xml
index e60f6cbf20dc961a2f5e6593959d05605b4eb585..abae60b48c1c22478c527a5c8a2645a90a15b03c 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_index.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_user_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\User\Block\User" name="adminhtml.user.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\User\Block\User" name="adminhtml.user.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_editrole.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_editrole.xml
index a81d29d2925e37623ddd358373dd97fa0897800d..cc01d4f9f3bf881df9efb495145c3f5da8b5d681 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_editrole.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_editrole.xml
@@ -23,19 +23,21 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="left">
-        <block class="Magento\User\Block\Role\Edit" name="adminhtml.user.editroles">
-            <block class="Magento\User\Block\Role\Tab\Edit" name="adminhtml.user.tab.rolesedit"/>
-            <action method="addTabAfter">
-                <argument name="name" xsi:type="string">account</argument>
-                <argument name="block" xsi:type="string">adminhtml.user.tab.rolesedit</argument>
-                <argument name="after" xsi:type="string">info</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="content">
-        <block class="Magento\Backend\Block\Template" name="adminhtml.user.roles.users.grid.js" template="Magento_User::role/users_grid_js.phtml"/>
-        <block class="Magento\User\Block\Buttons" name="adminhtml.user.role.buttons" template="role/info.phtml"/>
-    </referenceContainer>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="left">
+            <block class="Magento\User\Block\Role\Edit" name="adminhtml.user.editroles">
+                <block class="Magento\User\Block\Role\Tab\Edit" name="adminhtml.user.tab.rolesedit"/>
+                <action method="addTabAfter">
+                    <argument name="name" xsi:type="string">account</argument>
+                    <argument name="block" xsi:type="string">adminhtml.user.tab.rolesedit</argument>
+                    <argument name="after" xsi:type="string">info</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="content">
+            <block class="Magento\Backend\Block\Template" name="adminhtml.user.roles.users.grid.js" template="Magento_User::role/users_grid_js.phtml"/>
+            <block class="Magento\User\Block\Buttons" name="adminhtml.user.role.buttons" template="role/info.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_grid_block.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_grid_block.xml
index 19c272a3dfaa4d7b8747608896027c22a6179819..42e9c359866a95748e55204a45e94dd09c7d934c 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_grid_block.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_grid_block.xml
@@ -24,46 +24,48 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.user.role.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.role.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">roleGrid</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Authorization\Model\Resource\Role\Grid\Collection</argument>
-                <argument name="save_parameters_in_session" xsi:type="string">1</argument>
-                <argument name="default_sort" xsi:type="string">role_id</argument>
-                <argument name="default_dir" xsi:type="string">asc</argument>
-                <argument name="use_ajax" xsi:type="string">1</argument>
-                <argument name="grid_url" xsi:type="url" path="*/*/roleGrid">
-                    <param name="_current">1</param>
-                </argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="permission.role.grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.user.role.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.role.grid" as="grid">
                 <arguments>
                     <argument name="id" xsi:type="string">roleGrid</argument>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/editrole</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="rid" xsi:type="string">getId</item>
-                        </item>
+                    <argument name="dataSource" xsi:type="object">Magento\Authorization\Model\Resource\Role\Grid\Collection</argument>
+                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
+                    <argument name="default_sort" xsi:type="string">role_id</argument>
+                    <argument name="default_dir" xsi:type="string">asc</argument>
+                    <argument name="use_ajax" xsi:type="string">1</argument>
+                    <argument name="grid_url" xsi:type="url" path="*/*/roleGrid">
+                        <param name="_current">1</param>
                     </argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="role_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="permission.role.grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">ID</argument>
-                        <argument name="index" xsi:type="string">role_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="role_name">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Role</argument>
-                        <argument name="type" xsi:type="string">text</argument>
-                        <argument name="escape" xsi:type="string">1</argument>
-                        <argument name="index" xsi:type="string">role_name</argument>
+                        <argument name="id" xsi:type="string">roleGrid</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/editrole</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="rid" xsi:type="string">getId</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="role_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">ID</argument>
+                            <argument name="index" xsi:type="string">role_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="role_name">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Role</argument>
+                            <argument name="type" xsi:type="string">text</argument>
+                            <argument name="escape" xsi:type="string">1</argument>
+                            <argument name="index" xsi:type="string">role_name</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_index.xml b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_index.xml
index 48dd3f8d58975ac7293697c53337d61f5562fafe..726d44ce8ee035e824bad3600ea921676a79fa7b 100644
--- a/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_index.xml
+++ b/app/code/Magento/User/view/adminhtml/layout/adminhtml_user_role_index.xml
@@ -26,7 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="formkey"/>
     <update handle="adminhtml_user_role_grid_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\User\Block\Role" name="adminhtml.user.role.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\User\Block\Role" name="adminhtml.user.role.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Usps/README.md b/app/code/Magento/Usps/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..03d806c0357a5950da5431d941fb05bd725809bc
--- /dev/null
+++ b/app/code/Magento/Usps/README.md
@@ -0,0 +1 @@
+The Magento_Usps module provides integration with the United States Postal Service shipping carrier.
diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json
index 4720de63b18141c54618ee34f0867863ffc4343d..fc50c5cb50e009f76fbc2e0ca8100046bc9362af 100644
--- a/app/code/Magento/Usps/composer.json
+++ b/app/code/Magento/Usps/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-shipping": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-shipping": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Webapi/Controller/Rest/Request.php b/app/code/Magento/Webapi/Controller/Rest/Request.php
index ffa2c62e932b804dd8a462a38add3a24534f98c4..367bb8e83c5e8fa72ee0c10b4dff21a1ba6faa83 100644
--- a/app/code/Magento/Webapi/Controller/Rest/Request.php
+++ b/app/code/Magento/Webapi/Controller/Rest/Request.php
@@ -23,8 +23,12 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 namespace Magento\Webapi\Controller\Rest;
 
+use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Webapi\Model\Rest\Config as RestConfig;
+
 class Request extends \Magento\Webapi\Controller\Request
 {
     /**
@@ -177,14 +181,77 @@ class Request extends \Magento\Webapi\Controller\Request
     public function getRequestData()
     {
         $requestBody = array();
+        $params = $this->getParams();
 
         $httpMethod = $this->getHttpMethod();
-        if ($httpMethod == \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_POST ||
-            $httpMethod == \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_PUT
+        if ($httpMethod == RestConfig::HTTP_METHOD_POST ||
+            $httpMethod == RestConfig::HTTP_METHOD_PUT
         ) {
             $requestBody = $this->getBodyParams();
         }
 
-        return array_merge($requestBody, $this->getParams());
+        /*
+         * Valid only for updates using PUT when passing id value both in URL and body
+         */
+        if ($httpMethod == RestConfig::HTTP_METHOD_PUT && !empty($params)) {
+            $requestBody = $this->overrideRequestBodyIdWithPathParam($params);
+        }
+
+        return array_merge($requestBody, $params);
+    }
+
+    /**
+     * Override request body property value with matching url path parameter value
+     *
+     * This method assumes that webapi.xml url defines the substitution parameter as camelCase to the actual
+     * snake case key described as part of the api contract. example: /:parentId/nestedResource/:entityId.
+     * Here :entityId value will be used for overriding 'entity_id' property in the body.
+     * Since Webapi framework allows both camelCase and snakeCase, either of them will be substituted for now.
+     * If the request body is missing url path parameter as property, it will be added to the body.
+     * This method works only requests with scalar properties at top level or properties of single object embedded
+     * in the request body.
+     * Only the last path parameter value will be substituted from the url in case of multiple parameters.
+     *
+     * @param array $urlPathParams url path parameters as array
+     * @return array
+     */
+    protected function overrideRequestBodyIdWithPathParam($urlPathParams)
+    {
+        $requestBodyParams = $this->getBodyParams();
+        $pathParamValue = end($urlPathParams);
+        // Self apis should not be overridden
+        if ($pathParamValue === 'me') {
+            return $requestBodyParams;
+        }
+        $pathParamKey = key($urlPathParams);
+        // Check if the request data is a top level object of body
+        if (count($requestBodyParams) == 1 && is_array(end($requestBodyParams))) {
+            $requestDataKey = key($requestBodyParams);
+            $this->substituteParameters($requestBodyParams[$requestDataKey], $pathParamKey, $pathParamValue);
+        } else { // Else parameters passed as scalar values in body will be overridden
+            $this->substituteParameters($requestBodyParams, $pathParamKey, $pathParamValue);
+        }
+
+        return $requestBodyParams;
+    }
+
+    /**
+     * Check presence for both camelCase and snake_case keys in array and substitute if either is present
+     *
+     * @param array $requestData
+     * @param string $key
+     * @param string $value
+     * @return void
+     */
+    protected function substituteParameters(&$requestData, $key, $value)
+    {
+        $snakeCaseKey = SimpleDataObjectConverter::camelCaseToSnakeCase($key);
+        $camelCaseKey = SimpleDataObjectConverter::snakeCaseToCamelCase($key);
+
+        if (isset($requestData[$camelCaseKey])) {
+            $requestData[$camelCaseKey] = $value;
+        } else {
+            $requestData[$snakeCaseKey] = $value;
+        }
     }
 }
diff --git a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
index 6e59823cdbd69effd0d9d48ffea5b3812e3b7210..d687f7fa50d26ace9e558270dc4cd47b3cad4499 100644
--- a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
+++ b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Webapi\Controller\Soap\Request;
 
-use Magento\Framework\Api\ExtensibleDataInterface;
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
 use Magento\Framework\AuthorizationInterface;
 use Magento\Framework\Exception\AuthorizationException;
 use Magento\Webapi\Model\DataObjectProcessor;
diff --git a/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php b/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php
index e71a9a49f177c75fac118221be0efaeee06b58a7..ea2581b3629cb175ceb05c2641b5a22449eb83b9 100644
--- a/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php
+++ b/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php
@@ -409,10 +409,10 @@ class TypeProcessor
      */
     public function translateTypeName($class)
     {
-        if (preg_match('/\\\\?(.*)\\\\(.*)\\\\Service\\\\\2?(.*)/', $class, $matches)) {
+        if (preg_match('/\\\\?(.*)\\\\(.*)\\\\(Service|Api)\\\\\2?(.*)/', $class, $matches)) {
             $moduleNamespace = $matches[1] == 'Magento' ? '' : $matches[1];
             $moduleName = $matches[2];
-            $typeNameParts = explode('\\', $matches[3]);
+            $typeNameParts = explode('\\', $matches[4]);
 
             return ucfirst($moduleNamespace . $moduleName . implode('', $typeNameParts));
         }
diff --git a/app/code/Magento/Webapi/Model/DataObjectProcessor.php b/app/code/Magento/Webapi/Model/DataObjectProcessor.php
index 33c56024594d06fe10cd4d7900ac706947c43154..6189543202e30b8bc452f9f83fec14507bfde1cc 100644
--- a/app/code/Magento/Webapi/Model/DataObjectProcessor.php
+++ b/app/code/Magento/Webapi/Model/DataObjectProcessor.php
@@ -194,7 +194,7 @@ class DataObjectProcessor
     /**
      * Convert array of custom_attributes to use flat array structure
      *
-     * @param \Magento\Framework\Api\AttributeInterface[] $customAttributes
+     * @param \Magento\Framework\Api\Data\AttributeInterface[] $customAttributes
      * @return array
      */
     protected function convertCustomAttributes($customAttributes)
@@ -209,7 +209,7 @@ class DataObjectProcessor
     /**
      * Convert custom_attribute object to use flat array structure
      *
-     * @param \Magento\Framework\Api\AttributeInterface $customAttribute
+     * @param \Magento\Framework\Api\Data\AttributeInterface $customAttribute
      * @return array
      */
     protected function convertCustomAttribute($customAttribute)
diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json
index a3f63e1b46d7bfd81df399bd555c98a86d0b62c4..8cd768b4e0435f597a2cae7ded9ab951d46f1821 100644
--- a/app/code/Magento/Webapi/composer.json
+++ b/app/code/Magento/Webapi/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-authorization": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-integration": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-user": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-integration": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-user": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_activate_permissions_webapi.xml b/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_activate_permissions_webapi.xml
index f8c462b1ae74a074fee32cfedf1e8c80609f1ffe..ec7e00c846529be08146a80de177966fc1684ae2 100644
--- a/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_activate_permissions_webapi.xml
+++ b/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_activate_permissions_webapi.xml
@@ -26,11 +26,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="integration.activate.permissions.tabs">
-        <block class="Magento\Webapi\Block\Adminhtml\Integration\Activate\Permissions\Tab\Webapi" name="integration_activate_permissions_tabs_webapi" template="integration/activate/permissions/tab/webapi.phtml"/>
-        <action method="addTab">
-            <argument name="name" xsi:type="string">integration_activate_permissions_tabs_webapi</argument>
-            <argument name="block" xsi:type="string">integration_activate_permissions_tabs_webapi</argument>
-        </action>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="integration.activate.permissions.tabs">
+            <block class="Magento\Webapi\Block\Adminhtml\Integration\Activate\Permissions\Tab\Webapi" name="integration_activate_permissions_tabs_webapi" template="integration/activate/permissions/tab/webapi.phtml"/>
+            <action method="addTab">
+                <argument name="name" xsi:type="string">integration_activate_permissions_tabs_webapi</argument>
+                <argument name="block" xsi:type="string">integration_activate_permissions_tabs_webapi</argument>
+            </action>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_edit.xml b/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_edit.xml
index 2d875c271c7e263c521aabadbf5d181bdbc3aa7e..083480b764574da88326f95ce993b11c2928123b 100644
--- a/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_edit.xml
+++ b/app/code/Magento/Webapi/view/adminhtml/layout/adminhtml_integration_edit.xml
@@ -25,21 +25,23 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="editor"/>
-    <referenceBlock name="integration_edit_tabs">
-        <block class="Magento\Webapi\Block\Adminhtml\Integration\Edit\Tab\Webapi" name="integration_edit_tab_webapi" template="Magento_Webapi::resourcetree.phtml"/>
-        <action method="addTabAfter">
-            <argument name="name" xsi:type="string">api_section</argument>
-            <argument name="block" xsi:type="string">integration_edit_tab_webapi</argument>
-            <argument name="after" xsi:type="string">info_section</argument>
-        </action>
-        <block class="Magento\Webapi\Block\Adminhtml\Integration\Activate\Permissions\Tab\Webapi" name="integration_config_edit_tab_webapi" template="integration/activate/permissions/tab/webapi.phtml"/>
-        <action method="addTabAfter">
-            <argument name="name" xsi:type="string">api_config_section</argument>
-            <argument name="block" xsi:type="string">integration_config_edit_tab_webapi</argument>
-            <argument name="after" xsi:type="string">api_section</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" name="adminhtml.integration.webapi.tree.js" template="Magento_User::user/roles_grid_js.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="integration_edit_tabs">
+            <block class="Magento\Webapi\Block\Adminhtml\Integration\Edit\Tab\Webapi" name="integration_edit_tab_webapi" template="Magento_Webapi::resourcetree.phtml"/>
+            <action method="addTabAfter">
+                <argument name="name" xsi:type="string">api_section</argument>
+                <argument name="block" xsi:type="string">integration_edit_tab_webapi</argument>
+                <argument name="after" xsi:type="string">info_section</argument>
+            </action>
+            <block class="Magento\Webapi\Block\Adminhtml\Integration\Activate\Permissions\Tab\Webapi" name="integration_config_edit_tab_webapi" template="integration/activate/permissions/tab/webapi.phtml"/>
+            <action method="addTabAfter">
+                <argument name="name" xsi:type="string">api_config_section</argument>
+                <argument name="block" xsi:type="string">integration_config_edit_tab_webapi</argument>
+                <argument name="after" xsi:type="string">api_section</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" name="adminhtml.integration.webapi.tree.js" template="Magento_User::user/roles_grid_js.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json
index 77e4d7ee44189f673d62bffcc603f15d32c517a9..8c696bf9f40307f30e398f48f3ee1d2859e1662f 100644
--- a/app/code/Magento/Weee/composer.json
+++ b/app/code/Magento/Weee/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-tax": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-directory": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-eav": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-bundle": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-directory": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-eav": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-bundle": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_creditmemo_item_price.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_creditmemo_item_price.xml
index be5df570d77a87d91dd789ac9aece194461e4e3d..e6ce157d029257707b409ac9893223a7730120e4 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_creditmemo_item_price.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_creditmemo_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_items">
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_items">
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_invoice_item_price.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_invoice_item_price.xml
index c50b2936c426d8403dc400d91e6251de096035ee..cbec764b218dc777c5e9f5e23c17d6d2b78f6786 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_invoice_item_price.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_invoice_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_items">
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_items">
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_create_item_price.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_create_item_price.xml
index aed850690ac4434aafe2369f15521e83515e6bd6..25641b8a4769f1b8f523b179cad139e8c12ec584 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_create_item_price.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_create_item_price.xml
@@ -24,19 +24,21 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_unit_price" template="order/create/items/price/unit.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total" template="order/create/items/price/row.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total_with_discount" template="order/create/items/price/total.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
+    <body>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_unit_price" template="order/create/items/price/unit.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total" template="order/create/items/price/row.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total_with_discount" template="order/create/items/price/total.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_new.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_new.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_new.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_new.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_updateqty.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_view.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_view.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_view.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_creditmemo_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_new.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_new.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_new.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_new.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_updateqty.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_updateqty.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_updateqty.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_updateqty.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_view.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_view.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_view.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_invoice_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_item_price.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_item_price.xml
index 0b2188e8d18f7cdcad2908d30647dacdf23a13ab..8aecf7a9cfadd9fbe4eb422cfeefb3bf06267af5 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_item_price.xml
@@ -24,9 +24,11 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_items">
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
-        <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_items">
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_price" template="items/price/unit.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_subtotal" template="items/price/row.phtml" group="column"/>
+            <block class="Magento\Weee\Block\Adminhtml\Items\Price\Renderer" name="column_total" template="items/price/total.phtml" group="column"/>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_view.xml b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_view.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/adminhtml/layout/sales_order_view.xml
+++ b/app/code/Magento/Weee/view/adminhtml/layout/sales_order_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/base/layout/catalog_product_prices.xml b/app/code/Magento/Weee/view/base/layout/catalog_product_prices.xml
index f84aa036b7f5160fdf152707d0a7d9bf4b985e9e..8d044f317528c8b7dea88a449b2c05b14f082b2e 100644
--- a/app/code/Magento/Weee/view/base/layout/catalog_product_prices.xml
+++ b/app/code/Magento/Weee/view/base/layout/catalog_product_prices.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <referenceBlock name="render.product.prices">
         <arguments>
             <argument name="default" xsi:type="array">
@@ -38,4 +38,4 @@
             </argument>
         </arguments>
     </referenceBlock>
-</page>
+</layout>
diff --git a/app/code/Magento/Weee/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml b/app/code/Magento/Weee/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
index 6682489a824cf5938101f1094e6fb4a6a7ee3e11..447d998a946ed1dcaf8ce5cb4c1af0afdb0325ab 100644
--- a/app/code/Magento/Weee/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/checkout_cart_sidebar_item_price_renderers.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="minicart">
-        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="checkout/cart/item/price/sidebar.phtml">
-            <arguments>
-                <argument name="zone" xsi:type="string">cart</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="minicart">
+            <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.cart.item.price.sidebar" template="checkout/cart/item/price/sidebar.phtml">
+                <arguments>
+                    <argument name="zone" xsi:type="string">cart</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/checkout_item_price_renderers.xml b/app/code/Magento/Weee/view/frontend/layout/checkout_item_price_renderers.xml
index 89a1657915220d731ab431ef0f8a0eeb49e5e4b8..0c5be0fbba31fd10f817c351e84f9312cd29d475 100644
--- a/app/code/Magento/Weee/view/frontend/layout/checkout_item_price_renderers.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/checkout_item_price_renderers.xml
@@ -24,35 +24,36 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.excl" template="checkout/onepage/review/item/price/unit_excl_tax.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.incl" template="checkout/onepage/review/item/price/unit_incl_tax.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.excl" template="checkout/onepage/review/item/price/row_excl_tax.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.incl" template="checkout/onepage/review/item/price/row_incl_tax.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="item/price/unit.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.item.price.row" template="item/price/row.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">cart</argument>
-        </arguments>
-    </block>
+    <body>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.excl" template="checkout/onepage/review/item/price/unit_excl_tax.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.unit.incl" template="checkout/onepage/review/item/price/unit_incl_tax.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.excl" template="checkout/onepage/review/item/price/row_excl_tax.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.onepage.review.item.price.rowtotal.incl" template="checkout/onepage/review/item/price/row_incl_tax.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.item.price.unit" template="item/price/unit.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="checkout.item.price.row" template="item/price/row.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">cart</argument>
+            </arguments>
+        </block>
+    </body>
 </page>
-
diff --git a/app/code/Magento/Weee/view/frontend/layout/default.xml b/app/code/Magento/Weee/view/frontend/layout/default.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Weee/view/frontend/layout/default.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/default.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_email_item_price.xml b/app/code/Magento/Weee/view/frontend/layout/sales_email_item_price.xml
index 2e545b4e555d171f4cc49df306d666d40f34e8cf..f5ba6bb9b888e85e00b8db621f04d8b09d2775ba 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_email_item_price.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_email_item_price.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="items">
-        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_price" template="email/items/price/row.phtml">
-            <arguments>
-                <argument name="zone" xsi:type="string">email</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="items">
+            <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_price" template="email/items/price/row.phtml">
+                <arguments>
+                    <argument name="zone" xsi:type="string">email</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_creditmemo_items.xml b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_creditmemo_items.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_creditmemo_items.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_creditmemo_items.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_invoice_items.xml b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_invoice_items.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_invoice_items.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_invoice_items.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_items.xml b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_items.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_email_order_items.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_email_order_items.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_creditmemo.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_creditmemo.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_creditmemo.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_creditmemo.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_invoice.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_invoice.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_invoice.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_invoice.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_print.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_print.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_print.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_print.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_printcreditmemo.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_printcreditmemo.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_printcreditmemo.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_printcreditmemo.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_printinvoice.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_printinvoice.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_printinvoice.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_printinvoice.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_guest_view.xml b/app/code/Magento/Weee/view/frontend/layout/sales_guest_view.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_guest_view.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_guest_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_creditmemo.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_creditmemo.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_creditmemo.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_creditmemo.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_invoice.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_invoice.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_invoice.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_invoice.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_item_price.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_item_price.xml
index 28e0e3194bfff199551046b614e321068c9d24a7..1e27c351be7d860c7492bbb6d6c2f7f713f92798 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_item_price.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_item_price.xml
@@ -24,15 +24,17 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_unit_price" template="item/price/unit.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">sales</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total" template="item/price/row.phtml">
-        <arguments>
-            <argument name="zone" xsi:type="string">sales</argument>
-        </arguments>
-    </block>
-    <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total_after_discount" template="item/price/total_after_discount.phtml"/>
+    <body>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_unit_price" template="item/price/unit.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">sales</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total" template="item/price/row.phtml">
+            <arguments>
+                <argument name="zone" xsi:type="string">sales</argument>
+            </arguments>
+        </block>
+        <block class="Magento\Weee\Block\Item\Price\Renderer" name="item_row_total_after_discount" template="item/price/total_after_discount.phtml"/>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_print.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_print.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_print.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_print.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_printcreditmemo.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_printcreditmemo.xml
index b3c99277f57d58c2bd4ca4e9684d4988ca8e3af8..a1bd6b76c1fe4aeab97ed85a025d8f741aa33741 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_printcreditmemo.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_printcreditmemo.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="creditmemo_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="creditmemo_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_cm_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_printinvoice.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_printinvoice.xml
index 97acf7958ccc9895eba4ada26a4c41eee4e051a8..9092d5c2e19b597fd774ce8422dd39721ad39226 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_printinvoice.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_printinvoice.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="invoice_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="invoice_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_inv_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Weee/view/frontend/layout/sales_order_view.xml b/app/code/Magento/Weee/view/frontend/layout/sales_order_view.xml
index d49416bc9a00395916147dc7e7086f1fff641833..63de4dedeb08b0c799a4db6e72c04daca6e9044d 100644
--- a/app/code/Magento/Weee/view/frontend/layout/sales_order_view.xml
+++ b/app/code/Magento/Weee/view/frontend/layout/sales_order_view.xml
@@ -24,11 +24,13 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="order_totals">
-        <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
-            <action method="setBeforeCondition">
-                <argument name="condition" xsi:type="string">tax</argument>
-            </action>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="order_totals">
+            <block class="Magento\Weee\Block\Sales\Order\Totals" name="weee_ord_totals">
+                <action method="setBeforeCondition">
+                    <argument name="condition" xsi:type="string">tax</argument>
+                </action>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json
index ee31ea45b453fd5dd090d64b28bfb5a6114991d2..fba71ba0cca40be1db3e746a15fb54b39ab43f96 100644
--- a/app/code/Magento/Widget/composer.json
+++ b/app/code/Magento/Widget/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-cms": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_block.xml b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_block.xml
index 572b4243ffaa6047fe2e42bc2c21541ed3e1fb9f..5500da7140fb2f4276e0a5aff5c7bdf93eeee487 100644
--- a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_block.xml
+++ b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_block.xml
@@ -24,62 +24,64 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="adminhtml.widget.instance.grid.container">
-        <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.widget.instance.grid" as="grid">
-            <arguments>
-                <argument name="id" xsi:type="string">widgetInstanceGrid</argument>
-                <argument name="default_sort" xsi:type="string">instance_id</argument>
-                <argument name="default_dir" xsi:type="string">ASC</argument>
-                <argument name="dataSource" xsi:type="object">Magento\Widget\Model\Resource\Widget\Instance\Collection</argument>
-            </arguments>
-            <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.widget.instance.grid.columnSet" as="grid.columnSet">
+    <body>
+        <referenceBlock name="adminhtml.widget.instance.grid.container">
+            <block class="Magento\Backend\Block\Widget\Grid" name="adminhtml.widget.instance.grid" as="grid">
                 <arguments>
-                    <argument name="rowUrl" xsi:type="array">
-                        <item name="path" xsi:type="string">*/*/edit</item>
-                        <item name="extraParamsTemplate" xsi:type="array">
-                            <item name="instance_id" xsi:type="string">getId</item>
-                            <item name="code" xsi:type="string">getCode</item>
-                        </item>
-                    </argument>
+                    <argument name="id" xsi:type="string">widgetInstanceGrid</argument>
+                    <argument name="default_sort" xsi:type="string">instance_id</argument>
+                    <argument name="default_dir" xsi:type="string">ASC</argument>
+                    <argument name="dataSource" xsi:type="object">Magento\Widget\Model\Resource\Widget\Instance\Collection</argument>
                 </arguments>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="instance_id">
+                <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.widget.instance.grid.columnSet" as="grid.columnSet">
                     <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Widget ID</argument>
-                        <argument name="index" xsi:type="string">instance_id</argument>
-                        <argument name="column_css_class" xsi:type="string">col-id</argument>
-                        <argument name="header_css_class" xsi:type="string">col-id</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="title">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Widget Instance</argument>
-                        <argument name="index" xsi:type="string">title</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Type</argument>
-                        <argument name="index" xsi:type="string">instance_type</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Widget\Model\Resource\Widget\Instance\Options\Types"/>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_id">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Design Theme</argument>
-                        <argument name="index" xsi:type="string">theme_id</argument>
-                        <argument name="type" xsi:type="string">options</argument>
-                        <argument name="options" xsi:type="options" model="Magento\Widget\Model\Resource\Widget\Instance\Options\ThemeId"/>
-                        <argument name="with_empty" xsi:type="string">1</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Backend\Block\Widget\Grid\Column" as="sort_order">
-                    <arguments>
-                        <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
-                        <argument name="index" xsi:type="string">sort_order</argument>
+                        <argument name="rowUrl" xsi:type="array">
+                            <item name="path" xsi:type="string">*/*/edit</item>
+                            <item name="extraParamsTemplate" xsi:type="array">
+                                <item name="instance_id" xsi:type="string">getId</item>
+                                <item name="code" xsi:type="string">getCode</item>
+                            </item>
+                        </argument>
                     </arguments>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="instance_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Widget ID</argument>
+                            <argument name="index" xsi:type="string">instance_id</argument>
+                            <argument name="column_css_class" xsi:type="string">col-id</argument>
+                            <argument name="header_css_class" xsi:type="string">col-id</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="title">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Widget Instance</argument>
+                            <argument name="index" xsi:type="string">title</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="type">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Type</argument>
+                            <argument name="index" xsi:type="string">instance_type</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Widget\Model\Resource\Widget\Instance\Options\Types"/>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="theme_id">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Design Theme</argument>
+                            <argument name="index" xsi:type="string">theme_id</argument>
+                            <argument name="type" xsi:type="string">options</argument>
+                            <argument name="options" xsi:type="options" model="Magento\Widget\Model\Resource\Widget\Instance\Options\ThemeId"/>
+                            <argument name="with_empty" xsi:type="string">1</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Backend\Block\Widget\Grid\Column" as="sort_order">
+                        <arguments>
+                            <argument name="header" xsi:type="string" translate="true">Sort Order</argument>
+                            <argument name="index" xsi:type="string">sort_order</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceBlock>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_edit.xml b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_edit.xml
index d48208fa3ce9dd28b242041c1596cce176e3c80d..34b566a51206cae90f76c9ce1a0710350a14f27d 100644
--- a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_edit.xml
+++ b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_edit.xml
@@ -23,35 +23,37 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="admin-2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <link src="prototype/window.js"/>
         <css src="prototype/windows/themes/default.css"/>
         <css src="Magento_Core::prototype/magento.css"/>
     </head>
-    <referenceContainer name="content">
-        <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit" name="widget_instance_edit"/>
-    </referenceContainer>
-    <referenceContainer name="left">
-        <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tabs" name="widget_instance_edit_tabs">
-            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Settings" name="widget_instance_edit_tab_settings"/>
-            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Main" name="widget_instance_edit_tab_main"/>
-            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Properties" name="widget_instance_edit_tab_properties"/>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">settings_section</argument>
-                <argument name="block" xsi:type="string">widget_instance_edit_tab_settings</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">main_section</argument>
-                <argument name="block" xsi:type="string">widget_instance_edit_tab_main</argument>
-            </action>
-            <action method="addTab">
-                <argument name="name" xsi:type="string">properties_section</argument>
-                <argument name="block" xsi:type="string">widget_instance_edit_tab_properties</argument>
-            </action>
-        </block>
-    </referenceContainer>
-    <referenceContainer name="js">
-        <block class="Magento\Backend\Block\Template" template="Magento_Widget::instance/js.phtml" name="widget_instance_js"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit" name="widget_instance_edit"/>
+        </referenceContainer>
+        <referenceContainer name="left">
+            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tabs" name="widget_instance_edit_tabs">
+                <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Settings" name="widget_instance_edit_tab_settings"/>
+                <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Main" name="widget_instance_edit_tab_main"/>
+                <block class="Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Tab\Properties" name="widget_instance_edit_tab_properties"/>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">settings_section</argument>
+                    <argument name="block" xsi:type="string">widget_instance_edit_tab_settings</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">main_section</argument>
+                    <argument name="block" xsi:type="string">widget_instance_edit_tab_main</argument>
+                </action>
+                <action method="addTab">
+                    <argument name="name" xsi:type="string">properties_section</argument>
+                    <argument name="block" xsi:type="string">widget_instance_edit_tab_properties</argument>
+                </action>
+            </block>
+        </referenceContainer>
+        <referenceContainer name="js">
+            <block class="Magento\Backend\Block\Template" template="Magento_Widget::instance/js.phtml" name="widget_instance_js"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_index.xml b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_index.xml
index 5de2bdecf05e50ff1eab44f238071649bfff96ea..49180b76f7a4004ac87334333917e9b0d1d70668 100644
--- a/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_index.xml
+++ b/app/code/Magento/Widget/view/adminhtml/layout/adminhtml_widget_instance_index.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="adminhtml_widget_instance_block"/>
-    <referenceContainer name="content">
-        <block class="Magento\Widget\Block\Adminhtml\Widget\Instance" name="adminhtml.widget.instance.grid.container"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Widget\Block\Adminhtml\Widget\Instance" name="adminhtml.widget.instance.grid.container"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Widget/view/frontend/layout/default.xml b/app/code/Magento/Widget/view/frontend/layout/default.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Widget/view/frontend/layout/default.xml
+++ b/app/code/Magento/Widget/view/frontend/layout/default.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Widget/view/frontend/layout/print.xml b/app/code/Magento/Widget/view/frontend/layout/print.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Widget/view/frontend/layout/print.xml
+++ b/app/code/Magento/Widget/view/frontend/layout/print.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Wishlist/README.md b/app/code/Magento/Wishlist/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1caed125814e7d4d5d5dcc2e77a7b3b0986cb95b
--- /dev/null
+++ b/app/code/Magento/Wishlist/README.md
@@ -0,0 +1,2 @@
+The Magento_Wishlist implements the Wishlist functionality.
+This allows customers to create a list of products that they can add to their shopping cart to be purchased at a later date, or share with friends.
diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json
index 1e26e1d47936d74df9e725c5305ff0111ca8355b..a244ab1d6fc7d587950dea7b9bd88bd799447151 100644
--- a/app/code/Magento/Wishlist/composer.json
+++ b/app/code/Magento/Wishlist/composer.json
@@ -3,25 +3,25 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha101",
-        "magento/module-customer": "0.1.0-alpha101",
-        "magento/module-catalog": "0.1.0-alpha101",
-        "magento/module-core": "0.1.0-alpha101",
-        "magento/module-checkout": "0.1.0-alpha101",
-        "magento/module-theme": "0.1.0-alpha101",
-        "magento/module-catalog-inventory": "0.1.0-alpha101",
-        "magento/module-rss": "0.1.0-alpha101",
-        "magento/module-backend": "0.1.0-alpha101",
-        "magento/module-bundle": "0.1.0-alpha101",
-        "magento/module-sales": "0.1.0-alpha101",
-        "magento/module-grouped-product": "0.1.0-alpha101",
-        "magento/module-configurable-product": "0.1.0-alpha101",
-        "magento/module-downloadable": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/module-store": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha102",
+        "magento/module-theme": "0.1.0-alpha102",
+        "magento/module-catalog-inventory": "0.1.0-alpha102",
+        "magento/module-rss": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha102",
+        "magento/module-bundle": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha102",
+        "magento/module-grouped-product": "0.1.0-alpha102",
+        "magento/module-configurable-product": "0.1.0-alpha102",
+        "magento/module-downloadable": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/catalog_category_view.xml b/app/code/Magento/Wishlist/view/frontend/layout/catalog_category_view.xml
index 7c44d55928c4c4f1a3fffb0cf64f6d92e0a7c18e..de8723cc5f928a64749e10696bc198767468243e 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/catalog_category_view.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/catalog_category_view.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="addToWishlistLink" xsi:type="string">.action.towishlist</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="addToWishlistLink" xsi:type="string">.action.towishlist</item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Wishlist/view/frontend/layout/catalog_product_view.xml
index 7c44d55928c4c4f1a3fffb0cf64f6d92e0a7c18e..de8723cc5f928a64749e10696bc198767468243e 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/catalog_product_view.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
-            <arguments>
-                <argument name="triggers" xsi:type="array">
-                    <item name="addToWishlistLink" xsi:type="string">.action.towishlist</item>
-                </argument>
-            </arguments>
-        </block>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
+                <arguments>
+                    <argument name="triggers" xsi:type="array">
+                        <item name="addToWishlistLink" xsi:type="string">.action.towishlist</item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/customer_account.xml b/app/code/Magento/Wishlist/view/frontend/layout/customer_account.xml
index 027bed8e32ab921d25b59ee72e6f63b05fdb3f1b..ba26f1e04f5e2e15e30e1470f9b0332b4038bf96 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/customer_account.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/customer_account.xml
@@ -24,12 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="customer_account_navigation">
-        <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="wishlist/general/active" name="customer-account-navigation-wish-list-link">
-            <arguments>
-                <argument name="path" xsi:type="string">wishlist</argument>
-                <argument name="label" xsi:type="string">My Wish List</argument>
-            </arguments>
-        </block>
-    </referenceBlock>
+    <body>
+        <referenceBlock name="customer_account_navigation">
+            <block class="Magento\Framework\View\Element\Html\Link\Current" ifconfig="wishlist/general/active" name="customer-account-navigation-wish-list-link">
+                <arguments>
+                    <argument name="path" xsi:type="string">wishlist</argument>
+                    <argument name="label" xsi:type="string">My Wish List</argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/default.xml b/app/code/Magento/Wishlist/view/frontend/layout/default.xml
index 7fe65f769c30d568a72a27216db0ca90ece6fa60..6f283ffc62af4669739f6721f468a54e2c454a97 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/default.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/default.xml
@@ -24,13 +24,15 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_page_head_components" template="Magento_Wishlist::js/components.phtml"/>
-    </referenceBlock>
-    <referenceBlock name="top.links">
-        <block class="Magento\Wishlist\Block\Link" name="wish-list-link" after="my-account-link"/>
-    </referenceBlock>
-    <referenceContainer name="sidebar.additional">
-        <block class="Magento\Wishlist\Block\Customer\Sidebar" name="wishlist_sidebar" as="wishlist" template="Magento_Wishlist::sidebar.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_page_head_components" template="Magento_Wishlist::js/components.phtml"/>
+        </referenceBlock>
+        <referenceBlock name="top.links">
+            <block class="Magento\Wishlist\Block\Link" name="wish-list-link" after="my-account-link"/>
+        </referenceBlock>
+        <referenceContainer name="sidebar.additional">
+            <block class="Magento\Wishlist\Block\Customer\Sidebar" name="wishlist_sidebar" as="wishlist" template="Magento_Wishlist::sidebar.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure.xml
index fe9b968ad26764e11aed603e94891fb3f83a717a..bf68244e7840a2fb5b388999bb0c1c5db4be2cb2 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="catalog_product_view"/>
-    <referenceContainer name="product.info.social">
-        <block class="Magento\Wishlist\Block\Item\Configure" name="product.info.addto" as="addto" template="Magento_Wishlist::item/configure/addto.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="product.info.social">
+            <block class="Magento\Wishlist\Block\Item\Configure" name="product.info.addto" as="addto" template="Magento_Wishlist::item/configure/addto.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
index a76ecbda8082ee2bdd346dd0943e1ef863f258bb..f275f2e67b097ecb4399d72dc49f864f3ddf2354 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
@@ -26,54 +26,54 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-bundle"/>
-    </body>
-    <referenceBlock name="product.info">
-        <block class="Magento\Catalog\Block\Product\View" name="bundle.summary" as="form_top" template="Magento_Bundle::catalog/product/view/summary.phtml">
-            <block class="Magento\Catalog\Pricing\Render" name="product.price.render.bundle.customization">
-                <arguments>
-                    <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                    <argument name="price_type_code" xsi:type="string">configured_price</argument>
-                    <argument name="zone" xsi:type="string">item_view</argument>
-                </arguments>
+        <referenceBlock name="product.info">
+            <block class="Magento\Catalog\Block\Product\View" name="bundle.summary" as="form_top" template="Magento_Bundle::catalog/product/view/summary.phtml">
+                <block class="Magento\Catalog\Pricing\Render" name="product.price.render.bundle.customization">
+                    <arguments>
+                        <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                        <argument name="price_type_code" xsi:type="string">configured_price</argument>
+                        <argument name="zone" xsi:type="string">item_view</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.bundle" as="addtocart" template="product/view/addtocart.phtml"/>
+                <block class="Magento\Wishlist\Block\Item\Configure" name="product.info.addto.bundle" as="addto" template="item/configure/addto.phtml"/>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\Catalog\Block\Product\View" name="bundle.product.view.options.notice" template="Magento_Bundle::catalog/product/view/options/notice.phtml"/>
+            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle.options" as="type_bundle_options" template="catalog/product/view/type/bundle/options.phtml" before="-">
+                <container name="product.info.bundle.options.top" as="product_info_bundle_options_top">
+                    <block class="Magento\Catalog\Block\Product\View" name="bundle.back.button" as="backButton" before="-" template="Magento_Bundle::catalog/product/view/backbutton.phtml"/>
+                </container>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Select" name="product.info.bundle.options.select" as="select"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Multi" name="product.info.bundle.options.multi" as="multi"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Radio" name="product.info.bundle.options.radio" as="radio"/>
+                <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
             </block>
-            <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart.bundle" as="addtocart" template="product/view/addtocart.phtml"/>
-            <block class="Magento\Wishlist\Block\Item\Configure" name="product.info.addto.bundle" as="addto" template="item/configure/addto.phtml"/>
-        </block>
-    </referenceBlock>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\Catalog\Block\Product\View" name="bundle.product.view.options.notice" template="Magento_Bundle::catalog/product/view/options/notice.phtml"/>
-        <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle.options" as="type_bundle_options" template="catalog/product/view/type/bundle/options.phtml" before="-">
-            <container name="product.info.bundle.options.top" as="product_info_bundle_options_top">
-                <block class="Magento\Catalog\Block\Product\View" name="bundle.back.button" as="backButton" before="-" template="Magento_Bundle::catalog/product/view/backbutton.phtml"/>
-            </container>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Select" name="product.info.bundle.options.select" as="select"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Multi" name="product.info.bundle.options.multi" as="multi"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Radio" name="product.info.bundle.options.radio" as="radio"/>
-            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Option\Checkbox" name="product.info.bundle.options.checkbox" as="checkbox"/>
-        </block>
-    </referenceBlock>
-    <move element="product.price.tier" destination="product.info.options.wrapper.bottom" before="-" />
-    <referenceBlock name="product.info.options.wrapper.bottom">
-        <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.qtyincrements" before="-" template="qtyincrements.phtml"/>
-        <action method="unsetChild">
-            <argument name="block" xsi:type="string">product.info.addtocart</argument>
-        </action>
-        <action method="setHideRequiredNotice">
-            <argument name="flag" xsi:type="string">1</argument>
-        </action>
-        <action method="unsetChild">
-            <argument name="block" xsi:type="string">product.info.addto</argument>
-        </action>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+        </referenceBlock>
+        <move element="product.price.tier" destination="product.info.options.wrapper.bottom" before="-" />
+        <referenceBlock name="product.info.options.wrapper.bottom">
+            <block class="Magento\CatalogInventory\Block\Qtyincrements" name="product.info.qtyincrements" before="-" template="qtyincrements.phtml"/>
+            <action method="unsetChild">
+                <argument name="block" xsi:type="string">product.info.addtocart</argument>
+            </action>
+            <action method="setHideRequiredNotice">
+                <argument name="flag" xsi:type="string">1</argument>
+            </action>
+            <action method="unsetChild">
+                <argument name="block" xsi:type="string">product.info.addto</argument>
+            </action>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
+            <container name="product.info.bundle.extra" after="product.info.bundle" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+        <referenceContainer name="product.info.main">
+            <block class="Magento\Catalog\Block\Product\View" name="customize.button" as="customize_button" template="Magento_Bundle::catalog/product/view/customize.phtml" after="product.info.price" />
+        </referenceContainer>
         <move element="product.info" destination="bundle.options.container" before="-"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
-        <container name="product.info.bundle.extra" after="product.info.bundle" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
-    <referenceContainer name="product.info.main">
-        <block class="Magento\Catalog\Block\Product\View" name="customize.button" as="customize_button" template="Magento_Bundle::catalog/product/view/customize.phtml" after="product.info.price" />
-    </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_configurable.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_configurable.xml
index 5a3eee9f9c741c8b2cbffeb4c67f7e096cb30181..34a5af88786e98a58c45cf3c4283382253a9c011 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_configurable.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_configurable.xml
@@ -26,16 +26,16 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-configurable"/>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_product_view_head_components" template="Magento_Wishlist::js/components.phtml"/>
+            <block class="Magento\Framework\View\Element\Js\Components" name="configurableproduct_product_view_head_components" template="Magento_ConfigurableProduct::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.configurable" as="product_type_data" template="Magento_Catalog::product/view/type/default.phtml"/>
+            <container name="product.info.configurable.extra" after="product.info.configurable" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="product/view/type/options/configurable.phtml"/>
+        </referenceBlock>
     </body>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_product_view_head_components" template="Magento_Wishlist::js/components.phtml"/>
-        <block class="Magento\Framework\View\Element\Js\Components" name="configurableproduct_product_view_head_components" template="Magento_ConfigurableProduct::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.configurable" as="product_type_data" template="Magento_Catalog::product/view/type/default.phtml"/>
-        <container name="product.info.configurable.extra" after="product.info.configurable" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="product/view/type/options/configurable.phtml"/>
-    </referenceBlock>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_downloadable.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
index 1975908eee6239c31fa8703e07206a7411887fe2..6bacd08897f996c6b6d1518ad8bc4cc94d76be4f 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_downloadable.xml
@@ -24,42 +24,42 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_product_view_head_components" template="Magento_Wishlist::js/components.phtml"/>
-        <block class="Magento\Framework\View\Element\Js\Components" name="downloadable_page_head_components" template="Magento_Downloadable::js/components.phtml"/>
-    </referenceBlock>
     <body>
         <attribute name="class" value="page-product-downloadable"/>
-    </body>
-    <referenceContainer name="product.info.main">
-        <block class="Magento\Downloadable\Block\Catalog\Product\Samples" name="product.info.downloadable.samples" as="samples" template="catalog/product/samples.phtml" after="product.price.tier" />
-    </referenceContainer>
-    <referenceContainer name="product.info.type">
-        <block class="Magento\Downloadable\Block\Catalog\Product\View\Type" name="product.info.downloadable" as="product_type_data" template="catalog/product/type.phtml">
-            <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" name="product.info.downloadable.extra" as="product_type_data_extra" template="stockqty/default.phtml"/>
-        </block>
-    </referenceContainer>
-    <referenceBlock name="product.info.options.wrapper">
-        <block class="Magento\Downloadable\Block\Catalog\Product\Links" name="product.info.downloadable.options" as="type_downloadable_options" before="-" template="catalog/product/links.phtml">
-            <block class="Magento\Catalog\Pricing\Render" name="product.price.link" after="product.info.downloadable.options">
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_product_view_head_components" template="Magento_Wishlist::js/components.phtml"/>
+            <block class="Magento\Framework\View\Element\Js\Components" name="downloadable_page_head_components" template="Magento_Downloadable::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="product.info.main">
+            <block class="Magento\Downloadable\Block\Catalog\Product\Samples" name="product.info.downloadable.samples" as="samples" template="catalog/product/samples.phtml" after="product.price.tier" />
+        </referenceContainer>
+        <referenceContainer name="product.info.type">
+            <block class="Magento\Downloadable\Block\Catalog\Product\View\Type" name="product.info.downloadable" as="product_type_data" template="catalog/product/type.phtml">
+                <block class="Magento\CatalogInventory\Block\Stockqty\DefaultStockqty" name="product.info.downloadable.extra" as="product_type_data_extra" template="stockqty/default.phtml"/>
+            </block>
+        </referenceContainer>
+        <referenceBlock name="product.info.options.wrapper">
+            <block class="Magento\Downloadable\Block\Catalog\Product\Links" name="product.info.downloadable.options" as="type_downloadable_options" before="-" template="catalog/product/links.phtml">
+                <block class="Magento\Catalog\Pricing\Render" name="product.price.link" after="product.info.downloadable.options">
+                    <arguments>
+                        <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                        <argument name="price_type_code" xsi:type="string">link_price</argument>
+                    </arguments>
+                </block>
+            </block>
+        </referenceBlock>
+        <referenceContainer name="product.info.options.wrapper.bottom">
+            <block class="Magento\Catalog\Pricing\Render" name="product.price.final.copy" before="-">
                 <arguments>
                     <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                    <argument name="price_type_code" xsi:type="string">link_price</argument>
+                    <argument name="price_type_code" xsi:type="string">final_price</argument>
+                    <argument name="display_msrp_help_message" xsi:type="string">1</argument>
+                    <argument name="zone" xsi:type="string">item_view</argument>
+                    <argument name="id_suffix_some" xsi:type="string">copy-</argument>
                 </arguments>
             </block>
-        </block>
-    </referenceBlock>
-    <referenceContainer name="product.info.options.wrapper.bottom">
-        <block class="Magento\Catalog\Pricing\Render" name="product.price.final.copy" before="-">
-            <arguments>
-                <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                <argument name="price_type_code" xsi:type="string">final_price</argument>
-                <argument name="display_msrp_help_message" xsi:type="string">1</argument>
-                <argument name="zone" xsi:type="string">item_view</argument>
-                <argument name="id_suffix_some" xsi:type="string">copy-</argument>
-            </arguments>
-        </block>
-    </referenceContainer>
-    <move element="product.info" destination="content" after="product.info.main" />
-    <move element="product.info.social" destination="product.info.options.wrapper.bottom" after="-" />
+        </referenceContainer>
+        <move element="product.info" destination="content" after="product.info.main" />
+        <move element="product.info.social" destination="product.info.options.wrapper.bottom" after="-" />
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_grouped.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_grouped.xml
index 67e061278df8d61c9f51b24692d8da17054dbd63..d9febb501bfc381b52bc396e325b253aab6d26de 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_grouped.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_grouped.xml
@@ -26,9 +26,9 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <attribute name="class" value="page-product-grouped"/>
+        <referenceContainer name="product.info.form.content">
+            <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" name="product.info.grouped" before="product.info.addtocart" template="product/view/type/grouped.phtml"/>
+            <container name="product.info.grouped.extra" after="product.info.grouped" before="product.info.grouped" as="product_type_data_extra" label="Product Extra Info"/>
+        </referenceContainer>
     </body>
-    <referenceContainer name="product.info.form.content">
-        <block class="Magento\GroupedProduct\Block\Product\View\Type\Grouped" name="product.info.grouped" before="product.info.addtocart" template="product/view/type/grouped.phtml"/>
-        <container name="product.info.grouped.extra" after="product.info.grouped" before="product.info.grouped" as="product_type_data_extra" label="Product Extra Info"/>
-    </referenceContainer>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_simple.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_simple.xml
index 706558a3cf19c46b7efbf9ff969306515a310a9e..ed654238431d9c33cd2bb0e37e2409afd14b8028 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_simple.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_simple.xml
@@ -23,4 +23,6 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"/>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body/>
+</page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_index.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_index.xml
index 5d029adfffc0a1b98a78bd104d6eb7cd4d76247f..ae04d9cf74a7095d183540f2864029a3e801c640 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_index.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_index.xml
@@ -25,46 +25,48 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceBlock name="head.components">
-        <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_head_components" template="Magento_Wishlist::js/components.phtml"/>
-    </referenceBlock>
-    <referenceContainer name="content">
-        <block class="Magento\Wishlist\Block\Customer\Wishlist" name="customer.wishlist" template="view.phtml" cacheable="false">
-            <block class="Magento\Wishlist\Block\Rss\Link" name="wishlist.rss.link" template="rss/wishlist.phtml"/>
-            <block class="Magento\Wishlist\Block\Customer\Wishlist\Items" name="customer.wishlist.items" as="items" template="item/list.phtml" cacheable="false">
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Image" name="customer.wishlist.item.image" template="item/column/image.phtml" cacheable="false" />
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Info" name="customer.wishlist.item.name" template="item/column/name.phtml" cacheable="false" />
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Cart" name="customer.wishlist.item.price" template="item/column/price.phtml" cacheable="false">
-                    <block class="Magento\Catalog\Pricing\Render" name="product.price.render.wishlist">
+    <body>
+        <referenceBlock name="head.components">
+            <block class="Magento\Framework\View\Element\Js\Components" name="wishlist_head_components" template="Magento_Wishlist::js/components.phtml"/>
+        </referenceBlock>
+        <referenceContainer name="content">
+            <block class="Magento\Wishlist\Block\Customer\Wishlist" name="customer.wishlist" template="view.phtml" cacheable="false">
+                <block class="Magento\Wishlist\Block\Rss\Link" name="wishlist.rss.link" template="rss/wishlist.phtml"/>
+                <block class="Magento\Wishlist\Block\Customer\Wishlist\Items" name="customer.wishlist.items" as="items" template="item/list.phtml" cacheable="false">
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Image" name="customer.wishlist.item.image" template="item/column/image.phtml" cacheable="false"/>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Info" name="customer.wishlist.item.name" template="item/column/name.phtml" cacheable="false"/>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Cart" name="customer.wishlist.item.price" template="item/column/price.phtml" cacheable="false">
+                        <block class="Magento\Catalog\Pricing\Render" name="product.price.render.wishlist">
+                            <arguments>
+                                <argument name="price_render" xsi:type="string">product.price.render.default</argument>
+                                <argument name="price_type_code" xsi:type="string">configured_price</argument>
+                                <argument name="price_label" xsi:type="boolean">false</argument>
+                                <argument name="zone" xsi:type="string">item_list</argument>
+                            </arguments>
+                        </block>
+                        <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Options" name="customer.wishlist.item.options" cacheable="false"/>
+                    </block>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Comment" name="customer.wishlist.item.comment" template="item/column/comment.phtml" cacheable="false">
                         <arguments>
-                            <argument name="price_render" xsi:type="string">product.price.render.default</argument>
-                            <argument name="price_type_code" xsi:type="string">configured_price</argument>
-                            <argument name="price_label" xsi:type="boolean">false</argument>
-                            <argument name="zone" xsi:type="string">item_list</argument>
+                            <argument name="title" translate="true" xsi:type="string">Product Details and Comment</argument>
                         </arguments>
                     </block>
-                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Options" name="customer.wishlist.item.options" cacheable="false"/>
-                </block>
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Comment" name="customer.wishlist.item.comment" template="item/column/comment.phtml" cacheable="false">
-                    <arguments>
-                        <argument name="title" translate="true" xsi:type="string">Product Details and Comment</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Cart" name="customer.wishlist.item.cart" template="item/column/cart.phtml" cacheable="false">
-                    <arguments>
-                        <argument name="title" translate="true" xsi:type="string">Add to Cart</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Actions" name="customer.wishlist.item.actions" template="item/column/actions.phtml" cacheable="false">
-                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Edit" name="customer.wishlist.item.edit" template="item/column/edit.phtml" before="-" cacheable="false" />
-                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Remove" name="customer.wishlist.item.remove" template="item/column/remove.phtml" cacheable="false"/>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Cart" name="customer.wishlist.item.cart" template="item/column/cart.phtml" cacheable="false">
+                        <arguments>
+                            <argument name="title" translate="true" xsi:type="string">Add to Cart</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Actions" name="customer.wishlist.item.actions" template="item/column/actions.phtml" cacheable="false">
+                        <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Edit" name="customer.wishlist.item.edit" template="item/column/edit.phtml" before="-" cacheable="false"/>
+                        <block class="Magento\Wishlist\Block\Customer\Wishlist\Item\Column\Remove" name="customer.wishlist.item.remove" template="item/column/remove.phtml" cacheable="false"/>
+                    </block>
                 </block>
+                <container name="customer.wishlist.buttons" as="control_buttons" label="Wishlist Control Buttons">
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.update" template="button/update.phtml" cacheable="false"/>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.share" template="button/share.phtml" cacheable="false"/>
+                    <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.toCart" template="button/tocart.phtml" cacheable="false"/>
+                </container>
             </block>
-            <container name="customer.wishlist.buttons" as="control_buttons" label="Wishlist Control Buttons">
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.update" template="button/update.phtml" cacheable="false"/>
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.share" template="button/share.phtml" cacheable="false"/>
-                <block class="Magento\Wishlist\Block\Customer\Wishlist\Button" name="customer.wishlist.button.toCart" template="button/tocart.phtml" cacheable="false"/>
-            </container>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_share.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_share.xml
index 39b2ae358dabab8372a62c45d75b957d8e09a780..829186115d5f3c907da216c42e855995cd7f2287 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_share.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_share.xml
@@ -25,7 +25,9 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <update handle="customer_account"/>
-    <referenceContainer name="content">
-        <block class="Magento\Wishlist\Block\Customer\Sharing" name="wishlist.sharing" template="sharing.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Wishlist\Block\Customer\Sharing" name="wishlist.sharing" template="sharing.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_shared_index.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_shared_index.xml
index ef50cfbacd436522f8951c3c53ab7a2f3b48f123..80425c7627601f8a1ce12e6af160d704296afeb8 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_shared_index.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_shared_index.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="content">
-        <block class="Magento\Wishlist\Block\Share\Wishlist" name="customer.wishlist" template="shared.phtml" cacheable="false"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="content">
+            <block class="Magento\Wishlist\Block\Share\Wishlist" name="customer.wishlist" template="shared.phtml" cacheable="false"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml b/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
index 6620bdcab6a9bdbc54e7c464722c7ae05fcb71a7..95031f47d8600f1aa8239f03533e01b7c5392513 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
@@ -29,11 +29,12 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
     <form class="form shared wishlist" action="<?php echo $this->getUrl('*/*/update') ?>" method="post">
         <div class="wishlist table-wrapper">
             <table class="table data wishlist" id="wishlist-table">
+                <caption class="table-caption"><?php echo __('Wish List'); ?></caption>
                 <thead>
                 <tr>
-                    <th class="col product"><?php echo __('Product') ?></th>
-                    <th class="col comment"><?php echo __('Comment') ?></th>
-                    <th class="col actions"><?php echo __('Add to Cart') ?></th>
+                    <th class="col product" scope="col"><?php echo __('Product') ?></th>
+                    <th class="col comment" scope="col"><?php echo __('Comment') ?></th>
+                    <th class="col actions" scope="col"><?php echo __('Add to Cart') ?></th>
                 </tr>
                 </thead>
                 <tbody>
@@ -43,7 +44,7 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
                     $isVisibleProduct = $product->isVisibleInSiteVisibility();
                     ?>
                     <tr>
-                        <td class="col product">
+                        <td data-th="<?php echo $this->escapeHtml(__('Product')) ?>" class="col product">
                             <a class="product photo" href="<?php echo $this->getProductUrl($item) ?>" title="<?php echo $this->escapeHtml($product->getName()) ?>">
                                 <?php echo $imageBlock->init($product, 'customer_shared_wishlist')->toHtml() ?>
                             </a>
@@ -62,8 +63,8 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
                             ?>
                             <?php echo $this->getDetailsHtml($item) ?>
                         </td>
-                        <td class="col comment"><?php echo $this->getEscapedDescription($item) ?></td>
-                        <td class="col actions" data-role="add-to-links">
+                        <td data-th="<?php echo $this->escapeHtml(__('Comment')) ?>" class="col comment"><?php echo $this->getEscapedDescription($item) ?></td>
+                        <td data-th="<?php echo $this->escapeHtml(__('Add to Cart')) ?>" class="col actions" data-role="add-to-links">
                             <?php if ($product->isSaleable()): ?>
                                 <?php if ($isVisibleProduct): ?>
                                     <button type="button" title="<?php echo __('Add to Cart') ?>" onclick="location.assign('<?php echo $this->getSharedItemAddToCartUrl($item) ?>')" class="action tocart">
diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml b/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml
index 6dfb78758a9f6d7f23ba883820e34187bda9c06b..373b00c58143ac8759bde9fc96d79657726acfb6 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml
+++ b/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml
@@ -38,4 +38,5 @@
         <css src="Magento_Core::prototype/magento.css"/>
         <css src="mui/print.css" media="print"/>
     </head>
+    <body/>
 </page>
diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json
index 2cece03aef04696ae693d2a4643d2972b3885160..857fbb7947eb6e23eeb79455bf6bf5bbbbfad489 100644
--- a/app/design/adminhtml/Magento/backend/composer.json
+++ b/app/design/adminhtml/Magento/backend/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/design/adminhtml/Magento/backend/theme.xml b/app/design/adminhtml/Magento/backend/theme.xml
index ffc2c17d0100df95b9229489c5c0d5f38a79692c..b02fedb1371cfbb0ba49b9a9d45bea0b3deb87f1 100644
--- a/app/design/adminhtml/Magento/backend/theme.xml
+++ b/app/design/adminhtml/Magento/backend/theme.xml
@@ -24,5 +24,5 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento 2 backend</title>
-    <version>0.1.0-alpha101</version>
+    <version>0.1.0-alpha102</version>
 </theme>
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/layout/catalog_product_view.xml b/app/design/frontend/Magento/blank/Magento_Catalog/layout/catalog_product_view.xml
index 91fdd0f0129b09ccc7bed6c409540125b0b6e1cc..628d8febea78961e878590dccd118b42ca212df2 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/layout/catalog_product_view.xml
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/layout/catalog_product_view.xml
@@ -25,5 +25,7 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <move element="page.main.title" destination="product.info.main" before="-"/>
+    <body>
+        <move element="page.main.title" destination="product.info.main" before="-"/>
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
index 740dff467f18176b044575176cc09fcd4ea3aecf..f3b185bd8011ab3cc8649860f8449ae7b7307bd2 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
@@ -47,6 +47,7 @@
 @product-name-text-decoration-hover: @link-text-decoration-hover;
 
 @toolbar-mode-icon-font-size: 26px;
+@product-h1-margin-bottom-desktop: @indent-base;
 
 @import "listings.less";
 @import "toolbar.less";
@@ -166,7 +167,6 @@
     margin-bottom: 30px;
     .table.additional.attributes {
         width: auto;
-        .table-caption(true);
         .table-resize(
             @_th-padding-left: 0,
             @_th-padding-right: @indent-l-base,
@@ -177,6 +177,11 @@
 }
 
 .product-info-main {
+    .page-title {
+        .title {
+            .css(margin-bottom, @product-h1-margin-bottom-desktop);
+        }
+    }
     .stock {
         &.available,
         &.unavailable {
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
index bb781d36446b822479eab3e39016f06eeded4ce4..23b02a0b1cedfe36dfb03960bac626d1d29424a7 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
@@ -33,6 +33,7 @@
 }
 
 .toolbar {
+    &:extend(.abstract-add-clearfix all);
     &-amount {
         display: block;
         float: left;
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
index cc66f1dac05a2c837e148ee92daaf76688afb349..00c4f37dc87b8b1ce9c973786e1cb2bcbdd96aaf 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
@@ -23,29 +23,30 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="checkout.cart.items">
-        <container name="checkout.cart.container" label="invisible" htmlTag="div" htmlClass="cart-container" before="-">
-            <container name="cart.summary" label="Cart Summary Container" htmlTag="div" htmlClass="cart-summary" after="-">
-                <block class="Magento\Framework\View\Element\Template" name="checkout.cart.summary.title" before="-" template="Magento_Core::text.phtml">
-                    <arguments>
-                        <argument translate="true" name="text" xsi:type="string">Summary</argument>
-                        <argument name="tag" xsi:type="string">strong</argument>
-                        <argument name="attributes" xsi:type="array">
-                            <item name="title" translate="true" xsi:type="string">Summary</item>
-                        </argument>
-                        <argument name="css_class" xsi:type="string">summary title</argument>
-                    </arguments>
-                </block>
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="checkout.cart.items">
+            <container name="checkout.cart.container" label="invisible" htmlTag="div" htmlClass="cart-container" before="-">
+                <container name="cart.summary" label="Cart Summary Container" htmlTag="div" htmlClass="cart-summary" after="-">
+                    <block class="Magento\Framework\View\Element\Template" name="checkout.cart.summary.title" before="-" template="Magento_Core::text.phtml">
+                        <arguments>
+                            <argument translate="true" name="text" xsi:type="string">Summary</argument>
+                            <argument name="tag" xsi:type="string">strong</argument>
+                            <argument name="attributes" xsi:type="array">
+                                <item name="title" translate="true" xsi:type="string">Summary</item>
+                            </argument>
+                            <argument name="css_class" xsi:type="string">summary title</argument>
+                        </arguments>
+                    </block>
+                </container>
             </container>
-        </container>
-    </referenceContainer>
-    <move element="checkout.cart.form.before" destination="checkout.cart.container" before="cart.summary" />
-    <move element="checkout.cart.form" destination="checkout.cart.container" after="cart.summary" />
-    <move element="checkout.cart.widget" destination="checkout.cart.container" after="checkout.cart.form" />
-    <move element="checkout.cart.shipping" destination="cart.summary" after="checkout.cart.summary.title" />
-    <move element="checkout.cart.coupon" destination="cart.summary" />
-    <move element="checkout.cart.totals.container" destination="cart.summary"/>
-    <move element="checkout.cart.methods.bottom" destination="cart.summary"/>
+        </referenceContainer>
+        <move element="checkout.cart.form.before" destination="checkout.cart.container" before="cart.summary"/>
+        <move element="checkout.cart.form" destination="checkout.cart.container" after="cart.summary"/>
+        <move element="checkout.cart.widget" destination="checkout.cart.container" after="checkout.cart.form"/>
+        <move element="checkout.cart.shipping" destination="cart.summary" after="checkout.cart.summary.title"/>
+        <move element="checkout.cart.coupon" destination="cart.summary"/>
+        <move element="checkout.cart.totals.container" destination="cart.summary"/>
+        <move element="checkout.cart.methods.bottom" destination="cart.summary"/>
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_onepage_index.xml b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_onepage_index.xml
index eb7e2fa2efd83c865f7116063eb4934c46c54d05..a7595a8b95689a07b333466e4bbbcc5fa67cc108 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_onepage_index.xml
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_onepage_index.xml
@@ -23,12 +23,14 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <remove name="minicart" />
-    <remove name="header.panel" />
-    <remove name="top.search" />
-    <remove name="catalog.compare.link" />
-    <remove name="page.main.title" />
-    <remove name="catalog.topnav" />
-    <remove name="footer-container" />
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <remove name="minicart"/>
+        <remove name="header.panel"/>
+        <remove name="top.search"/>
+        <remove name="catalog.compare.link"/>
+        <remove name="page.main.title"/>
+        <remove name="catalog.topnav"/>
+        <remove name="footer-container"/>
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
index 09db4e38533f61c49e431b056f6eb1aa4b324b04..91735dce9d30b3f3cef19333ef6a836b12724877 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
@@ -178,6 +178,9 @@
                 }
             }
         }
+        .table-wrapper {
+            margin-bottom: 0;
+        }
     }
 
     //  Products table
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
index 2bc8a723f20658675519a6c7200d1a1b22c209e3..22e40949327f2034f2c6e1af82a1ea0cd239468a 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
@@ -54,21 +54,21 @@
     }
     > .content > .actions {
         margin-top: 15px;
-        > .secondary {
-            margin: 15px 0;
-            text-align: center;
-        }
+        text-align: center;
         > .primary {
-            margin: 0 10px;
+            margin: 0 10px 15px;
             .action.primary {
                 &:extend(.abstract-button-l all);
                 display: block;
                 width: 100%;
+                margin-bottom: 15px;
+                &:last-child {
+                    margin-bottom: 0;
+                }
             }
         }
-        .paypal-logo {
-            margin-top: 15px;
-            text-align: center;
+        > .secondary {
+            margin: 0 0 15px;
         }
     }
 }
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
index 67670a0dd04a9890fb4bf5534e1d0f5be2babfd1..b3aaeb647954e8bb43d50c289e52882e97391a30 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
@@ -25,7 +25,7 @@
 @import "cart.less";
 @import "minicart.less";
 
-@desctop-form-field-vertical-indent: 29px;
+@desktop-form-field-vertical-indent: 29px;
 
 //
 //    One Page Checkout
@@ -128,7 +128,6 @@
     // Order review
     .data.table {
         &:extend(.abstract-product-options-list all);
-        .table-caption(@_table-caption-hide: true);
         tbody tr:first-child td {
             border-top: @border-width-base solid @border-color-base;
         }
@@ -313,7 +312,7 @@
 .checkout-onepage-success {
     .page-title {
         .print {
-            display: none;
+            &:extend(.abstract-no-display all);
         }
     }
 }
@@ -324,22 +323,22 @@
     }
 }
 
+.checkout-onepage-index {
+    .nav-toggle {
+        &:extend(.abstract-no-display all);
+    }
+    .logo {
+        margin-left: 0;
+    }
+}
+
 //
 //    Mobile
 //--------------------------------------
-.responsive-smaller(@break) when (@break = @screen-m) {
-    .checkout-onepage-index {
-        .nav-toggle {
-            display: none;
-        }
-        .logo {
-            margin-left: 0;
-        }
-    }
-
+.responsive-smaller(@break) when (@break = @screen-s) {
     .opc-wrapper {
         .data.table {
-            &:extend(.abstract-table-vertical-mobile all);
+            &:extend(.abstract-table-vertical-mobile-s all);
             &:extend(.abstract-product-items-summary all);
             tbody tr {
                 &:first-child,
@@ -351,14 +350,27 @@
                 td:last-child {
                     border-bottom: @border-width-base solid @border-color-base;
                 }
+                .product-item-name {
+                    display: inline-block;
+                }
                 .col {
-                    &.qty,
+                    &.qty {
+                        text-align: left;
+                    }
                     &.price,
                     &.subtotal {
                         text-align: left;
+                        .price-including-tax,
+                        .price-excluding-tax {
+                            display: inline-block;
+                        }
                     }
                 }
             }
+            .mark,
+            .amount {
+                padding-left: 0;
+            }
         }
     }
 }
@@ -366,29 +378,29 @@
 //
 //    Desktop
 //--------------------------------------
-.responsive(@break) when (@break = @screen-m) {
+.responsive(@break) when (@break = @screen-s) {
     .checkout-onepage-index .column.main {
-        &:extend(.abstract-add-clearfix-desktop all);
+        &:extend(.abstract-add-clearfix-desktop-s all);
     }
 
     .opc-wrapper {
         .layout-column(2, 2, @layout-column-checkout-main-width);
-        &:extend(.abstract-add-box-sizing-desktop all);
+        &:extend(.abstract-add-box-sizing-desktop-s all);
         .step-content {
             padding: 20px 18px 40px;
             .addresses .control {
-                margin-bottom: @desctop-form-field-vertical-indent;
+                margin-bottom: @desktop-form-field-vertical-indent;
             }
             .form {
                 &:after {
                     text-align: right;
                 }
                 &:not(.login) .actions-toolbar {
-                    &:extend(.abstract-reset-left-margin-desktop all);
+                    &:extend(.abstract-reset-left-margin-desktop-s all);
                 }
                 > .field.choice,
                 .fieldset > .field {
-                    margin: @desctop-form-field-vertical-indent 0 0;
+                    margin: @desktop-form-field-vertical-indent 0 0;
                 }
                 .fieldset.address {
                     .field:first-of-type:not(.additional) {
@@ -398,7 +410,7 @@
             }
             .fieldset.login {
                 &:after {
-                    &:extend(.abstract-margin-for-forms-desktop all);
+                    &:extend(.abstract-margin-for-forms-desktop-s all);
                     text-align: left;
                 }
             }
@@ -408,13 +420,13 @@
     .opc-block-progress {
         .layout-column(2, 1, @layout-column-checkout-left-width);
         padding-right: @layout-column-main-sidebar-offset;
-        &:extend(.abstract-add-box-sizing-desktop all);
+        &:extend(.abstract-add-box-sizing-desktop-s all);
     }
 
     .login-wrapper {
-        &:extend(.abstract-add-clearfix-desktop all);
+        &:extend(.abstract-add-clearfix-desktop-s all);
         .block {
-            &:extend(.abstract-blocks-2columns all);
+            &:extend(.abstract-blocks-2columns-s all);
         }
         .field.choice:not(.persistent) {
             &:before {
@@ -423,7 +435,7 @@
         }
         .fieldset.login {
             .actions {
-                &:extend(.abstract-margin-for-forms-desktop all);
+                &:extend(.abstract-margin-for-forms-desktop-s all);
             }
         }
     }
diff --git a/app/design/frontend/Magento/blank/Magento_Cms/web/css/source/widgets.less b/app/design/frontend/Magento/blank/Magento_Cms/web/css/source/widgets.less
index d7864edc5e485e28815d29ee2921155926ba8fa0..8b03682a153cafe285c79fb0dd6f769b8b61b36c 100644
--- a/app/design/frontend/Magento/blank/Magento_Cms/web/css/source/widgets.less
+++ b/app/design/frontend/Magento/blank/Magento_Cms/web/css/source/widgets.less
@@ -22,11 +22,14 @@
 //  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 //  */
 
+@widgets-indent-bottom: @indent-base;
 .widget.static.block {}
 
-.widget.widget-cms-link {
+.widget-cms-link {
     display: block;
-    &:extend(.abstract-margin-for-blocks-and-widgets all);
+    .css(margin-bottom, @widgets-indent-bottom);
 }
 
-.widget.widget-cms-link-inline {}
+.widget-cms-link-inline {
+    margin: 0;
+}
diff --git a/app/design/frontend/Magento/blank/Magento_Customer/layout/customer_account.xml b/app/design/frontend/Magento/blank/Magento_Customer/layout/customer_account.xml
index 45589c3553408e1a1c501a5a96606a941471a4f3..383c1d658e6b3f01f7fd5483dfcabf15a83bdcb6 100644
--- a/app/design/frontend/Magento/blank/Magento_Customer/layout/customer_account.xml
+++ b/app/design/frontend/Magento/blank/Magento_Customer/layout/customer_account.xml
@@ -24,36 +24,38 @@
  */
 -->
 <page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="sidebar.main">
-        <block class="Magento\Framework\View\Element\Template" name="customer_account_navigation_block" template="Magento_Theme::html/collapsible.phtml">
-            <arguments>
-                <argument name="block_title" translate="true" xsi:type="string">Account Dashboard</argument>
-                <argument name="block_css" xsi:type="string">block-collapsible-nav</argument>
-            </arguments>
-            <block class="Magento\Framework\View\Element\Html\Links" name="customer_account_navigation" before="-">
+    <body>
+        <referenceContainer name="sidebar.main">
+            <block class="Magento\Framework\View\Element\Template" name="customer_account_navigation_block" template="Magento_Theme::html/collapsible.phtml" before="-">
                 <arguments>
-                    <argument name="css_class" xsi:type="string">nav items</argument>
+                    <argument name="block_title" translate="true" xsi:type="string">Account Dashboard</argument>
+                    <argument name="block_css" xsi:type="string">block-collapsible-nav</argument>
                 </arguments>
-                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-link">
+                <block class="Magento\Framework\View\Element\Html\Links" name="customer_account_navigation" before="-">
                     <arguments>
-                        <argument name="label" xsi:type="string">Account Dashboard</argument>
-                        <argument name="path" xsi:type="string">customer/account</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-edit-link">
-                    <arguments>
-                        <argument name="label" xsi:type="string">Account Information</argument>
-                        <argument name="path" xsi:type="string">customer/account/edit</argument>
-                    </arguments>
-                </block>
-                <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-address-link">
-                    <arguments>
-                        <argument name="label" xsi:type="string">Address Book</argument>
-                        <argument name="path" xsi:type="string">customer/address</argument>
+                        <argument name="css_class" xsi:type="string">nav items</argument>
                     </arguments>
+                    <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-link">
+                        <arguments>
+                            <argument name="label" xsi:type="string">Account Dashboard</argument>
+                            <argument name="path" xsi:type="string">customer/account</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-edit-link">
+                        <arguments>
+                            <argument name="label" xsi:type="string">Account Information</argument>
+                            <argument name="path" xsi:type="string">customer/account/edit</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-address-link">
+                        <arguments>
+                            <argument name="label" xsi:type="string">Address Book</argument>
+                            <argument name="path" xsi:type="string">customer/address</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
-    <move element="page.main.title" destination="content.top" before="-"/>
+        </referenceContainer>
+        <move element="page.main.title" destination="content.top" before="-"/>
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Customer/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Customer/web/css/source/module.less
index b8bad12544f8c4d87f1a16ff5318b68d5efbdcbb..b39de5b6008cc269d6b3629b1867a0dba66175d8 100644
--- a/app/design/frontend/Magento/blank/Magento_Customer/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Customer/web/css/source/module.less
@@ -82,7 +82,6 @@
     .page-title {
         .title {
             display: inline-block;
-            margin-top: 0;
         }
     }
     .messages {
@@ -121,7 +120,7 @@
                     }
                 }
             }
-        } 
+        }
     }
 }
 
@@ -130,8 +129,10 @@
 //--------------------------------------
 .block {
     &:extend(.abstract-margin-for-blocks-and-widgets all);
-    &:last-child {
-        margin-bottom: 0;
+    .column.main & {
+        &:last-child {
+            margin-bottom: 0;
+        }
     }
     .title {
         strong {
@@ -157,14 +158,37 @@
     }
 }
 
-.widget {
-    img {
-        max-width: 100%;
+.account {
+    .data.table-return-items {
+        .qty {
+            .input-text {
+                &:extend(.abstract-input-qty all);
+            }
+        }
+    }
+}
+
+//
+//    Mobile @screen-s
+//--------------------------------------
+.responsive-smaller(@break) when (@break = @screen-s) {
+    .account {
+        .data.table {
+            &:extend(.abstract-table-vertical-mobile-s all);
+            td {
+                &:first-child {
+                    padding-top: 15px;
+                }
+                &:last-child {
+                    padding-bottom: 15px;
+                }
+            }
+        }
     }
 }
 
 //
-//    Mobile
+//    Mobile @screen-m
 //--------------------------------------
 .responsive-smaller(@break) when (@break = @screen-m) {
     .account {
@@ -175,7 +199,6 @@
             margin-top: -21px;
         }
         .data.table {
-            &:extend(.abstract-table-vertical-mobile all);
             .col.actions {
                 padding-top: 9px;
                 padding-bottom: 15px;
@@ -185,11 +208,7 @@
             }
         }
         .toolbar {
-            .toolbar-amount,
-            .limiter,
-            .pages {
-                margin-bottom: 25px;
-            }
+            &:extend(.abstract-pager-toolbar-mobile all);
         }
     }
     .control.captcha-image {
@@ -276,26 +295,7 @@
             margin-bottom: 0;
         }
         .toolbar {
-            position: relative;
-            margin-bottom: @indent-base;
-            &:extend(.abstract-add-clearfix-desktop all);
-            .limiter {
-                float: right;
-                position: relative;
-                z-index: 1;
-            }
-            .toolbar-amount {
-                float: left;
-                line-height: normal;
-                padding: 7px 0 0;
-                position: relative;
-                z-index: 1;
-            }
-            .pages {
-                position: absolute;
-                z-index: 0;
-                width: 100%;
-            }
+            &:extend(.abstract-pager-toolbar all);
         }
     }
 
@@ -313,10 +313,6 @@
         }
     }
 
-    .widget {
-        clear: both;
-    }
-
     //
     //    Welcome block
     //--------------------------------------
diff --git a/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/module.less
index 2e3a5b2bf466c92c3752d0603784b85423c2af74..fd5cc68dd5e7abe3f9461989fba30f0b55f4207f 100644
--- a/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/module.less
@@ -95,6 +95,70 @@
     }
 }
 
+//
+//    Account order gift message
+//--------------------------------------
+.order-details-items {
+    .order-gift-message,
+    .block-order-details-gift-message {
+        .item-options {
+            dt {
+                margin: @indent-s-base 0;
+                font-weight: @font-weight-base;
+            }
+        }
+        &:extend(.abstract-add-clearfix all);
+        dt:after {
+            content: "";
+        }
+        .label {
+            &:extend(.abstract-colon all);
+        }
+        .item-message {
+            clear: left;
+        }
+    }
+}
+
+.order-details-items .order-items {
+    .order-gift-message {
+        &:extend(.abstract-no-display all);
+        .action.close {
+            &:extend(.abstract-no-display all);
+        }
+    }
+    .action.show {
+        padding-right: 20px;
+        position: relative;
+        .icon-font(
+            @_icon-font-content: @icon-down,
+            @_icon-font-size: 22px,
+            @_icon-font-text-hide: false,
+            @_icon-font-position: after,
+            @_icon-font-display: inline-block
+        );
+        &:after {
+            position: absolute;
+            right: 0;
+            top: -4px;
+        }
+        &.expanded {
+            .icon-font-symbol(
+                @_icon-font-content: @icon-up,
+                @_icon-font-position: after
+            );
+        }
+    }
+}
+
+.block-order-details-gift-message {
+    border-top: @border-width-base solid @border-color-base;
+    padding-top: @indent-s-base;
+}
+
+//
+//    Desktop
+//--------------------------------------
 .responsive(@break) when (@break = @screen-m) {
     .gift-message {
         .item {
diff --git a/app/design/frontend/Magento/blank/Magento_Multishipping/layout/multishipping_checkout.xml b/app/design/frontend/Magento/blank/Magento_Multishipping/layout/multishipping_checkout.xml
index 5f2378c6b5af00ca36cb9956c537f3c5e236cee2..bb6b8710ca1eabec8e37032978ed9ac250b9bd64 100644
--- a/app/design/frontend/Magento/blank/Magento_Multishipping/layout/multishipping_checkout.xml
+++ b/app/design/frontend/Magento/blank/Magento_Multishipping/layout/multishipping_checkout.xml
@@ -24,10 +24,12 @@
  */
 -->
 <page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" label="Multishipping Checkout" design_abstraction="custom">
-    <remove name="minicart" />
-    <remove name="header.panel" />
-    <remove name="top.search" />
-    <remove name="catalog.topnav" />
-    <remove name="footer-container" />
-    <remove name="catalog.compare.link" />
+    <body>
+        <remove name="minicart" />
+        <remove name="header.panel" />
+        <remove name="top.search" />
+        <remove name="catalog.topnav" />
+        <remove name="footer-container" />
+        <remove name="catalog.compare.link" />
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
index 2823bf4aa6cd888a1f52a745f03c0bb47095dd53..3a25ffa50c91a1ce69b85f7f111a8e7c9e7586b9 100644
--- a/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
@@ -70,10 +70,19 @@
         margin-top: @indent-xl-base;
     }
 
-    .actions-toolbar > .secondary {
-        display: block;
-        .action.back {
+    .actions-toolbar {
+        > .secondary {
             display: block;
+            .action {
+                margin-bottom: @indent-m-base;
+                &.back {
+                    display: block;
+                    margin-left: 0;
+                }
+            }
+        }
+        > .primary {
+            margin-right: @indent-s-base;
         }
     }
 
@@ -130,6 +139,15 @@
         }
     }
 
+    .box-title {
+        span {
+            margin-right: @indent-s-base;
+        }
+        > .action {
+            margin: 0;
+        }
+    }
+
     .box-shipping-method {
         .price {
             font-weight: @font-weight-bold;
@@ -150,27 +168,22 @@
 }
 
 [class^="multishipping-"] {
-    .nav-sections {
+    .nav-sections,
+    .nav-toggle {
         &:extend(.abstract-no-display all);
     }
+    .logo {
+        margin-left: 0;
+    }
 }
 
 //
 //    Mobile
 //--------------------------------------
-.responsive-smaller(@break) when (@break = @screen-m) {
-    [class^="multishipping-"] {
-        .nav-toggle {
-            &:extend(.abstract-no-display all);
-        }
-        .logo {
-            margin-left: 0;
-        }
-    }
-
+.responsive-smaller(@break) when (@break = @screen-s) {
     .multicheckout {
         .data.table {
-            &:extend(.abstract-table-vertical-mobile all);
+            &:extend(.abstract-table-vertical-mobile-s all);
             &:extend(.abstract-product-items-summary all);
             > tbody {
                 > tr td {
@@ -185,7 +198,7 @@
                         padding-top: 9px;
                         padding-bottom: 15px;
                         &:before {
-                            &:extend(.abstract-visually-hidden-mobile-m all);
+                            &:extend(.abstract-no-display-s all);
                         }
                     }
                     &:last-child {
@@ -195,6 +208,12 @@
             }
         }
 
+        .product-item-name,
+        .price-including-tax,
+        .price-excluding-tax {
+            display: inline-block;
+        }
+
         .block-content .box {
             &:not(:last-child) {
                 margin-bottom: @indent-xl-base;
@@ -205,14 +224,39 @@
         }
 
         &.order-review {
-            .data.table {
-                thead {
+            .box-items {
+                .data.table thead {
                     .col.item {
                         display: block;
                         padding: 0;
                     }
                 }
             }
+            .data.table {
+                .col {
+                    &.qty {
+                        text-align: left;
+                    }
+                    &.actions:before {
+                        &:extend(.abstract-no-display-s all);
+                    }
+                }
+                > tfoot {
+                    tr:first-child td {
+                        border-top: 0;
+                    }
+                } 
+            }
+        }
+
+        .actions-toolbar {
+            .action {
+                margin-bottom: @indent-m-base;
+            }
+            > .primary {
+                margin-right: 0;
+                margin-bottom: @indent-m-base;
+            }
         }
     }
 }
@@ -220,11 +264,11 @@
 //
 //    Desktop
 //--------------------------------------
-.responsive(@break) when (@break = @screen-m) {
+.responsive(@break) when (@break = @screen-s) {
     .multicheckout {
         .actions-toolbar {
             .column:not(.sidebar-main) & {
-                &:extend(.abstract-reset-left-margin-desktop all);
+                &:extend(.abstract-reset-left-margin-desktop-s all);
             }
             .secondary {
                 float: none;
@@ -261,7 +305,7 @@
 
         .block-shipping {
             .box {
-                &:extend(.abstract-add-box-sizing-desktop all);
+                &:extend(.abstract-add-box-sizing-desktop-s all);
                 float: left;
                 width: 25%;
             }
@@ -273,14 +317,14 @@
         }
 
         .block-billing {
-            &:extend(.abstract-add-clearfix-mobile-m all);
+            &:extend(.abstract-add-clearfix-desktop-s all);
             .box-billing-address {
-                &:extend(.abstract-add-box-sizing-desktop all);
+                &:extend(.abstract-add-box-sizing-desktop-s all);
                 float: left;
                 width: 25%;
             }
             .box-billing-method {
-                &:extend(.abstract-add-box-sizing-desktop all);
+                &:extend(.abstract-add-box-sizing-desktop-s all);
                 float: left;
                 padding-left: @indent-m-base;
                 width: 50%;
diff --git a/app/design/frontend/Magento/blank/Magento_Paypal/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Paypal/web/css/source/module.less
index 3664cba749a20b98697a33aa89eae07a24052c38..b483c4c35364e0048c1c24d038c2bef479d083ed 100644
--- a/app/design/frontend/Magento/blank/Magento_Paypal/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Paypal/web/css/source/module.less
@@ -39,18 +39,17 @@
         text-align: center;
         text-transform: uppercase;
     }
+    &.acceptance {
+        display: block;
+    }
 }
 
 .product-info-main,
 .block-minicart {
      .paypal img {
-         display: block;
-     }
-}
-.product-info-main {
-    img {
+        display: block;
         margin: 0 auto;
-    }
+     }
 }
 
 .form-new-agreement {
@@ -114,7 +113,6 @@
                 border-top: @table-border-width @table-border-style @table-border-color;
             }
         }
-        .table-caption(@_table-caption-hide: true);
     }
 
     .actions-toolbar {
diff --git a/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
index 9af81ddf25b21b2686b25cbce6712e7b243d953f..6f647382de2b010f10f2b4023845c83cfedb9f80 100644
--- a/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
@@ -59,32 +59,34 @@
         }
     }
     .table-order-items {
-        .table-bordered(
-            @_type: horizontal
-        );
-        .account & {
+        .product-item-name {
+            margin-top: 0;
+        }
+        tbody + tbody {
+            border-top: @border-width-base solid @border-color-base;
+        }
+        .columns & {
             tfoot {
                 &:extend(.abstract-account-summary all);
             }
         }
-
-        .item.options {
+    }
+    .item-options {
+        dt {
+            margin: 0;
+        }
+        dd {
+            margin: 0 0 15px;
+        }
+        &.links {
             dt {
-                margin: 0;
+                display: inline-block;
+                &:after {
+                    content: ": ";
+                }
             }
             dd {
-                margin: 0 0 15px;
-            }
-            &.links {
-                dt {
-                    display: inline-block;
-                    &:after {
-                        content: ": ";
-                    }
-                }
-                dd {
-                    margin: 0;
-                }
+                margin: 0;
             }
         }
     }
@@ -101,23 +103,25 @@
 }
 
 .order-status {
-    display: inline-block;
-    margin-bottom: 20px;
-    text-transform: uppercase;
+    &:extend(.abstract-status all);
+}
+
+.page-title {
+    .order-date {
+        margin: 0 0 @indent-base;
+    }
 }
 
-.sales-order-view {
+.account,
+.sales-guest-view {
     .page-title {
         .title {
-            margin-right: 25px;
-        }
-        .order-date {
-            margin: 0 0 20px;
+            margin-right: @indent-m-base;
         }
     }
 }
 
-.form.orders.search {
+.form-orders-search {
     .field {
         &.email,
         &.zip {
@@ -203,26 +207,19 @@
 //
 //    Mobile
 //--------------------------------------
-.responsive-smaller(@break) when (@break = @screen-m) {
+.responsive-smaller(@break) when (@break = @screen-s) {
     .account {
         .order-details-items {
             .table-order-items {
+                tr {
+                    display: block;
+                }
                 tbody,
                 tfoot {
                     > tr > td {
                         border: none;
                     }
                 }
-                tbody {
-                    tr {
-                        td:first-child {
-                            padding-top: 15px;
-                        }
-                        td:last-child {
-                            padding-bottom: 15px;
-                        }
-                    }
-                }
                 .col {
                     &.price,
                     &.subtotal {
@@ -242,19 +239,13 @@
                             vertical-align: top;
                         }
                     }
-                    &.label {
-                        display: none;
-                    }
-                    .items-qty {
-                        display: inline-block;
-                    }
-                    .item.options {
-                        .font-size(12);
-                        margin: 10px 0 0;
-                    }
                 }
-                .options-label + .item-options,
-                .item-options + .item-options {
+                .options-label,
+                .col.options:before  {
+                    display: none;
+                }
+                .options-label + .item-options-container,
+                .item-options-container + .item-options-container {
                     &:before {
                         content: attr(data-th) ":";
                         display: block;
@@ -311,6 +302,13 @@
         }
     }
 
+    .page-title {
+        .order-date {
+            @order-status-indent: ceil(@h1-margin-bottom-desktop/2);
+            .css(margin-top, -@order-status-indent);
+        }
+    }
+
     //
     //    Guest order view page
     //--------------------------------------
diff --git a/app/design/frontend/Magento/blank/Magento_Sendfriend/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Sendfriend/web/css/source/module.less
index 29c48d29d9b23b598c19d9414dc3e8cd1c807ad7..2b376cc8e5c97c11870ca93c214e7c59f650dc41 100644
--- a/app/design/frontend/Magento/blank/Magento_Sendfriend/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Sendfriend/web/css/source/module.less
@@ -24,7 +24,7 @@
 
 
 .form.send.friend {
-    &:extend(.abstract-add-recipients all);
+    &:extend(.abstract-add-fields all);
 }
 
 .action.mailto.friend {
@@ -47,6 +47,6 @@
 //--------------------------------------
 .responsive(@break) when (@break = @screen-m) {
     .form.send.friend {
-        &:extend(.abstract-add-recipients-desktop all);
+        &:extend(.abstract-add-fields-desktop all);
     }
 }
diff --git a/app/design/frontend/Magento/blank/Magento_Theme/layout/default.xml b/app/design/frontend/Magento/blank/Magento_Theme/layout/default.xml
index b05cec4dfb2669a9c493173697bc31c40b1101dd..243f9773daac69c5724a7f72eb3cb062fe48e5df 100644
--- a/app/design/frontend/Magento/blank/Magento_Theme/layout/default.xml
+++ b/app/design/frontend/Magento/blank/Magento_Theme/layout/default.xml
@@ -23,49 +23,48 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <referenceContainer name="header.container">
-        <container name="header.panel.wrapper" htmlClass="panel wrapper" htmlTag="div" before="-" />
-    </referenceContainer>
-    <move element="header.panel" destination="header.panel.wrapper" />
-    <move element="top.links" destination="header.panel" after="-" />
-
-    <move element="catalog.topnav" destination="store.menu" before="-" />
-
-    <referenceContainer name="page.top">
-        <block class="Magento\Framework\View\Element\Template" name="navigation.sections" before="-" template="Magento_Theme::html/sections.phtml">
-            <arguments>
-                <argument name="group_name" xsi:type="string">navigation-sections</argument>
-                <argument name="group_css" xsi:type="string">nav-sections</argument>
-            </arguments>
-            <block class="Magento\Framework\View\Element\Template" name="store.menu" group="navigation-sections" template="Magento_Theme::html/container.phtml">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceContainer name="header.container">
+            <container name="header.panel.wrapper" htmlClass="panel wrapper" htmlTag="div" before="-"/>
+        </referenceContainer>
+        <move element="header.panel" destination="header.panel.wrapper"/>
+        <move element="top.links" destination="header.panel" after="-"/>
+        <move element="catalog.topnav" destination="store.menu" before="-"/>
+        <referenceContainer name="page.top">
+            <block class="Magento\Framework\View\Element\Template" name="navigation.sections" before="-" template="Magento_Theme::html/sections.phtml">
                 <arguments>
-                    <argument name="title" translate="true" xsi:type="string">Menu</argument>
+                    <argument name="group_name" xsi:type="string">navigation-sections</argument>
+                    <argument name="group_css" xsi:type="string">nav-sections</argument>
                 </arguments>
-            </block>
-            <block class="Magento\Framework\View\Element\Text" name="store.links" group="navigation-sections">
-                <arguments>
-                    <argument name="title" translate="true" xsi:type="string">Account</argument>
-                    <argument name="use_force" xsi:type="boolean">true</argument>
-                    <argument name="text" xsi:type="string"><![CDATA[<!-- Account links -->]]></argument>
-                </arguments>
-            </block>
-            <block class="Magento\Framework\View\Element\Template" name="store.settings" group="navigation-sections" template="Magento_Theme::html/container.phtml">
-                <arguments>
-                    <argument name="title" translate="true" xsi:type="string">Settings</argument>
-                </arguments>
-                <block class="Magento\Store\Block\Switcher" name="store.settings.language" template="switch/languages.phtml">
+                <block class="Magento\Framework\View\Element\Template" name="store.menu" group="navigation-sections" template="Magento_Theme::html/container.phtml">
+                    <arguments>
+                        <argument name="title" translate="true" xsi:type="string">Menu</argument>
+                    </arguments>
+                </block>
+                <block class="Magento\Framework\View\Element\Text" name="store.links" group="navigation-sections">
                     <arguments>
-                        <argument name="id_modifier" xsi:type="string">nav</argument>
+                        <argument name="title" translate="true" xsi:type="string">Account</argument>
+                        <argument name="use_force" xsi:type="boolean">true</argument>
+                        <argument name="text" xsi:type="string"><![CDATA[<!-- Account links -->]]></argument>
                     </arguments>
                 </block>
-                <block class="Magento\Directory\Block\Currency" name="store.settings.currency" before="store_language" template="currency.phtml">
+                <block class="Magento\Framework\View\Element\Template" name="store.settings" group="navigation-sections" template="Magento_Theme::html/container.phtml">
                     <arguments>
-                        <argument name="id_modifier" xsi:type="string">nav</argument>
+                        <argument name="title" translate="true" xsi:type="string">Settings</argument>
                     </arguments>
+                    <block class="Magento\Store\Block\Switcher" name="store.settings.language" template="switch/languages.phtml">
+                        <arguments>
+                            <argument name="id_modifier" xsi:type="string">nav</argument>
+                        </arguments>
+                    </block>
+                    <block class="Magento\Directory\Block\Currency" name="store.settings.currency" before="store_language" template="currency.phtml">
+                        <arguments>
+                            <argument name="id_modifier" xsi:type="string">nav</argument>
+                        </arguments>
+                    </block>
                 </block>
             </block>
-        </block>
-    </referenceContainer>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Theme/layout/default_head_blocks.xml b/app/design/frontend/Magento/blank/Magento_Theme/layout/default_head_blocks.xml
index 93ab2d6bee4d21622db8e024aac3342ebe8d9874..147a3fd65f6a30057633349e19648e4eddcca797 100644
--- a/app/design/frontend/Magento/blank/Magento_Theme/layout/default_head_blocks.xml
+++ b/app/design/frontend/Magento/blank/Magento_Theme/layout/default_head_blocks.xml
@@ -26,5 +26,6 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="css/styles.css" />
+        <css src="css/print.css" media="print" />
     </head>
 </page>
diff --git a/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
index cf249d63ab343980395988fe1b46d837111483a7..180d1f20051848ab9511f62545e01bd8918c1e7c 100644
--- a/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
@@ -44,6 +44,8 @@
 @addto-hover-color: @color-primary;
 @minicart-icons-color: #8f8f8f;
 
+@h1-margin-bottom-desktop: @indent-xl-base;
+
 body {
     .css(background-color, @page-bg-color);
 }
@@ -76,11 +78,13 @@ body {
         max-width: 100%;
         display: block;
     }
+   .page-print & {
+        float: none;
+    }
 }
 
 .page.main {
     > .page-title {
-        margin-bottom: @indent-xl-base;
         .title + .action {
             margin-top: @indent-l-base;
         }
@@ -139,14 +143,12 @@ body {
         border-top: 1px solid @border-color-base;
         ul {
             &:extend(.abstract-reset-list all);
-            padding: 0 50px 0 0;
         }
         .links {
             display: inline-block;
             vertical-align: top;
             margin-bottom: 20px;
-        }
-        .links {
+            padding: 0 50px 0 0;
             li {
                 margin: 0 0 8px;
             }
@@ -200,6 +202,31 @@ body {
     }
 }
 
+//
+//    Widgets
+//--------------------------------------
+.sidebar {
+    .widget.block:not(:last-child),
+    .widget:not(:last-child) {
+        &:extend(.abstract-margin-for-blocks-and-widgets all);
+    }
+}
+
+.widget {
+    clear: both;
+    img {
+        max-width: 100%;
+    }
+    .block-title {
+        strong {
+            display: inline-block;
+            font-size: ceil((@font-size-base * 1.28)); // 18px
+            font-weight: @font-weight-light;
+            margin: 0 0 @indent-base;
+        }
+    }
+}
+
 //
 //    Desktop
 //--------------------------------------
@@ -246,7 +273,6 @@ body {
 
     .page.main {
         > .page-title {
-            margin-bottom: @indent-l-base;
             .title {
                 display: inline-block;
             }
diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json
index 0587e31ff58adca76379901380fc439c41b9f341..4bd7756956f05c410c74f8dcd558d774d73c4b95 100644
--- a/app/design/frontend/Magento/blank/composer.json
+++ b/app/design/frontend/Magento/blank/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/design/frontend/Magento/blank/theme.xml b/app/design/frontend/Magento/blank/theme.xml
index bef4c22e8ccff2a53191b73f431c4a581f4dc6f4..c0df4cc5bb46648db61e6218b31ccd84dcd264aa 100644
--- a/app/design/frontend/Magento/blank/theme.xml
+++ b/app/design/frontend/Magento/blank/theme.xml
@@ -24,7 +24,7 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento Blank</title>
-    <version>0.1.0-alpha101</version>
+    <version>0.1.0-alpha102</version>
     <media>
         <preview_image>media/preview.jpg</preview_image>
     </media>
diff --git a/app/design/frontend/Magento/blank/web/css/print.less b/app/design/frontend/Magento/blank/web/css/print.less
index 300de673c8dd403be7399842d7b583f4908e5bf8..c78ae331cb8a6fd78f59257ca6138a62a3268507 100644
--- a/app/design/frontend/Magento/blank/web/css/print.less
+++ b/app/design/frontend/Magento/blank/web/css/print.less
@@ -23,3 +23,93 @@
  */
 
 // Magento/blank
+.page-print {
+    .logo {
+        float: none;
+        display: block;
+        text-align: left;
+    }
+}
+@media print {
+    *{background: transparent !important;
+        color: black !important;
+        text-shadow: none !important;
+        filter: none !important;
+        -ms-filter: none !important;
+    }
+
+    // Black prints faster:h5bp.com/s
+    a,
+    a:visited {
+        text-decoration: underline !important;
+    }
+
+    // Don't show links for images, or javascript/internal links */
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+    thead {
+        display: table-header-group;
+    }
+    .table-wrapper table {
+        width: 100%;
+        td {
+            width: auto;
+        }
+        table-layout: fixed;
+        & > tfoot > tr:first-child {
+            border-top: 1px solid #999;
+        }
+    }
+    .box,
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+    img {
+        max-width: 100% !important;
+    }
+    @page {
+        margin: 1cm;
+    }
+    .block-content,
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+    .block-content {
+        page-break-before: avoid;
+    }
+    .block-title,
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+    .sidebar,
+    .nav-sections,
+    .header.content > *[class],
+    .panel.wrapper > *[class],
+    .footer.content > *[class] {
+        display: none;
+    }
+    .logo,
+    .footer .copyright {
+        display: block !important;
+        margin: 10px 0;
+    }
+    .column.main {
+        width: 100% !important;
+        float: none !important;
+    }
+    .breadcrumbs {
+        margin: 0 auto;
+        text-align: right;
+    }
+    .footer.content {
+        padding: 0;
+    }
+}
diff --git a/app/design/frontend/Magento/blank/web/css/source/abstract.less b/app/design/frontend/Magento/blank/web/css/source/abstract.less
index 2ff5714d33662de6b5c39c0d82a0f2f8c93d1165..e64e35a527d6901759fa9c89d3e9748a547742fd 100644
--- a/app/design/frontend/Magento/blank/web/css/source/abstract.less
+++ b/app/design/frontend/Magento/blank/web/css/source/abstract.less
@@ -55,12 +55,33 @@
     dt {
         float: left;
         clear: left;
-        margin: 0 10px 5px 0;
+        margin: 0 @indent-s-base @indent-xs-base 0;
     }
     dd {
         float: left;
         display: inline-block;
-        margin: 0 0 5px;
+        margin: 0 0 @indent-xs-base;
+    }
+}
+
+//
+//    Desktop
+//--------------------------------------
+.responsive(@break) when (@break = @screen-m) {
+    .abstract-product-options-list-desktop {
+        dt:after {
+            content: ': ';
+        }
+        dt {
+            float: left;
+            clear: left;
+            margin: 0 @indent-s-base @indent-xs-base 0;
+        }
+        dd {
+            float: left;
+            display: inline-block;
+            margin: 0 0 @indent-xs-base;
+        }
     }
 }
 
@@ -99,6 +120,19 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-s) {
+    .abstract-blocks-2columns-s {
+        width: 48.8%;
+        &:nth-child(odd) {
+            float: left;
+            clear: left;
+        }
+        &:nth-child(even) {
+            float: right;
+        }
+    }
+}
+
 //
 //    Reset image alignment in container
 //--------------------------------------
@@ -122,15 +156,22 @@
     border-bottom: 1px solid @color-secondary;
 }
 
+//
+//    Abstract block title
+//--------------------------------------
+.abstract-block-title {
+    > strong {
+        .heading(h3);
+    }
+    margin-bottom: 15px;
+}
+
 //
 //    Account blocks
 //--------------------------------------
 .abstract-account-blocks {
     .block-title {
-        > strong {
-            .heading(h3);
-        }
-        margin-bottom: 15px;
+        &:extend(.abstract-block-title all);
         > .action {
             margin-left: 15px;
         }
@@ -143,7 +184,7 @@
         margin: 0 0 5px;
         > .action {
             font-weight: 400;
-            margin-left: 15px;
+            margin-left: @indent-s-base;
         }
     }
     .block-content {
@@ -232,6 +273,12 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-s) {
+    .abstract-reset-left-margin-desktop-s {
+        margin-left: 0;
+    }
+}
+
 //
 //    Action with icon remove with text
 //--------------------------------------
@@ -244,7 +291,7 @@
     position: absolute;
     top: 31px; // 6px
     left: 10px;
-    margin-left: 50%; // margin-left: @form-field-type-inline-label-width + 50%;
+    margin-left: 70%; // margin-left: @form-field-type-inline-label-width + 50%;
 }
 
 //
@@ -260,12 +307,12 @@
 //
 //    Add Recipient
 //--------------------------------------
-.abstract-add-recipients {
-    .recipients {
+.abstract-add-fields {
+    .fieldset {
         margin-bottom: 50px;
-        .field {
-             .control {
-                width: 50%;
+        > .field:not(.choice) {
+            > .control {
+                width: 70%;
             }
         }
         .additional {
@@ -298,8 +345,13 @@
 //    Add Recipient for desktop
 //--------------------------------------
 .responsive(@break) when (@break = @screen-m) {
-    .abstract-add-recipients-desktop {
-        .recipients {
+    .abstract-add-fields-desktop {
+        .fieldset {
+            > .field:not(.choice) {
+                > .control {
+                    width: 50%;
+                }
+            }
             .additional {
                 .action.remove {
                     &:extend(.abstract-action-remove-desktop all);
@@ -318,6 +370,12 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-s) {
+    .abstract-margin-for-forms-desktop-s when not (@form-field-type-inline-label-width = false) and not (@form-field-type-inline-label-width = '') {
+        margin-left: @form-field-type-inline-label-width;
+    }
+}
+
 //
 //    Visually hidden / show visually hidden
 //--------------------------------------
@@ -362,12 +420,24 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-s) {
+    .abstract-add-clearfix-desktop-s {
+        .clearfix();
+    }
+}
+
 .responsive-smaller(@break) when (@break = @screen-s) {
     .abstract-add-clearfix-mobile {
         .clearfix();
     }
 }
 
+.responsive-smaller(@break) when (@break = @screen-m) {
+    .abstract-add-clearfix-mobile-m {
+        .clearfix();
+    }
+}
+
 //
 //    Box-sizing
 //--------------------------------------
@@ -381,6 +451,12 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-s) {
+    .abstract-add-box-sizing-desktop-s {
+        .box-sizing();
+    }
+}
+
 //
 //    Revert field type
 //--------------------------------------
@@ -505,6 +581,23 @@
     }
 }
 
+.responsive-smaller(@break) when (@break = @screen-s) {
+    .abstract-table-vertical-mobile-s {
+        .table-responsive();
+        tbody > tr {
+            > td {
+                padding-left: 0;
+                padding-right: 0;
+            }
+            &:not(:last-child) {
+                td:last-child {
+                    padding-bottom: @indent-base;
+                }
+            }
+        }
+    }
+}
+
 //
 //    Excl/Incl tax
 //--------------------------------------
@@ -583,20 +676,14 @@
 .abstract-checkout-product-name {
 }
 
-//
-//    Checkout order product name
-//--------------------------------------
-.abstract-product-items-summary {
-    td {
-        text-align: left;
-    }
-}
-
 //
 //    Mobile checkout order product name
 //--------------------------------------
-.responsive-smaller(@break) when (@break = @screen-m) {
+.responsive-smaller(@break) when (@break = @screen-s) {
     .abstract-product-items-summary {
+        td {
+            text-align: left;
+        }
         tbody {
             .col {
                 padding: @indent-s-base 0 0;
@@ -708,3 +795,71 @@
 .abstract-no-display {
     display: none;
 }
+
+.responsive-smaller(@break) when (@break = @screen-s) {
+    .abstract-no-display-s {
+        display: none;
+    }
+}
+
+//
+//    Status
+//--------------------------------------
+.abstract-status {
+    display: inline-block;
+    margin-bottom: @indent-base;
+}
+
+//
+//    Pager toolbar for non-catalog pages mobile
+//--------------------------------------
+.responsive-smaller(@break) when (@break = @screen-m) {
+    .abstract-pager-toolbar-mobile {
+        .toolbar-amount,
+        .limiter,
+        .pages {
+            margin-bottom: @indent-m-base;
+        }
+    }
+}
+
+//
+//    Pager toolbar for non-catalog pages mobile
+//--------------------------------------
+.responsive-smaller(@break) when (@break = @screen-s) {
+    .abstract-pager-toolbar-mobile-s {
+        .toolbar-amount,
+        .limiter,
+        .pages {
+            margin-bottom: @indent-m-base;
+        }
+    }
+}
+
+//
+//    Pager toolbar for non-catalog pages desktop
+//--------------------------------------
+.responsive(@break) when (@break = @screen-m) {
+    .abstract-pager-toolbar {
+        margin-bottom: @indent-base;
+        position: relative;
+        &:extend(.abstract-add-clearfix-desktop all);
+        .limiter {
+            float: right;
+            position: relative;
+            z-index: 1;
+        }
+        .toolbar-amount {
+            float: left;
+            line-height: normal;
+            padding: 7px 0 0;
+            position: relative;
+            z-index: 1;
+        }
+        .pages {
+            position: absolute;
+            z-index: 0;
+            width: 100%;
+        }
+    }
+}
diff --git a/app/design/frontend/Magento/blank/web/css/source/forms.less b/app/design/frontend/Magento/blank/web/css/source/forms.less
index 1da2ea7b287cc774f71dd4687d39cb0489c60646..68d56fcdda2dbaef1bd2a455212caeeeaacc0348 100644
--- a/app/design/frontend/Magento/blank/web/css/source/forms.less
+++ b/app/design/frontend/Magento/blank/web/css/source/forms.less
@@ -22,6 +22,8 @@
 //  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 //  */
 
+@form-field-vertical-indent-desktop: 29px;
+
 .fieldset {
     .legend + .fieldset,
     .legend + div {
@@ -36,7 +38,8 @@
     &:last-child {
         margin-bottom: 0;
     }
-    > .field {
+    > .field,
+    > .fields > .field {
         .form-field();
         &.no-label {
             > .label {
@@ -91,6 +94,27 @@ select:focus ~ .tooltip .tooltip-content {
     display: block;
 }
 
+//
+//    Sidebar forms
+//--------------------------------------
+.sidebar {
+    .fieldset {
+        margin: 0;
+        > .field:not(.choice) >,
+        .fields > .field {
+            margin: 0 0 @form-field-vertical-indent;
+            .label {
+                padding: 0 0 5px;
+                text-align: left;
+                width: 100%
+            }
+            .control {
+                width: 100%;
+            }
+        }
+    }
+}
+
 //
 //    Desktop
 //--------------------------------------
@@ -101,7 +125,7 @@ select:focus ~ .tooltip .tooltip-content {
         }
         > .field {
             .form-field-type-revert();
-            margin: 0 0 29px;
+            margin: 0 0 @form-field-vertical-indent-desktop;
         }
     }
 }
diff --git a/app/design/frontend/Magento/blank/web/css/source/layout.less b/app/design/frontend/Magento/blank/web/css/source/layout.less
index 95aac6d1fe43aab73e8881906332dd8b1b48d3ca..23b23a73ba0c08a849e06cf8369b73fc91331aaa 100644
--- a/app/design/frontend/Magento/blank/web/css/source/layout.less
+++ b/app/design/frontend/Magento/blank/web/css/source/layout.less
@@ -56,8 +56,9 @@
     .footer.content,
     .page.main,
     .page-wrapper > .widget,
-    .page-wrapper > .page.bottom,
-    .block.category.event {
+    .page-wrapper > .page-bottom,
+    .block.category.event,
+    .top-container {
         padding-left: @layout-width-xs-indent;
         padding-right: @layout-width-xs-indent;
     }
@@ -74,8 +75,9 @@
     .footer.content,
     .page.main,
     .page-wrapper > .widget,
-    .page-wrapper > .page.bottom,
-    .block.category.event {
+    .page-wrapper > .page-bottom,
+    .block.category.event,
+    .top-container {
         padding-left: @layout-indent;
         padding-right: @layout-indent;
         margin-left: auto;
diff --git a/app/design/frontend/Magento/blank/web/css/source/tables.less b/app/design/frontend/Magento/blank/web/css/source/tables.less
index 2f4d38a359f6d6d39efaa93faf5c00eda012d577..256e2a146ea6839fd23324693d68081cb556a565 100644
--- a/app/design/frontend/Magento/blank/web/css/source/tables.less
+++ b/app/design/frontend/Magento/blank/web/css/source/tables.less
@@ -23,12 +23,13 @@
 //  */
 
 .table-wrapper {
-    > table {
-        .table-caption(@_table-caption-hide: true);
-    }
     margin-bottom: @indent-base;
 }
 
+table {
+    .table-caption();
+}
+
 //
 //    Mobile
 //--------------------------------------
diff --git a/app/design/frontend/Magento/blank/web/css/source/typography.less b/app/design/frontend/Magento/blank/web/css/source/typography.less
index 6f8d309709cdfe44640915ee8ae468df3612c9b2..823fdeff7f4b1caa65eb9bfcc8e565a7dffa4731 100644
--- a/app/design/frontend/Magento/blank/web/css/source/typography.less
+++ b/app/design/frontend/Magento/blank/web/css/source/typography.less
@@ -58,7 +58,8 @@
 //--------------------------------------
 .responsive(@break) when (@break = @screen-m) {
     h1 {
-        font-size: @h1-font-size-desktop;
+        .css(font-size, @h1-font-size-desktop);
+        .css(margin-bottom, @h1-margin-bottom-desktop);
     }
 }
 
diff --git a/app/design/frontend/Magento/plushe/composer.json b/app/design/frontend/Magento/plushe/composer.json
index 414a86f35d5d5660b7f963bfa309d741e0033db6..128997e1ad1258311afeac3192b74540b2b7160f 100644
--- a/app/design/frontend/Magento/plushe/composer.json
+++ b/app/design/frontend/Magento/plushe/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/theme-frontend-blank": "0.1.0-alpha101",
-        "magento/framework": "0.1.0-alpha101",
+        "magento/theme-frontend-blank": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "extra": {
         "map": [
             [
diff --git a/app/design/frontend/Magento/plushe/theme.xml b/app/design/frontend/Magento/plushe/theme.xml
index d3863710ee832177fa5b9dacbb208c24fedcc9d3..3e51f53e2a125e08e692b3b102ac3a650ee1c54b 100644
--- a/app/design/frontend/Magento/plushe/theme.xml
+++ b/app/design/frontend/Magento/plushe/theme.xml
@@ -24,7 +24,7 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento Plushe</title>
-    <version>0.1.0-alpha101</version>
+    <version>0.1.0-alpha102</version>
     <parent>Magento/blank</parent>
     <media>
         <preview_image>media/preview.jpg</preview_image>
diff --git a/app/design/install/Magento/basic/theme.xml b/app/design/install/Magento/basic/theme.xml
index 1af71cdef8db8031471b5831039342a8acf0175c..f9a39ea71075458a6dd0524dd382c5b255eb23e1 100644
--- a/app/design/install/Magento/basic/theme.xml
+++ b/app/design/install/Magento/basic/theme.xml
@@ -24,5 +24,5 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento Basic</title>
-    <version>0.1.0-alpha101</version>
+    <version>0.1.0-alpha102</version>
 </theme>
diff --git a/app/etc/di.xml b/app/etc/di.xml
index a77cb7c628fb4bac9027ae309a15d69ee6fc489e..a8f3e14e5a973cdb569d150bcf92cbcf13b11c47 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -103,6 +103,8 @@
     <type name="Magento\Framework\Service\V1\Data\FilterBuilder" shared="false" />
     <type name="Magento\Framework\Service\V1\Data\SearchCriteriaBuilder" shared="false" />
     <type name="Magento\Framework\Service\Data\AttributeValueBuilder" shared="false" />
+    <type name="Magento\Framework\View\Layout\Builder" shared="false" />
+    <type name="Magento\Framework\View\Page\Builder" shared="false" />
     <type name="Magento\Framework\Message\Manager">
         <arguments>
             <argument name="session" xsi:type="object">Magento\Framework\Message\Session\Proxy</argument>
@@ -197,6 +199,7 @@
         </arguments>
     </type>
     <type name="Magento\Framework\Data\Structure" shared="false" />
+    <type name="Magento\Framework\View\Layout\Data\Structure" shared="false" />
     <type name="Magento\Core\Model\View\Design">
         <arguments>
             <argument name="storeManager" xsi:type="object">Magento\Store\Model\StoreManager\Proxy</argument>
@@ -315,10 +318,127 @@
             <argument name="paramInterpreter" xsi:type="object">Magento\Framework\Data\Argument\Interpreter\String</argument>
         </arguments>
     </type>
+    <virtualType name="containerRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="block" xsi:type="string">Magento\Framework\View\Layout\Reader\Block</item>
+                <item name="uicomponent" xsi:type="string">Magento\Framework\View\Layout\Reader\UiComponent</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Layout\Reader\Container">
+        <arguments>
+            <argument name="readerPool" xsi:type="object">containerRenderPool</argument>
+        </arguments>
+    </type>
+    <virtualType name="blockRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="block" xsi:type="string">Magento\Framework\View\Layout\Reader\Block</item>
+                <item name="uicomponent" xsi:type="string">Magento\Framework\View\Layout\Reader\UiComponent</item>
+                <item name="move" xsi:type="string">Magento\Framework\View\Layout\Reader\Move</item>
+                <item name="remove" xsi:type="string">Magento\Framework\View\Layout\Reader\Remove</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Layout\Reader\Block">
+        <arguments>
+            <argument name="readerPool" xsi:type="object">blockRenderPool</argument>
+            <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Framework\View\Layout\Reader\UiComponent">
+        <arguments>
+            <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
+        </arguments>
+    </type>
+    <virtualType name="bodyRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="block" xsi:type="string">Magento\Framework\View\Layout\Reader\Block</item>
+                <item name="move" xsi:type="string">Magento\Framework\View\Layout\Reader\Move</item>
+                <item name="remove" xsi:type="string">Magento\Framework\View\Layout\Reader\Remove</item>
+                <item name="uicomponent" xsi:type="string">Magento\Framework\View\Layout\Reader\UiComponent</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Page\Config\Reader\Body">
+        <arguments>
+            <argument name="readerPool" xsi:type="object">bodyRenderPool</argument>
+        </arguments>
+    </type>
+    <virtualType name="commonRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="html" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Html</item>
+                <item name="head" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Head</item>
+                <item name="body" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Body</item>
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="block" xsi:type="string">Magento\Framework\View\Layout\Reader\Block</item>
+                <item name="move" xsi:type="string">Magento\Framework\View\Layout\Reader\Move</item>
+                <item name="remove" xsi:type="string">Magento\Framework\View\Layout\Reader\Remove</item>
+                <item name="uicomponent" xsi:type="string">Magento\Framework\View\Layout\Reader\UiComponent</item>
+            </argument>
+        </arguments>
+    </virtualType>
     <type name="Magento\Framework\View\Layout">
+        <arguments>
+            <argument name="reader" xsi:type="object" shared="false">commonRenderPool</argument>
+        </arguments>
+    </type>
+    <virtualType name="genericLayoutRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="container" xsi:type="string">Magento\Framework\View\Layout\Reader\Container</item>
+                <item name="block" xsi:type="string">Magento\Framework\View\Layout\Reader\Block</item>
+                <item name="move" xsi:type="string">Magento\Framework\View\Layout\Reader\Move</item>
+                <item name="remove" xsi:type="string">Magento\Framework\View\Layout\Reader\Remove</item>
+                <item name="uicomponent" xsi:type="string">Magento\Framework\View\Layout\Reader\UiComponent</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Result\Layout">
+        <arguments>
+            <argument name="layoutReaderPool" xsi:type="object">genericLayoutRenderPool</argument>
+        </arguments>
+    </type>
+    <virtualType name="pageConfigRenderPool" type="Magento\Framework\View\Layout\Reader\Pool">
+        <arguments>
+            <argument name="readers" xsi:type="array">
+                <item name="html" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Html</item>
+                <item name="head" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Head</item>
+                <item name="body" xsi:type="string">Magento\Framework\View\Page\Config\Reader\Body</item>
+            </argument>
+        </arguments>
+    </virtualType>
+    <type name="Magento\Framework\View\Layout\GeneratorPool">
+        <arguments>
+            <argument name="generators" xsi:type="array">
+                <item name="head" xsi:type="object">Magento\Framework\View\Page\Config\Generator\Head</item>
+                <item name="body" xsi:type="object">Magento\Framework\View\Page\Config\Generator\Body</item>
+                <item name="block" xsi:type="object">Magento\Framework\View\Layout\Generator\Block</item>
+                <item name="container" xsi:type="object">Magento\Framework\View\Layout\Generator\Container</item>
+                <item name="ui_component" xsi:type="object">Magento\Framework\View\Layout\Generator\UiComponent</item>
+            </argument>
+        </arguments>
+    </type>
+    <type name="Magento\Framework\View\Result\Page">
+        <arguments>
+            <argument name="layoutReaderPool" xsi:type="object">pageConfigRenderPool</argument>
+            <argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Framework\View\Layout\Generator\Block">
+        <arguments>
+            <argument name="argumentInterpreter" xsi:type="object">layoutArgumentInterpreter</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Framework\View\Layout\Generator\UiComponent">
         <arguments>
             <argument name="argumentInterpreter" xsi:type="object">layoutArgumentInterpreter</argument>
-            <argument name="scopeType" xsi:type="const">Magento\Store\Model\ScopeInterface::SCOPE_STORE</argument>
         </arguments>
     </type>
     <type name="Magento\Framework\Mview\View">
@@ -426,9 +546,4 @@
             </argument>
         </arguments>
     </type>
-    <type name="Magento\Framework\View\Result\Page">
-        <arguments>
-            <argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
-        </arguments>
-    </type>
 </config>
diff --git a/app/i18n/magento/de_de/composer.json b/app/i18n/magento/de_de/composer.json
index 7edb862a4cddac711553d37a724f693a1055b718..a26529f6fa328a53ec1897338a9cde7fee5a8488 100644
--- a/app/i18n/magento/de_de/composer.json
+++ b/app/i18n/magento/de_de/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-de_de",
     "description": "German (Germany) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/en_us/composer.json b/app/i18n/magento/en_us/composer.json
index 720bbf2ee72f0e1247d7c13c4d23f495c4b66a93..dce772e9fd5397ceac1d7d125717d8a854bc8e4d 100644
--- a/app/i18n/magento/en_us/composer.json
+++ b/app/i18n/magento/en_us/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-en_us",
     "description": "English (United States) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/es_es/composer.json b/app/i18n/magento/es_es/composer.json
index c88686b4d7d2441f15c11bc21c8ff7c67fdcfe92..2e2c1cefdfc8af2940ce1f4403c32101109bbe66 100644
--- a/app/i18n/magento/es_es/composer.json
+++ b/app/i18n/magento/es_es/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-es_es",
     "description": "Spanish (Spain) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/fr_fr/composer.json b/app/i18n/magento/fr_fr/composer.json
index adee97fc7b09a8ce653f53c7b05189650e7de2cd..1e96fab82da5dc5674f72da109ea2364ac1da1e9 100644
--- a/app/i18n/magento/fr_fr/composer.json
+++ b/app/i18n/magento/fr_fr/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-fr_fr",
     "description": "French (France) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/nl_nl/composer.json b/app/i18n/magento/nl_nl/composer.json
index de4c770dc60fd0c5dbb4638ae83832569f33553b..63b823e5d5476eba701437a07e395473c25e7cf8 100644
--- a/app/i18n/magento/nl_nl/composer.json
+++ b/app/i18n/magento/nl_nl/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-nl_nl",
     "description": "Dutch (Netherlands) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/pt_br/composer.json b/app/i18n/magento/pt_br/composer.json
index ce14b41eec2527803788f766b945a15a9fa88cc4..adb63f32172e89a73ea1a8ef7f7bdf7b7e891f7a 100644
--- a/app/i18n/magento/pt_br/composer.json
+++ b/app/i18n/magento/pt_br/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-pt_br",
     "description": "Portuguese (Brazil) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/zh_cn/composer.json b/app/i18n/magento/zh_cn/composer.json
index 694f1f684bd3534415d30233785daa9835c4f514..ec0e7ec71a8611738f5b188dc86c0dfaf866e7dd 100644
--- a/app/i18n/magento/zh_cn/composer.json
+++ b/app/i18n/magento/zh_cn/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-zh_cn",
     "description": "Chinese (China) language",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
-        "magento/framework": "0.1.0-alpha101",
+        "magento/framework": "0.1.0-alpha102",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/composer.json b/composer.json
index 218249b198da7faef1968a0ae52777837bc5ed08..f0bf973c2669671bd2116a16a9d11c56bcd2861b 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/project-community-edition",
     "description": "Magento project (Community Edition)",
     "type": "project",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
         "php": "~5.4.11|~5.5.0",
         "zendframework/zend-stdlib": "2.0.3"
diff --git a/dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/DatepickerElement.php b/dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/DatepickerElement.php
index 5d1f89325ac503c109a9f5f0ceedf8d694711714..0df094144289a28bc644d99e063742254ff12d47 100644
--- a/dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/DatepickerElement.php
+++ b/dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/DatepickerElement.php
@@ -29,55 +29,54 @@ use Mtf\Client\Element as ElementInterface;
 use Mtf\Client\Element\Locator;
 
 /**
- * Class DatepickerElement
  * General class for datepicker elements.
  */
 class DatepickerElement extends Element
 {
     /**
-     * DatePicker button
+     * DatePicker button.
      *
      * @var string
      */
     protected $datePickerButton = './../img[contains(@class,"ui-datepicker-trigger")]';
 
     /**
-     * DatePicker block
+     * DatePicker block.
      *
      * @var string
      */
     protected $datePickerBlock = './ancestor::body//*[@id="ui-datepicker-div"]';
 
     /**
-     * Field Month on the DatePicker
+     * Field Month on the DatePicker.
      *
      * @var string
      */
     protected $datePickerMonth = './/*[contains(@class,"ui-datepicker-month")]';
 
     /**
-     * Field Year on the DatePicker
+     * Field Year on the DatePicker.
      *
      * @var string
      */
     protected $datePickerYear = './/*[contains(@class,"ui-datepicker-year")]';
 
     /**
-     * Calendar on the DatePicker
+     * Calendar on the DatePicker.
      *
      * @var string
      */
     protected $datePickerCalendar = './/*[contains(@class,"ui-datepicker-calendar")]//*/td/a[text()="%s"]';
 
     /**
-     * DatePicker button 'Close'
+     * DatePicker button 'Close'.
      *
      * @var string
      */
     protected $datePickerButtonClose = './/*[contains(@class,"ui-datepicker-close")]';
 
     /**
-     * Set the date from datePicker
+     * Set the date from datePicker.
      *
      * @param string $value
      * @return void
@@ -97,15 +96,20 @@ class DatepickerElement extends Element
     }
 
     /**
-     * Parse date from string to array
+     * Parse date from string to array.
      *
      * @param string $value
      * @return array
      */
     protected function parseDate($value)
     {
+        $formatDate = '%b %d, %Y %I:%M %p';
+        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+            $formatDate = str_replace('%d', '%#d', $formatDate);
+        }
+
         $date = strtotime($value);
-        $date = strftime("%b %#d, %Y %I:%M %p", $date);
+        $date = strftime($formatDate, $date);
         $date = preg_split('/[,\s]/', $date);
         array_splice($date, 2, 1);
 
diff --git a/dev/tests/functional/lib/Mtf/Constraint/AbstractAssertForm.php b/dev/tests/functional/lib/Mtf/Constraint/AbstractAssertForm.php
index 5247d1821cea585f2de55b6439d18a30fe885dcb..9e9f2e3132faf6ae31cae428ce2a24687164ccf3 100755
--- a/dev/tests/functional/lib/Mtf/Constraint/AbstractAssertForm.php
+++ b/dev/tests/functional/lib/Mtf/Constraint/AbstractAssertForm.php
@@ -36,14 +36,21 @@ namespace Mtf\Constraint;
 abstract class AbstractAssertForm extends AbstractConstraint
 {
     /**
-     * Skipped fields for verify data
+     * Notice message.
+     *
+     * @var string
+     */
+    protected $notice = "\nForm data not equals to passed from fixture:\n";
+
+    /**
+     * Skipped fields for verify data.
      *
      * @var array
      */
     protected $skippedFields = [];
 
     /**
-     * Verify fixture and form data
+     * Verify fixture and form data.
      *
      * @param array $fixtureData
      * @param array $formData
@@ -99,7 +106,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
     }
 
     /**
-     * Sort array by value
+     * Sort array by value.
      *
      * @param array $data
      * @return array
@@ -128,7 +135,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
     }
 
     /**
-     * Sort multidimensional array by paths
+     * Sort multidimensional array by paths.
      * Pattern path: key/subKey::sorkKey.
      * Exapmle:
      * $data = [
@@ -193,7 +200,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
     }
 
     /**
-     * Sort multidimensional array by key
+     * Sort multidimensional array by key.
      *
      * @param array $data
      * @param string $orderKey
@@ -216,7 +223,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
     }
 
     /**
-     * Convert array to string
+     * Convert array to string.
      *
      * @param array $array
      * @return string
@@ -233,7 +240,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
     }
 
     /**
-     * Prepare errors to string
+     * Prepare errors to string.
      *
      * @param array $errors
      * @param string|null $notice
@@ -254,7 +261,7 @@ abstract class AbstractAssertForm extends AbstractConstraint
         }
 
         if (null === $notice) {
-            $notice = "\nForm data not equals to passed from fixture:\n";
+            $notice = $this->notice;
         }
         return $notice . implode("\n", $result);
     }
diff --git a/dev/tests/functional/lib/Mtf/Util/Generate/TestCase.php b/dev/tests/functional/lib/Mtf/Util/Generate/TestCase.php
deleted file mode 100644
index cc2b06011c884d31a362ca31b57619f9dcfe3f1c..0000000000000000000000000000000000000000
--- a/dev/tests/functional/lib/Mtf/Util/Generate/TestCase.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Mtf\Util\Generate;
-
-use Mtf\Util\Protocol\CurlInterface;
-use Mtf\Util\Protocol\CurlTransport;
-use Magento\Framework\App;
-
-/**
- * Class TestCaseClass
- * TestCase Classes generator based on Jira ticket
- *
- * @api
- */
-class TestCase extends AbstractGenerate
-{
-    /**
-     * Jira configuration
-     *
-     * @var array
-     */
-    protected $config = array(
-        'username' => '_metrics-api',
-        'password' => 'm3tric5ap1',
-        'url' => 'http://jira.corp.x.com/rest/api/2/',
-    );
-
-    /**
-     * Generate test cases
-     */
-    public function launch()
-    {
-        $this->generateXml();
-        $this->generateClasses();
-    }
-
-    /**
-     * Generate TestCase XML
-     */
-    public function generateXml()
-    {
-        $xml = simplexml_load_file(__DIR__ . '/testcase.xml');
-        $xmlObject = new \SimpleXMLElement($xml->asXML());
-
-        foreach ($xmlObject as $item) {
-            $data = $this->getTicketData((array)$item);
-
-            foreach ($data as $key => $field) {
-                if ($item->xpath($key)) {
-                    continue;
-                }
-                if (!is_array($field)) {
-                    $item->addChild($key, $field);
-                } else {
-                    $node = $item->addChild($key);
-                    foreach ($field as $value) {
-                        $node->addChild(substr($key, 0, -1), $value);
-                    }
-                }
-            }
-            $this->cnt++;
-        }
-
-        // Format XML file
-        $dom = new \DOMDocument("1.0");
-        $dom->preserveWhiteSpace = false;
-        $dom->formatOutput = true;
-        $dom->loadXML($xmlObject->asXML());
-        $dom->save(__DIR__ . '/testcase.xml');
-
-        \Mtf\Util\Generate\GenerateResult::addResult('Test Case Tickets', $this->cnt);
-    }
-
-    /**
-     * Connect to Jira for getting information about ticket
-     *
-     * @param string $jiraTicket
-     *
-     * @return array
-     * @throws \Exception
-     * @SuppressWarnings(PHPMD.NPathComplexity)
-     */
-    protected function getTicketData($jiraTicket)
-    {
-        if (!isset($jiraTicket['id'])) {
-            throw new \Exception('Test case item #' . $this->cnt . ' does not have ticket id.');
-        }
-        $ticketId = $jiraTicket['id'];
-        $credentials = $this->config['username'] . ':'
-            . $this->config['password'];
-        $url = $this->config['url'] . 'issue/' . $ticketId;
-
-        $curl = new CurlTransport();
-        $curl->setOptions([CURLOPT_SSL_VERIFYPEER => false, CURLOPT_USERPWD => $credentials]);
-        $curl->write(CurlInterface::GET, $url, '1.0');
-        $response = $curl->read();
-        $curl->close();
-
-        $issue = json_decode($response, true);
-        if ($issue === null) {
-            throw new \Exception('Connection to Jira has been failed, verify jira config file settings.');
-        }
-
-        $ticketData = [];
-        $ticketData['ticketId'] = $jiraTicket['id'];
-        // Get ticket name
-        $stringRemove = [
-            'Cover ',
-            'Test Creation for ',
-            'with functional test designed for automation'
-        ];
-
-        $ticketData['name'] = str_replace(' ', '', ucwords(str_replace($stringRemove, '', $issue['fields']['summary'])))
-            . 'Test';
-        $ticketData['description'] = $issue['fields']['summary'];
-
-        // Get 'Magento Module' value
-        $ticketData['module'] = isset($issue['fields']['customfield_13222']['value'])
-            ? $issue['fields']['customfield_13222']['value']
-            : null;
-
-        // Get ticket components
-        if (isset($issue['fields']['components'])) {
-            foreach ($issue['fields']['components'] as $component) {
-                $ticketData['components'][] = $component['name'];
-            }
-        }
-
-        // Get test case steps form ticket description
-        $stepsDelimiter = "*Test Flow:*\r\n";
-        preg_match('/' . preg_quote($stepsDelimiter) . '((\s)*\S)*/', $issue['fields']['description'], $matches);
-
-        $ticketData['steps'] = empty($matches)
-            ? []
-            : explode("\r\n", str_replace([$stepsDelimiter, '#'], '', $matches[0]));
-
-        return $ticketData;
-    }
-
-    /**
-     * Generate Test Cases Classes
-     *
-     * @return void
-     */
-    public function generateClasses()
-    {
-        $this->cnt = 0;
-
-        $xmlObject = simplexml_load_file(__DIR__ . '/testcase.xml');
-        foreach ($xmlObject as $item) {
-            /** @var $item \SimpleXMLElement */
-            $this->generateTestCaseClass($item);
-        }
-
-        \Mtf\Util\Generate\GenerateResult::addResult('Test Case Classes', $this->cnt);
-    }
-
-    /**
-     * Generate test case class from XML source
-     *
-     * @param \SimpleXMLElement $item
-     * @return void
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
-     * @SuppressWarnings(PHPMD.NPathComplexity)
-     */
-    private function generateTestCaseClass(\SimpleXMLElement $item)
-    {
-        $className = (string)$item->name;
-        $ticketId = (string)$item->ticketId;
-        $description = (string)$item->description;
-        $module = property_exists($item->attributes(), 'module')
-            ? (string)$item->attributes()->module
-            : 'Magento\\' . (string)$item->module;
-        $namespace = property_exists($item, 'namespace')
-            ? (string)$item->namespace
-            : $module . '\\Test\\TestCase';
-        $steps = (array)$item->steps->step;
-        $groups = (array)$item->components->component;
-
-        $content = "<?php\n";
-        $content .= "/**\n";
-        $content .= " * {license_notice}\n";
-        $content .= " *\n";
-        $content .= " * @copyright   {copyright}\n";
-        $content .= " * @license     {license_link}\n";
-        $content .= " */\n\n";
-        $content .= "namespace {$namespace};\n\n";
-        $content .= "use Mtf\\TestCase\\Injectable;\n\n";
-
-        $content .= "/**\n";
-        $content .= " * {$description}\n";
-        $content .= " *\n";
-        $content .= " * Test Flow:";
-        $stepNum = 1;
-        foreach ($steps as $step) {
-            $content .= "\n * {$stepNum}." . htmlspecialchars_decode($step);
-            ++$stepNum;
-        }
-        if ($groups) {
-            $content .= "\n *";
-            $content .= "\n * @group ";
-            $content .= implode(', ', str_replace(' ', '_', $groups));
-        }
-        $content .= "\n * @ZephyrId {$ticketId}\n";
-        $content .= " */\n";
-
-        $content .= "class {$className} extends Injectable\n";
-        $content .= "{\n";
-
-        $injectArgumentsArray = [];
-        $injectArgumentsXml = $item->xpath('inject');
-        if ($injectArgumentsXml) {
-            foreach ($injectArgumentsXml[0] as $injectArgument) {
-                $injectArgumentsArray[] = $injectArgument->class . ' $'
-                    . lcfirst($this->toCamelCase($injectArgument->getName()));
-            }
-        }
-        $injectArguments = implode(', ', $injectArgumentsArray);
-
-        $content .= '    public function __inject(' . $injectArguments . ')' . "\n";
-        $content .= "    {\n";
-        $content .= "        // \n";
-        $content .= "    }\n\n";
-
-        $invokeArgumentsArray = [];
-        $invokeArgumentsXml = $item->xpath('invoke');
-        if ($invokeArgumentsXml) {
-            foreach ($invokeArgumentsXml[0] as $invokeArgument) {
-                $invokeArgumentsArray[] = $invokeArgument->class . ' $'
-                    . lcfirst($this->toCamelCase($invokeArgument->getName()));
-            }
-        }
-        $invokeArguments = implode(', ', $invokeArgumentsArray);
-
-        $content .= '    public function test(' . $invokeArguments . ')' . "\n";
-        $content .= "    {\n";
-        $content .= "        // \n";
-        $content .= "    }\n";
-        $content .= "}\n";
-
-        $generatedFolderPath =  MTF_TESTS_PATH . str_replace('\\', '/', $namespace);
-        $newFileName = $className . '.php';
-        $newFilePath = $generatedFolderPath . '/' . $newFileName;
-
-        if (file_exists($newFilePath)) {
-            return;
-        }
-
-        if (!is_dir($generatedFolderPath)) {
-            mkdir($generatedFolderPath, 0777, true);
-        }
-
-        file_put_contents($newFilePath, $content);
-        touch($newFilePath);
-
-        $this->cnt++;
-    }
-}
diff --git a/dev/tests/functional/lib/Mtf/Util/Generate/testcase.xml b/dev/tests/functional/lib/Mtf/Util/Generate/testcase.xml
deleted file mode 100644
index e98ae08401e3f6c2b91ea99f2c09bfcece60303a..0000000000000000000000000000000000000000
--- a/dev/tests/functional/lib/Mtf/Util/Generate/testcase.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<testcases>
-    <testcase module="Magento\Tax">
-        <id>MTA-120</id>
-        <ticketId>MTA-120</ticketId>
-        <name>CreateTaxRateEntityTest</name>
-        <description>Test Creation for CreateTaxRateEntity</description>
-        <module>Tax</module>
-        <components>
-            <component>Tax (CS)</component>
-        </components>
-        <steps>
-            <step/>
-            <step>Steps:</step>
-            <step>Log in as default admin user.</step>
-            <step>Go to Stores &gt; Taxes &gt; Tax Zones and Rates.</step>
-            <step>Click 'Add New Tax Rate' button.</step>
-            <step>Fill in data according to dataSet</step>
-            <step>Save Tax Rate.</step>
-            <step>Perform all assertions.</step>
-        </steps>
-    </testcase>
-    <testcase>
-        <id>MTA-128</id>
-        <ticketId>MTA-128</ticketId>
-        <name>SuggestSearchingResult(SearchEntity)WithFucntionalTestsDesignedForAutomationTest</name>
-        <description>Cover Suggest Searching Result (SearchEntity) with fucntional tests designed for automation</description>
-        <module>Search</module>
-        <components>
-            <component>Search Frontend (CS)</component>
-        </components>
-        <steps/>
-    </testcase>
-    <testcase>
-        <id>MTA-15</id>
-        <ticketId>MTA-15</ticketId>
-        <name>CreateDownloadableProductEntityTest</name>
-        <description>Test Creation for Create DownloadableProductEntity </description>
-        <module>Catalog</module>
-        <components>
-            <component>Downloadable Product (CS)</component>
-        </components>
-        <steps>
-            <step>Log in to Backend.</step>
-            <step>Navigate to Products &gt; Catalog.</step>
-            <step>Start to create new Downloadable product.</step>
-            <step>Fill in data according to data set.</step>
-            <step>Fill Downloadable Information tab according to data set.</step>
-            <step>Save product.</step>
-            <step>Verify created product.</step>
-        </steps>
-    </testcase>
-    <testcase>
-        <id>MTA-93</id>
-        <ticketId>MTA-93</ticketId>
-        <name>AdvancedSearchEntityTest</name>
-        <description>Test Creation for AdvancedSearchEntity</description>
-        <module>CatalogSearch</module>
-        <components>
-            <component>Search Frontend (MX)</component>
-        </components>
-        <steps>
-            <step/>
-            <step>Preconditions:</step>
-            <step> Two specific simple product is created(unique sku,name,short/full description, tax class)</step>
-            <step/>
-            <step>Steps</step>
-            <step>Navigate to Frontend</step>
-            <step>Click "Advanced Search"</step>
-            <step>Fill test data in to field(s)</step>
-            <step>Click "Search" button</step>
-            <step>Perform all asserts</step>
-        </steps>
-    </testcase>
-    <testcase>
-        <id>MTA-129</id>
-        <ticketId>MTA-129</ticketId>
-        <name>SearchEntityResultsTest</name>
-        <description>Test Creation for SearchEntity results</description>
-        <module>Search</module>
-        <components>
-            <component>Search Frontend (MX)</component>
-        </components>
-        <step>Preconditions:</step>
-        <step>1. All product types are created.</step>
-        <step/>
-        <step>Steps:</step>
-        <step>1. Navigate to frontend on index page.</step>
-        <step>2. Input test data into "search field" and press Enter key.</step>
-        <step>3. Perform all assertions.</step>
-    </testcase>
-</testcases>
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Grid.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Grid.php
index 6a3dc743dfb0094a92c2f92d1ef5c0b5af957178..567b715088ceb8fba01cb955c221d97203751676 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Grid.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Grid.php
@@ -402,7 +402,7 @@ abstract class Grid extends Block
             $this->search($filter);
         }
         $location = '//div[@class="grid"]//tr[';
-        $rowTemplate = 'td[contains(text(),normalize-space("%s"))]';
+        $rowTemplate = 'td[contains(.,normalize-space("%s"))]';
         if ($isStrict) {
             $rowTemplate = 'td[text()[normalize-space()="%s"]]';
         }
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Catalog/Product/View.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Catalog/Product/View.php
index 7908bd66a94f50d5bd7a93c1e30b578cc9cbfc51..2b95d3fe47086cbb53fc58305b861d85184ef9e2 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Catalog/Product/View.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Catalog/Product/View.php
@@ -32,12 +32,12 @@ use Magento\Bundle\Test\Fixture\BundleProduct;
 
 /**
  * Class View
- * Bundle product view block on the product page
+ * Bundle product view block on the product page.
  */
 class View extends \Magento\Catalog\Test\Block\Product\View
 {
     /**
-     * Customize and add to cart button selector
+     * Customize and add to cart button selector.
      *
      * @var string
      */
@@ -51,14 +51,14 @@ class View extends \Magento\Catalog\Test\Block\Product\View
     protected $bundleBlock = '//*[@id="product-options-wrapper"]//fieldset[contains(@class,"bundle")]';
 
     /**
-     * Selector for visible bundle options block
+     * Selector for visible bundle options block.
      *
      * @var string
      */
     protected $visibleOptions = '//*[@class="product-add-form"][contains(@style,"block")]';
 
     /**
-     * Get bundle options block
+     * Get bundle options block.
      *
      * @return Bundle
      */
@@ -82,7 +82,7 @@ class View extends \Magento\Catalog\Test\Block\Product\View
     }
 
     /**
-     * Return product options
+     * Return product options.
      *
      * @param FixtureInterface $product [optional]
      * @return array
@@ -99,7 +99,7 @@ class View extends \Magento\Catalog\Test\Block\Product\View
     }
 
     /**
-     * Fill in the option specified for the product
+     * Fill in the option specified for the product.
      *
      * @param FixtureInterface $product
      * @return void
@@ -118,17 +118,8 @@ class View extends \Magento\Catalog\Test\Block\Product\View
             $bundleCheckoutData = $product->getSelectionData();
         }
         if (!$this->getBundleBlock()->isVisible()) {
-            $this->_rootElement->find($this->customizeButton)->click();
+            $this->clickCustomize();
         }
-        $element = $this->_rootElement;
-        $this->_rootElement->waitUntil(
-            function () use ($element) {
-                $bundleOptionsBlock = $element->find($this->visibleOptions, Locator::SELECTOR_XPATH);
-                return $bundleOptionsBlock->isVisible() ? true : null;
-            }
-        );
         $this->getBundleBlock()->fillBundleOptions($bundleCheckoutData);
-
-        parent::fillOptions($product);
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/BundleSelections.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/BundleSelections.php
index df5eb27890fee9ee898118924c5d531b70d0505f..4ae171f44563d749b5d2898a38560f4939617360 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/BundleSelections.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/BundleSelections.php
@@ -58,8 +58,9 @@ class BundleSelections implements FixtureInterface
     public function __construct(FixtureFactory $fixtureFactory, array $data, array $params = [])
     {
         $this->params = $params;
+        $this->data = !isset($data['preset']) ? $data : [];
 
-        if ($data['preset']) {
+        if (isset($data['preset'])) {
             $this->data = $this->getPreset($data['preset']);
             if (!empty($data['products'])) {
                 $this->data['products'] = [];
@@ -76,6 +77,10 @@ class BundleSelections implements FixtureInterface
             foreach ($productsSelections as $index => $products) {
                 $productSelection = [];
                 foreach ($products as $key => $product) {
+                    if ($product instanceof FixtureInterface) {
+                        $productSelection[$key] = $product;
+                        continue;
+                    }
                     list($fixture, $dataSet) = explode('::', $product);
                     $productSelection[$key] = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
                     $productSelection[$key]->persist();
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/CheckoutData.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/CheckoutData.php
index 7a49920da14c334e6ee7ee77b5f8fd9b692ffe9d..efbc3c0daf5dd067c76e65f73100721e2fb8c33d 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/CheckoutData.php
@@ -95,6 +95,25 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
                     'subtotal' => 756
                 ]
             ],
+            'forUpdateMiniShoppingCart' => [
+                'options' => [
+                    'bundle_options' => [
+                        [
+                            'title' => 'Drop-down Option',
+                            'type' => 'Drop-down',
+                            'value' => [
+                                'name' => 'Simple Product'
+                            ]
+                        ]
+                    ],
+                ],
+                'qty' => 1,
+                'cartItem' => [
+                    'price' => 756,
+                    'qty' => 1,
+                    'subtotal' => 756
+                ]
+            ],
             'with_not_required_options' => [
                 'options' => [
                     'bundle_options' => [
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
index 9acf53df98d599f3020c32c5cbaea7801baf18b2..dc2b8ceac32731a2b5976e49c0bbfec88b43dea3 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
@@ -62,9 +62,11 @@ class Price implements FixtureInterface
      * @param array $params
      * @param array $data [optional]
      */
-    public function __construct(array $params, array $data = [])
+    public function __construct(array $params, $data = [])
     {
         $this->params = $params;
+        $this->data = (!isset($data['value']) && !isset($data['preset'])) ? $data : [];
+
         $this->data = (isset($data['value']) && $data['value'] != '-') ? $data['value'] : null;
         if (isset($data['preset'])) {
             $this->currentPreset = $data['preset'];
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Adminhtml/OrderCreateIndex.xml b/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Adminhtml/OrderCreateIndex.xml
index 7b2533af13440c4ec3b39f888a1acc78f42c5c7b..20e76d85f0315e6df190c3d1a0d5b4a01c43f4d5 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Adminhtml/OrderCreateIndex.xml
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Adminhtml/OrderCreateIndex.xml
@@ -33,4 +33,4 @@
             </renders>
         </configureProductBlock>
     </blocks>
-</page>
\ No newline at end of file
+</page>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/AbstractConfigureBlock.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/AbstractConfigureBlock.php
index a7a227b0ce82c31606df3d0d1d922cffe302de51..9a7d9969a604e05380054b41e2d22ca325a71d36 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/AbstractConfigureBlock.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/AbstractConfigureBlock.php
@@ -70,6 +70,11 @@ abstract class AbstractConfigureBlock extends Form
         $typeId = isset($dataConfig['type_id']) ? $dataConfig['type_id'] : null;
         $checkoutData = null;
 
+        /** @var CatalogProductSimple $product */
+        if ($this->hasRender($typeId)) {
+            $this->callRender($typeId, 'fillOptions', ['product' => $product]);
+        }
+
         if ($product instanceof InjectableFixture) {
             /** @var CatalogProductSimple $product */
             $checkoutData = $product->getCheckoutData();
@@ -83,11 +88,6 @@ abstract class AbstractConfigureBlock extends Form
             $checkoutCustomOptions = $this->prepareCheckoutData($customOptions, $checkoutCustomOptions);
             $this->getCustomOptionsBlock()->fillCustomOptions($checkoutCustomOptions);
         }
-
-        /** @var CatalogProductSimple $product */
-        if ($this->hasRender($typeId)) {
-            $this->callRender($typeId, 'fillOptions', ['product' => $product]);
-        }
     }
 
     /**
@@ -117,11 +117,11 @@ abstract class AbstractConfigureBlock extends Form
                 $result[] = [
                     'type' => strtolower(preg_replace('/[^a-z]/i', '', $options[$attribute]['type'])),
                     'title' => isset($options[$attribute]['title'])
-                        ? $options[$attribute]['title']
-                        : $attribute,
+                            ? $options[$attribute]['title']
+                            : $attribute,
                     'value' => isset($options[$attribute]['options'][$option]['title'])
-                        ? $options[$attribute]['options'][$option]['title']
-                        : $option
+                            ? $options[$attribute]['options'][$option]['title']
+                            : $option
                 ];
             }
         }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Grid.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Grid.php
index 6733df818beb91fe7d1acd5bd34d14a10dfc06ac..3e14b58ae0d4e25da957ee0387bb613b458812c3 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Grid.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Grid.php
@@ -67,6 +67,10 @@ class Grid extends ParentGrid
         'status' => [
             'selector' => '#productGrid_product_filter_status',
             'input' => 'select'
+        ],
+        'set_name' => [
+            'selector' => '#productGrid_product_filter_set_name',
+            'input' => 'select'
         ]
     ];
 
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/ProductForm.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/ProductForm.php
index 92061c60d8980f06e3b676da09a47c3d939a5854..00671d7433cba9a5fddbeca422ddc342dafcd755 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/ProductForm.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/ProductForm.php
@@ -147,7 +147,7 @@ class ProductForm extends FormTabs
                 $category = reset($categories);
             }
             if ($category) {
-                $tabs['product-details']['category_ids']['value'] = ($category instanceof InjectableFixture )
+                $tabs['product-details']['category_ids']['value'] = ($category instanceof InjectableFixture)
                     ? $category->getName()
                     : $category->getCategoryName();
             }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
index 7b1a718a69e5e1f70dac0b435ebcc356cd72c58f..8f4283551d8732b6b09edaac69011b165aa64188 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
@@ -30,6 +30,7 @@ use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
 
 /**
  * Class AssertProductInGrid
+ * Assert that product is present in products grid.
  */
 class AssertProductInGrid extends AbstractConstraint
 {
@@ -41,7 +42,14 @@ class AssertProductInGrid extends AbstractConstraint
     protected $severeness = 'high';
 
     /**
-     * Assert product availability in products grid
+     * Product fixture
+     *
+     * @var FixtureInterface $product
+     */
+    protected $product;
+
+    /**
+     * Assert that product is present in products grid and can be found by sku, type, status and attribute set.
      *
      * @param FixtureInterface $product
      * @param CatalogProductIndex $productGrid
@@ -49,16 +57,50 @@ class AssertProductInGrid extends AbstractConstraint
      */
     public function processAssert(FixtureInterface $product, CatalogProductIndex $productGrid)
     {
-        $filter = ['sku' => $product->getSku()];
+        $this->product = $product;
         $productGrid->open();
         \PHPUnit_Framework_Assert::assertTrue(
-            $productGrid->getProductGrid()->isRowVisible($filter),
-            'Product with sku \'' . $product->getSku() . '\' is absent in Products grid.'
+            $productGrid->getProductGrid()->isRowVisible($this->prepareFilter()),
+            'Product \'' . $this->product->getName() . '\' is absent in Products grid.'
         );
     }
 
     /**
-     * Returns a string representation of the object
+     * Prepare filter for product grid.
+     *
+     * @return array
+     */
+    protected function prepareFilter()
+    {
+        $productStatus = ($this->product->getStatus() === null || $this->product->getStatus() === 'Product online')
+            ? 'Enabled'
+            : 'Disabled';
+        $filter = [
+            'type' => $this->getProductType(),
+            'sku' => $this->product->getSku(),
+            'status' => $productStatus,
+        ];
+        if ($this->product->hasData('attribute_set_id')) {
+            $filter['set_name'] = $this->product->getAttributeSetId();
+        }
+
+        return $filter;
+    }
+
+    /**
+     * Get product type
+     *
+     * @return string
+     */
+    protected function getProductType()
+    {
+        $config = $this->product->getDataConfig();
+
+        return ucfirst($config['type_id']) . ' Product';
+    }
+
+    /**
+     * Returns a string representation of the object.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.php
index 357fe6c9172ad0dc2ac494320b861f0530a58a92..65943abe37a7c0a764cf4fa34a368a7a47a1389c 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.php
@@ -630,6 +630,11 @@ class CatalogProductSimple extends InjectableFixture
         'group' => 'advanced-pricing'
     ];
 
+    protected $is_virtual = [
+        'attribute_code' => 'is_virtual',
+        'backend_type' => 'virtual',
+    ];
+
     public function getCategoryIds()
     {
         return $this->getData('category_ids');
@@ -949,4 +954,9 @@ class CatalogProductSimple extends InjectableFixture
     {
         return $this->getData('recurring_payment');
     }
+
+    public function getIsVirtual()
+    {
+        return $this->getData('is_virtual');
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.xml
index 228348ab7e9cf2dece2141e6e210f5161d8ee8f5..058ae44ace2997a2ec98549d6b9a597974c662a2 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple.xml
@@ -485,6 +485,10 @@
             <backend_type>virtual</backend_type>
             <group>advanced-pricing</group>
         </recurring_payment>
+        <is_virtual>
+            <attribute_code>is_virtual</attribute_code>
+            <backend_type>virtual</backend_type>
+        </is_virtual>
     </fields>
     <data_set>
         <sku></sku>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/AttributeSetId.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/AttributeSetId.php
index f2da24e6a9ca8792760255872939bccd18fb961e..d93f03a94236f00536a2ae36196501cd9f679337 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/AttributeSetId.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/AttributeSetId.php
@@ -56,7 +56,7 @@ class AttributeSetId implements FixtureInterface
      * @param array $params
      * @param array $data
      */
-    public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
+    public function __construct(FixtureFactory $fixtureFactory, array $params, $data = [])
     {
         $this->params = $params;
         if (isset($data['dataSet']) && $data['dataSet'] !== '-') {
@@ -66,8 +66,12 @@ class AttributeSetId implements FixtureInterface
             $attributeSet = $data['attribute_set'];
         }
         /** @var CatalogAttributeSet $attributeSet */
-        $this->data = $attributeSet->getAttributeSetName();
-        $this->attributeSet = $attributeSet;
+        if (!isset($data['dataSet']) && !isset($data['attribute_set'])) {
+            $this->data = $data;
+        } else {
+            $this->data = $attributeSet->getAttributeSetName();
+            $this->attributeSet = $attributeSet;
+        }
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
index 2f56ec5b9437714487fd18f362babfeee08bdd4b..07f6362e39dd01c566248330715c5b6fbbadae52 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
@@ -57,7 +57,7 @@ class CheckoutData implements FixtureInterface
     public function __construct(array $params, array $data = [])
     {
         $this->params = $params;
-        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : [];
+        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : $data;
 
         if (isset($data['data'])) {
             $this->data = array_replace_recursive($this->data, $data['data']);
@@ -102,6 +102,8 @@ class CheckoutData implements FixtureInterface
      *
      * @param string $name
      * @return array|null
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     protected function getPreset($name)
     {
@@ -125,6 +127,25 @@ class CheckoutData implements FixtureInterface
                     'subtotal' => 340
                 ]
             ],
+            'forUpdateMiniShoppingCart' => [
+                'options' => [
+                    'custom_options' => [
+                        [
+                            'title' => 'attribute_key_0',
+                            'value' => 'option_key_1'
+                        ],
+                        [
+                            'title' => 'attribute_key_1',
+                            'value' => 'Content option %isolation%',
+                        ]
+                    ],
+                ],
+                'qty' => 2,
+                'cartItem' => [
+                    'price' => 370,
+                    'subtotal' => 740
+                ]
+            ],
             'options-suite' => [
                 'options' => [
                     'custom_options' => [
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CustomOptions.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CustomOptions.php
index c4bd3cda848203df5a346ff13cc0d425a9178b55..ff049f45da0e551d86083528d8d33df053ae837d 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CustomOptions.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CustomOptions.php
@@ -67,6 +67,9 @@ class CustomOptions implements FixtureInterface
     public function __construct(array $params, array $data, FixtureFactory $fixtureFactory)
     {
         $this->params = $params;
+        $this->data = (!isset($data['preset']) && !isset($data['import_products'])) ? $data : [];
+        $this->customOptions = $this->data;
+
         if (isset($data['preset'])) {
             $this->data = $this->replaceData($this->getPreset($data['preset']), mt_rand());
             $this->customOptions = $this->data;
@@ -296,6 +299,12 @@ class CustomOptions implements FixtureInterface
                             'price' => 10,
                             'price_type' => 'Percent',
                             'sku' => 'sku_drop_down_row_1'
+                        ],
+                        [
+                            'title' => '20 percent',
+                            'price' => 20,
+                            'price_type' => 'Percent',
+                            'sku' => 'sku_drop_down_row_2'
                         ]
                     ]
                 ],
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/Price.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/Price.php
index aa37a97e490c12fc49a93d74431c7ca0f5f1c81c..b7ced851ab691fadb0ee1689701721589eb7c0c9 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/Price.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/Price.php
@@ -64,9 +64,11 @@ class Price implements FixtureInterface
      * @param array $params
      * @param array $data
      */
-    public function __construct(array $params, array $data = [])
+    public function __construct(array $params, $data = [])
     {
         $this->params = $params;
+        $this->data = (!isset($data['preset']) && !isset($data['value'])) ? $data : [];
+
         if (isset($data['value'])) {
             $this->data = $data['value'];
             if (is_array($this->data)) {
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/TaxClass.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/TaxClass.php
index d29a96ea5b9135836779cbc451e27140e626102a..befac0d4dcd609f20075788a2f6bbf766677d0e5 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/TaxClass.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/TaxClass.php
@@ -30,6 +30,7 @@ use Mtf\Fixture\FixtureInterface;
 use Mtf\Util\Protocol\CurlInterface;
 use Mtf\Util\Protocol\CurlTransport;
 use Mtf\Util\Protocol\CurlTransport\BackendDecorator;
+use Magento\Tax\Test\Fixture\TaxClass as FixtureTaxClass;
 
 /**
  * Class TaxClass
@@ -66,11 +67,16 @@ class TaxClass implements FixtureInterface
      *
      * @param FixtureFactory $fixtureFactory
      * @param array $params
-     * @param array $data
+     * @param array|string $data
      */
-    public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
+    public function __construct(FixtureFactory $fixtureFactory, array $params, $data = [])
     {
         $this->params = $params;
+        if ((!isset($data['dataSet']) && !isset($data['tax_product_class']))) {
+            $this->data = $data;
+            return;
+        }
+
         if (isset($data['dataSet'])) {
             $this->taxClass = $fixtureFactory->createByCode('taxClass', ['dataSet' => $data['dataSet']]);
             $this->data = $this->taxClass->getClassName();
@@ -78,12 +84,12 @@ class TaxClass implements FixtureInterface
                 $this->taxClass->persist();
             }
         }
-        if (isset($data['tax_product_class'])
-            && $data['tax_product_class'] instanceof \Magento\Tax\Test\Fixture\TaxClass
-        ) {
+
+        if (isset($data['tax_product_class']) && $data['tax_product_class'] instanceof FixtureTaxClass) {
             $this->taxClass = $data['tax_product_class'];
             $this->data = $this->taxClass->getClassName();
         }
+
         if ($this->taxClass->hasData('id')) {
             $this->taxClassId = $this->taxClass->getId();
         } else {
@@ -151,7 +157,7 @@ class TaxClass implements FixtureInterface
     /**
      * Return tax class fixture
      *
-     * @return \Magento\Tax\Test\Fixture\TaxClass
+     * @return FixtureTaxClass
      */
     public function getTaxClass()
     {
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
index 2b1b5b38dd5950cfcdff4e8c9c1b221432c251f3..b670528f8f5d64f37a23e169d4b6a9c472be4f75 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
@@ -229,6 +229,10 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
             $fields['affect_product_custom_options'] = 1;
         }
 
+        if (isset($fields['product']['weight'])) {
+            unset($fields['product']['is_virtual']);
+        }
+
         return $fields;
     }
 
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.php
index 2e052c113e04ee0bef52d30140b53fb8e715f534..701b6b754862d1992bc9bb45adda670eb6a773a5 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.php
@@ -47,6 +47,7 @@ class CatalogProductSimple extends AbstractRepository
             'attribute_set_id' => ['dataSet' => 'default'],
             'name' => 'Simple Product %isolation%',
             'sku' => 'sku_simple_product_%isolation%',
+            'is_virtual' => 'No',
             'weight' => 1,
             'quantity_and_stock_status' => [
                 'qty' => 25.0000,
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6e3b40ed332946477e6a95b4c2f52b0725d4574e
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php
@@ -0,0 +1,161 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Catalog\Test\TestCase\Product;
+
+use Mtf\TestCase\Injectable;
+use Mtf\Fixture\FixtureFactory;
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
+use Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config;
+use Magento\Downloadable\Test\Block\Adminhtml\Catalog\Product\Edit\Tab\Downloadable;
+
+/**
+ * Test Creation for ProductTypeSwitchingOnUpdating
+ *
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1. Create product according to dataSet
+ *
+ * Steps:
+ * 1. Open backend
+ * 2. Go to Products > Catalog
+ * 3. Open created product in preconditions
+ * 4. Perform Actions from dataSet
+ * 5. Fill data from dataSet
+ * 6. Save
+ * 7. Perform all assertions
+ *
+ * @group Products_(MX)
+ * @ZephyrId MAGETWO-29633
+ */
+class ProductTypeSwitchingOnUpdateTest extends Injectable
+{
+    /**
+     * Product page with a grid.
+     *
+     * @var CatalogProductIndex
+     */
+    protected $catalogProductIndex;
+
+    /**
+     * Page to update a product.
+     *
+     * @var CatalogProductEdit
+     */
+    protected $catalogProductEdit;
+
+    /**
+     * Fixture Factory
+     *
+     * @var FixtureFactory
+     */
+    protected $fixtureFactory;
+
+    /**
+     * Injection data.
+     *
+     * @param CatalogProductIndex $catalogProductIndex
+     * @param CatalogProductEdit $catalogProductEdit
+     * @param FixtureFactory $fixtureFactory
+     * @return void
+     */
+    public function __inject(
+        CatalogProductIndex $catalogProductIndex,
+        CatalogProductEdit $catalogProductEdit,
+        FixtureFactory $fixtureFactory
+    ) {
+        $this->catalogProductIndex = $catalogProductIndex;
+        $this->catalogProductEdit = $catalogProductEdit;
+        $this->fixtureFactory = $fixtureFactory;
+    }
+
+    /**
+     * Run product type switching on updating test.
+     *
+     * @param string $productOrigin
+     * @param string $product
+     * @param string $actionName
+     * @return array
+     */
+    public function test($productOrigin, $product, $actionName)
+    {
+        // Preconditions
+        list($fixtureClass, $dataSet) = explode('::', $productOrigin);
+        $productOrigin = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataSet' => trim($dataSet)]);
+        $productOrigin->persist();
+        list($fixtureClass, $dataSet) = explode('::', $product);
+        $product = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataSet' => trim($dataSet)]);
+
+        // Steps
+        $this->catalogProductIndex->open();
+        $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $productOrigin->getSku()]);
+        $this->catalogProductEdit->getProductForm()->fill($product);
+        $this->performAction($actionName);
+        $this->catalogProductEdit->getFormPageActions()->save($product);
+
+        return ['product' => $product];
+    }
+
+    /**
+     * Perform action.
+     *
+     * @param string $actionName
+     * @throws \Exception
+     * @return void
+     */
+    protected function performAction($actionName)
+    {
+        if (method_exists(__CLASS__, $actionName)) {
+            $this->$actionName();
+        }
+    }
+
+    /**
+     * Delete attributes.
+     *
+     * @return void
+     */
+    protected function deleteAttributes()
+    {
+        $this->catalogProductEdit->getProductForm()->openTab('variations');
+        /** @var Config $variationsTab */
+        $variationsTab = $this->catalogProductEdit->getProductForm()->getTabElement('variations');
+        $variationsTab->deleteAttributes();
+    }
+
+    /**
+     * Clear downloadable product data.
+     *
+     * @return void
+     */
+    protected function clearDownloadableData()
+    {
+        $this->catalogProductEdit->getProductForm()->openTab('downloadable_information');
+        /** @var Downloadable $downloadableInfoTab */
+        $downloadableInfoTab = $this->catalogProductEdit->getProductForm()->getTabElement('downloadable_information');
+        $downloadableInfoTab->getDownloadableBlock('Links')->clearDownloadableData();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest/test.csv b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest/test.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3ec77ae260b278e3ff8085f6520b051faaed8f58
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest/test.csv
@@ -0,0 +1,12 @@
+"productOrigin";"product";"actionName";"constraint";"issue"
+"catalogProductSimple::default";"configurableProductInjectable::default";"-";"assertProductSaveMessage, assertProductInGrid, assertChildProductsInGrid, assertConfigurableProductForm, assertConfigurableProductPage, assertProductInStock, assertChildProductIsNotDisplayedSeparately";""
+"catalogProductSimple::default";"catalogProductVirtual::default";"-";"assertProductSaveMessage, assertProductInGrid";""
+"configurableProductInjectable::default";"catalogProductSimple::default";"deleteAttributes";"assertProductSaveMessage, assertProductInGrid";""
+"configurableProductInjectable::default";"catalogProductVirtual::default";"deleteAttributes";"assertProductSaveMessage, assertProductInGrid";""
+"catalogProductVirtual::default";"catalogProductSimple::default";"-";"assertProductSaveMessage, assertProductInGrid";""
+"catalogProductVirtual::default";"configurableProductInjectable::not_virtual_for_type_switching";"-";"assertProductSaveMessage, assertProductInGrid, assertChildProductsInGrid, assertConfigurableProductForm, assertConfigurableProductPage, assertProductInStock, assertChildProductIsNotDisplayedSeparately";""
+"catalogProductVirtual::default";"downloadableProductInjectable::default";"-";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductInStock, assertDownloadableLinksData";""
+"downloadableProductInjectable::default";"catalogProductSimple::default";"-";"assertProductSaveMessage, assertProductInGrid";""
+"downloadableProductInjectable::default";"configurableProductInjectable::not_virtual_for_type_switching";"-";"assertProductSaveMessage, assertProductInGrid, assertChildProductsInGrid, assertConfigurableProductForm, assertConfigurableProductPage, assertProductInStock, assertChildProductIsNotDisplayedSeparately";""
+"downloadableProductInjectable::default";"catalogProductVirtual::default";"clearDownloadableData";"assertProductSaveMessage, assertProductInGrid";"Bug: MAGETWO-29903"
+"catalogProductSimple::default";"downloadableProductInjectable::default";"-";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductInStock, assertDownloadableLinksData";""
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductsStep.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductsStep.php
index 5f59e8515913ab1b2abe4c3feb325fad099a96f3..988e29f88ce9f3693c6f34d97b814b4471944d3f 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductsStep.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductsStep.php
@@ -41,6 +41,13 @@ class CreateProductsStep implements TestStepInterface
      */
     protected $products;
 
+    /**
+     * Product data
+     *
+     * @var array
+     */
+    protected $data;
+
     /**
      * Factory for Fixtures
      *
@@ -54,10 +61,12 @@ class CreateProductsStep implements TestStepInterface
      * @constructor
      * @param FixtureFactory $fixtureFactory
      * @param string $products
+     * @param array $data [optional]
      */
-    public function __construct(FixtureFactory $fixtureFactory, $products)
+    public function __construct(FixtureFactory $fixtureFactory, $products, array $data = [])
     {
         $this->products = $products;
+        $this->data = $data;
         $this->fixtureFactory = $fixtureFactory;
     }
 
@@ -71,13 +80,18 @@ class CreateProductsStep implements TestStepInterface
         $products = [];
         $productsDataSets = explode(',', $this->products);
         foreach ($productsDataSets as $key => $productDataSet) {
-            list($fixtureClass, $dataSet) = explode('::', $productDataSet);
+            $productDataSet = explode('::', $productDataSet);
+            $fixtureClass = $productDataSet[0];
+            $dataSet = isset($productDataSet[1]) ? $productDataSet[1] : '';
+            $data = isset($this->data[$key]) ? $this->data[$key] : [];
             /** @var FixtureInterface[] $products */
             $products[$key] = $this->fixtureFactory->createByCode(
                 trim($fixtureClass),
-                ['dataSet' => trim($dataSet)]
+                ['dataSet' => trim($dataSet), 'data' => $data]
             );
-            $products[$key]->persist();
+            if ($products[$key]->hasData('id') === false) {
+                $products[$key]->persist();
+            }
         }
 
         return ['products' => $products];
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar/Item.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar/Item.php
index 03f526fcc1d648bf5b753dab09f4d49434b6c556..5f40c5eca3bbf297d190d5a4984779c4eacff65e 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar/Item.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar/Item.php
@@ -39,6 +39,13 @@ class Item extends Sidebar
      */
     protected $removeItem = '.action.delete';
 
+    /**
+     * Selector for "Edit item" button
+     *
+     * @var string
+     */
+    protected $editItem = '.action.edit';
+
     /**
      * Remove product item from mini cart
      *
@@ -49,4 +56,14 @@ class Item extends Sidebar
         $this->_rootElement->find($this->removeItem)->click();
         $this->_rootElement->acceptAlert();
     }
+
+    /**
+     * Click "Edit item" button
+     *
+     * @return void
+     */
+    public function clickEditItem()
+    {
+        $this->_rootElement->find($this->editItem)->click();
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartItemsOptions.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartItemsOptions.php
index b698fbe9b1d2cb06c516043194953a24ec3adff4..2e780cd996631d18fad54b010c320be30b4622e9 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartItemsOptions.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartItemsOptions.php
@@ -32,8 +32,7 @@ use Magento\Checkout\Test\Fixture\Cart\Items;
 use Magento\Catalog\Test\Fixture\CatalogProductSimple;
 
 /**
- * Class AssertCartItemsOptions
- * Assert that cart item options for product(s) display with correct information block
+ * Assert that cart item options for product(s) display with correct information block.
  *
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
@@ -47,18 +46,23 @@ class AssertCartItemsOptions extends AbstractAssertForm
      */
     protected $severeness = 'low';
 
+    /**
+     * Error message for verify options
+     *
+     * @var string
+     */
+    protected $errorMessage = '- %s: "%s" instead of "%s"';
+
     /**
      * Assert that cart item options for product(s) display with correct information block
-     * (custom options, variations, links, samples, bundle items etc) according to passed from dataSet
+     * (custom options, variations, links, samples, bundle items etc) according to passed from dataSet.
      *
      * @param CheckoutCart $checkoutCart
      * @param Cart $cart
      * @return void
      */
-    public function processAssert(
-        CheckoutCart $checkoutCart,
-        Cart $cart
-    ) {
+    public function processAssert(CheckoutCart $checkoutCart, Cart $cart)
+    {
         $checkoutCart->open();
         /** @var Items $sourceProducts */
         $sourceProducts = $cart->getDataFieldConfig('items')['source'];
@@ -88,7 +92,7 @@ class AssertCartItemsOptions extends AbstractAssertForm
     }
 
     /**
-     * Verify form data contains in fixture data
+     * Verify form data contains in fixture data.
      *
      * @param array $fixtureData
      * @param array $formData
@@ -121,14 +125,10 @@ class AssertCartItemsOptions extends AbstractAssertForm
                 if (!empty($valueErrors)) {
                     $errors[$key] = $valueErrors;
                 }
+            } elseif (($key == 'value') && $this->equals($fixtureData['value'], $formData['value'])) {
+                $errors[] = $this->errorFormat($value, $formValue, $key);
             } elseif (null === strpos($value, $formValue)) {
-                if (is_array($value)) {
-                    $value = $this->arrayToString($value);
-                }
-                if (is_array($formValue)) {
-                    $formValue = $this->arrayToString($formValue);
-                }
-                $errors[] = sprintf('- %s: "%s" instead of "%s"', $key, $formValue, $value);
+                $errors[] = $this->errorFormat($value, $formValue, $key);
             }
         }
 
@@ -145,6 +145,37 @@ class AssertCartItemsOptions extends AbstractAssertForm
         return $errors;
     }
 
+    /**
+     * Check that params are equals.
+     *
+     * @param mixed $expected
+     * @param mixed $actual
+     * @return bool
+     */
+    protected function equals($expected, $actual)
+    {
+        return (null === strpos($expected, $actual));
+    }
+
+    /**
+     * Format error.
+     *
+     * @param mixed $value
+     * @param mixed $formValue
+     * @param mixed $key
+     * @return string
+     */
+    protected function errorFormat($value, $formValue, $key)
+    {
+        if (is_array($value)) {
+            $value = $this->arrayToString($value);
+        }
+        if (is_array($formValue)) {
+            $formValue = $this->arrayToString($formValue);
+        }
+
+        return sprintf($this->errorMessage, $key, $formValue, $value);
+    }
 
     /**
      * Returns a string representation of the object
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductOptionsAbsentInShoppingCart.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductOptionsAbsentInShoppingCart.php
new file mode 100644
index 0000000000000000000000000000000000000000..f2ebe09ee8f8dbff6d9ceaba1285be29ae19f52b
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductOptionsAbsentInShoppingCart.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Checkout\Test\Constraint;
+
+use Magento\Checkout\Test\Page\CheckoutCart;
+use Magento\Checkout\Test\Fixture\Cart;
+
+/**
+ * Assert that cart item options for product(s) not display with old options.
+ */
+class AssertProductOptionsAbsentInShoppingCart extends AssertCartItemsOptions
+{
+    /**
+     * Notice message.
+     *
+     * @var string
+     */
+    protected $notice = "\nProduct options from shopping cart are equals to passed from fixture:\n";
+
+    /**
+     * Error message for verify options
+     *
+     * @var string
+     */
+    protected $errorMessage = '- %s: "%s" equals of "%s"';
+
+    /**
+     * Assert that cart item options for product(s) not display with old options.
+     *
+     * @param CheckoutCart $checkoutCart
+     * @param Cart $deletedCart
+     * @return void
+     */
+    public function processAssert(CheckoutCart $checkoutCart, Cart $deletedCart)
+    {
+        parent::processAssert($checkoutCart, $deletedCart);
+    }
+
+    /**
+     * Check that params are equals.
+     *
+     * @param mixed $expected
+     * @param mixed $actual
+     * @return bool
+     */
+    protected function equals($expected, $actual)
+    {
+        return (false !== strpos($expected, $actual));
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Product with options are absent in shopping cart.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductQtyInMiniShoppingCart.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductQtyInMiniShoppingCart.php
index 4fcbc3cfe7b7e9b0d3aa2ca4ed5808fd64a53c62..04cab631753198222c8820e01ce6c3b6a6252e26 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductQtyInMiniShoppingCart.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductQtyInMiniShoppingCart.php
@@ -51,10 +51,8 @@ class AssertProductQtyInMiniShoppingCart extends AbstractAssertForm
      * @param Cart $cart
      * @return void
      */
-    public function processAssert(
-        CmsIndex $cmsIndex,
-        Cart $cart
-    ) {
+    public function processAssert(CmsIndex $cmsIndex, Cart $cart)
+    {
         $cmsIndex->open();
         /** @var Items $sourceProducts */
         $sourceProducts = $cart->getDataFieldConfig('items')['source'];
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductsAbsentInShoppingCart.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductsAbsentInShoppingCart.php
new file mode 100644
index 0000000000000000000000000000000000000000..24fdd23ec3e97013096137aeeef43448d9e632ae
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductsAbsentInShoppingCart.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Checkout\Test\Constraint;
+
+use Mtf\Constraint\AbstractConstraint;
+use Magento\Checkout\Test\Page\CheckoutCart;
+
+/**
+ * Assert that products are absent in shopping cart.
+ */
+class AssertProductsAbsentInShoppingCart extends AbstractConstraint
+{
+    /**
+     * Constraint severeness.
+     *
+     * @var string
+     */
+    protected $severeness = 'low';
+
+    /**
+     * Assert that products are absent in shopping cart.
+     *
+     * @param CheckoutCart $checkoutCart
+     * @param array $products
+     * @return void
+     */
+    public function processAssert(CheckoutCart $checkoutCart, array $products)
+    {
+        $checkoutCart->open();
+        foreach ($products as $product) {
+            \PHPUnit_Framework_Assert::assertFalse(
+                $checkoutCart->getCartBlock()->getCartItem($product)->isVisible(),
+                'Product ' . $product->getName() . ' is present in shopping cart.'
+            );
+        }
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'All expected products are absent in shopping cart.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/constraint.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/constraint.xml
index c954f35e537439be62e1e9a26d979ee07e3ceb6b..6cbc520d38f0a1bace0247872917a8e2d1807bfe 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/constraint.xml
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/constraint.xml
@@ -51,9 +51,6 @@
     <assertCartItemsOptions module="Magento_Checkout">
         <severeness>low</severeness>
     </assertCartItemsOptions>
-    <assertCartProductName module="Magento_Checkout">
-        <severeness>low</severeness>
-    </assertCartProductName>
     <assertProductAbsentInMiniShoppingCart module="Magento_Checkout">
         <severeness>low</severeness>
     </assertProductAbsentInMiniShoppingCart>
@@ -69,4 +66,10 @@
     <assertProductIsNotEditable module="Magento_Checkout">
         <severeness>low</severeness>
     </assertProductIsNotEditable>
+    <assertProductsAbsentInShoppingCart module="Magento_Checkout">
+        <severeness>low</severeness>
+    </assertProductsAbsentInShoppingCart>
+    <assertProductOptionsAbsentInShoppingCart module="Magento_Checkout">
+        <severeness>low</severeness>
+    </assertProductOptionsAbsentInShoppingCart>
 </constraint>
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/scenario.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/scenario.xml
new file mode 100644
index 0000000000000000000000000000000000000000..40465a44a5c9382293666584985c8d1f79f5f221
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/scenario.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Mtf/Config/etc/scenario.xsd">
+    <scenario name="OnePageCheckoutTest" module="Magento_Checkout">
+        <methods>
+            <method name="test">
+                <steps>
+                    <first>setupConfiguration</first>
+                    <step name="setupConfiguration" module="Magento_Core">
+                        <next>createProducts</next>
+                    </step>
+                    <step name="createProducts" module="Magento_Catalog">
+                        <next>addProductsToTheCart</next>
+                    </step>
+                    <step name="addProductsToTheCart" module="Magento_Checkout">
+                        <next>proceedToCheckout</next>
+                    </step>
+                    <step name="proceedToCheckout" module="Magento_Checkout">
+                        <next>selectCheckoutMethod</next>
+                    </step>
+                    <step name="createCustomer" module="Magento_Customer">
+                        <next>selectCheckoutMethod</next>
+                    </step>
+                    <step name="selectCheckoutMethod" module="Magento_Checkout">
+                        <next>fillBillingInformation</next>
+                    </step>
+                    <step name="fillBillingInformation" module="Magento_Checkout">
+                        <next>fillShippingMethod</next>
+                    </step>
+                    <step name="fillShippingMethod" module="Magento_Checkout">
+                        <next>selectPaymentMethod</next>
+                    </step>
+                    <step name="selectPaymentMethod" module="Magento_Checkout">
+                        <next>placeOrder</next>
+                    </step>
+                    <step name="placeOrder" module="Magento_Checkout" />
+                </steps>
+            </method>
+        </methods>
+    </scenario>
+</scenarios>
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentInGrid.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentInGrid.php
new file mode 100644
index 0000000000000000000000000000000000000000..a6537c07b470c019c3b7c720df355cf85716ccf7
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentInGrid.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\CheckoutAgreements\Test\Constraint;
+
+use Magento\CheckoutAgreements\Test\Fixture\CheckoutAgreement;
+use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementIndex;
+use Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Class AssertTermAbsentInGrid
+ * Check that checkout agreement is absent in agreement grid.
+ */
+class AssertTermAbsentInGrid extends AbstractConstraint
+{
+    /**
+     * Constraint severeness
+     *
+     * @var string
+     */
+    protected $severeness = 'low';
+
+    /**
+     * Assert that checkout agreement is absent in agreement grid.
+     *
+     * @param CheckoutAgreementIndex $agreementIndex
+     * @param CheckoutAgreement $agreement
+     * @return void
+     */
+    public function processAssert(CheckoutAgreementIndex $agreementIndex, CheckoutAgreement $agreement)
+    {
+        $agreementIndex->open();
+        \PHPUnit_Framework_Assert::assertFalse(
+            $agreementIndex->getAgreementGridBlock()->isRowVisible(['name' => $agreement->getName()]),
+            'Checkout Agreement \'' . $agreement->getName() . '\' is present in agreement grid.'
+        );
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Checkout Agreement is absent in agreement grid.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsAbsentOnCheckout.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentOnCheckout.php
similarity index 97%
rename from dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsAbsentOnCheckout.php
rename to dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentOnCheckout.php
index a7c3f2be69880b436ca51bff4291a674c0121eeb..ffc1818f87353a61e099954c093924e1ca3927fa 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsAbsentOnCheckout.php
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentOnCheckout.php
@@ -36,10 +36,10 @@ use Magento\Catalog\Test\Page\Product\CatalogProductView;
 use Magento\CheckoutAgreements\Test\Fixture\CheckoutAgreement;
 
 /**
- * Class AssertTermsAbsentOnCheckout
- * Check that Checkout Agreement is absent in the Place order tab
+ * Class AssertTermAbsentOnCheckout
+ * Check that Checkout Agreement is absent in the Place order tab.
  */
-class AssertTermsAbsentOnCheckout extends AbstractConstraint
+class AssertTermAbsentOnCheckout extends AbstractConstraint
 {
     /**
      * Constraint severeness
@@ -49,7 +49,7 @@ class AssertTermsAbsentOnCheckout extends AbstractConstraint
     protected $severeness = 'low';
 
     /**
-     * Place order and verify there is no checkbox Terms and Conditions
+     * Place order and verify there is no checkbox Terms and Conditions.
      *
      * @param FixtureFactory $fixtureFactory
      * @param ObjectManager $objectManager
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsInGrid.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermInGrid.php
similarity index 93%
rename from dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsInGrid.php
rename to dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermInGrid.php
index f8a80c7b3db0e83845508970595e0425fdf2f9b3..aef53014f15b09d2a39eeb8f005eb4765daa2d0e 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsInGrid.php
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermInGrid.php
@@ -29,10 +29,10 @@ use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementIndex;
 use Mtf\Constraint\AbstractConstraint;
 
 /**
- * Class AssertTermsInGrid
- * Check that checkout agreement is present in agreement grid
+ * Class AssertTermInGrid
+ * Check that checkout agreement is present in agreement grid.
  */
-class AssertTermsInGrid extends AbstractConstraint
+class AssertTermInGrid extends AbstractConstraint
 {
     /**
      * Constraint severeness
@@ -42,7 +42,7 @@ class AssertTermsInGrid extends AbstractConstraint
     protected $severeness = 'low';
 
     /**
-     * Assert that checkout agreement is present in agreement grid
+     * Assert that checkout agreement is present in agreement grid.
      *
      * @param CheckoutAgreementIndex $agreementIndex
      * @param CheckoutAgreement $agreement
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsOnCheckout.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermOnCheckout.php
similarity index 97%
rename from dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsOnCheckout.php
rename to dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermOnCheckout.php
index 6e69cad7f44cd55bb60ebac30835e8f5ee629b7d..bc7260392f7ffd9cfeb677a4081c07ec4ac6117e 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsOnCheckout.php
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermOnCheckout.php
@@ -37,10 +37,10 @@ use Magento\Catalog\Test\Page\Product\CatalogProductView;
 use Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage;
 
 /**
- * Class AssertTermsOnCheckout
+ * Class AssertTermOnCheckout
  * Check that Terms and Conditions is present on the last checkout step - Order Review.
  */
-class AssertTermsOnCheckout extends AbstractConstraint
+class AssertTermOnCheckout extends AbstractConstraint
 {
     /**
      * Notification message
@@ -121,7 +121,7 @@ class AssertTermsOnCheckout extends AbstractConstraint
     }
 
     /**
-     * Returns a string representation of the object
+     * Returns a string representation of the object.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessDeleteMessage.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessDeleteMessage.php
new file mode 100644
index 0000000000000000000000000000000000000000..6205758ccc2b4df65b1dd58da0076bcc3fd3bbbe
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessDeleteMessage.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\CheckoutAgreements\Test\Constraint;
+
+use Mtf\Constraint\AbstractConstraint;
+use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementIndex;
+
+/**
+ * Class AssertTermSuccessDeleteMessage
+ * Check that after deleting Term successful delete message appears.
+ */
+class AssertTermSuccessDeleteMessage extends AbstractConstraint
+{
+    /**
+     * Success terms and conditions delete message
+     */
+    const SUCCESS_DELETE_MESSAGE = 'The condition has been deleted.';
+
+    /**
+     * Constraint severeness
+     *
+     * @var string
+     */
+    protected $severeness = 'high';
+
+    /**
+     * Assert that after deleting Term successful delete message appears.
+     *
+     * @param CheckoutAgreementIndex $agreementIndex
+     * @return void
+     */
+    public function processAssert(CheckoutAgreementIndex $agreementIndex)
+    {
+        \PHPUnit_Framework_Assert::assertEquals(
+            self::SUCCESS_DELETE_MESSAGE,
+            $agreementIndex->getMessagesBlock()->getSuccessMessages(),
+            'Wrong success delete message is displayed.'
+        );
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Terms and Conditions success delete message is present.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsSuccessSaveMessage.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessSaveMessage.php
similarity index 87%
rename from dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsSuccessSaveMessage.php
rename to dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessSaveMessage.php
index 10d50064dc1d4142f80523bbe73dd523d389712a..a5f3c8cfc57792fbac555d48726146f1ca999fbf 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermsSuccessSaveMessage.php
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessSaveMessage.php
@@ -28,10 +28,10 @@ use Mtf\Constraint\AbstractConstraint;
 use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementIndex;
 
 /**
- * Class AssertTermsSuccessSaveMessage
- * Check that after save block successful message appears
+ * Class AssertTermSuccessSaveMessage
+ * Check that after save block successful message appears.
  */
-class AssertTermsSuccessSaveMessage extends AbstractConstraint
+class AssertTermSuccessSaveMessage extends AbstractConstraint
 {
     /**
      * Success terms and conditions save message
@@ -46,7 +46,7 @@ class AssertTermsSuccessSaveMessage extends AbstractConstraint
     protected $severeness = 'high';
 
     /**
-     * Assert that after save block successful message appears
+     * Assert that after save block successful message appears.
      *
      * @param CheckoutAgreementIndex $agreementIndex
      * @return void
@@ -61,7 +61,7 @@ class AssertTermsSuccessSaveMessage extends AbstractConstraint
     }
 
     /**
-     * Returns a string representation of the object
+     * Returns a string representation of the object.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Fixture/CheckoutAgreement.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Fixture/CheckoutAgreement.php
index e6f21ecdcf85416d924f755a79101a4bad7a4bda..6794e68309b9359ff47d83acee8b6b4622f8c062 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Fixture/CheckoutAgreement.php
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Fixture/CheckoutAgreement.php
@@ -48,7 +48,7 @@ class CheckoutAgreement extends InjectableFixture
         'name' => 'DefaultName%isolation%',
         'is_active' => 'Enabled',
         'is_html' => 'Text',
-        'stores' => ['dataSet' => 'default_store_view'],
+        'stores' => ['dataSet' => ['default']],
         'checkbox_text' => 'test_checkbox%isolation%',
         'content' => 'TestMessage%isolation%',
     ];
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/CreateTermEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/CreateTermEntityTest/test.csv
index 94adb80e4ae6660fa8612d31cfe7e6384388253c..45ac149ca4243e1e6edd4a111da4676b439387f8 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/CreateTermEntityTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/CreateTermEntityTest/test.csv
@@ -1,5 +1,5 @@
 "product";"agreement/data/name";"agreement/data/is_active";"agreement/data/is_html";"agreement/data/stores/dataSet/0";"agreement/data/checkbox_text";"agreement/data/content";"shipping/shipping_service";"shipping/shipping_method";"payment/method";"constraint"
-"catalogProductSimple::default";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsOnCheckout"
-"catalogProductSimple::default";"name%isolation%";"Enabled";"HTML";"default";"test_checkbox%isolation%";"<html>";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsOnCheckout"
-"catalogProductSimple::default";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsOnCheckout"
-"catalogProductSimple::default";"name%isolation%";"Disabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsAbsentOnCheckout"
+"catalogProductSimple::default";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermOnCheckout"
+"catalogProductSimple::default";"name%isolation%";"Enabled";"HTML";"default";"test_checkbox%isolation%";"<html>";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermOnCheckout"
+"catalogProductSimple::default";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermOnCheckout"
+"catalogProductSimple::default";"name%isolation%";"Disabled";"Text";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermAbsentOnCheckout"
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest.php b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..586fd57b5a7231b1f2106e6d8475f2aad555eb23
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest.php
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\CheckoutAgreements\Test\TestCase;
+
+use Mtf\TestCase\Injectable;
+use Mtf\ObjectManager;
+use Magento\CheckoutAgreements\Test\Fixture\CheckoutAgreement;
+use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementNew;
+use Magento\CheckoutAgreements\Test\Page\Adminhtml\CheckoutAgreementIndex;
+
+/**
+ * Test creation for DeleteTermEntityTest
+ *
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1. Enable "Terms and Conditions": Stores > Configuration > Sales > Checkout > Checkout Options
+ * 2. Create term according to dataSet
+ *
+ * Steps:
+ * 1. Open Backend Stores > Terms and Conditions
+ * 2. Open created Term from preconditions
+ * 3. Click on 'Delete' button
+ * 4. Perform all assertions
+ *
+ * @group Terms_and_Conditions_(CS)
+ * @ZephyrId MAGETWO-29687
+ */
+class DeleteTermEntityTest extends Injectable
+{
+    /**
+     * Checkout agreement index page
+     *
+     * @var CheckoutAgreementIndex
+     */
+    protected $agreementIndex;
+
+    /**
+     * Checkout agreement new page
+     *
+     * @var CheckoutAgreementNew
+     */
+    protected $agreementNew;
+
+    /**
+     * Set up configuration
+     *
+     * @return void
+     */
+    public function __prepare()
+    {
+        $this->objectManager->create(
+            'Magento\Core\Test\TestStep\SetupConfigurationStep',
+            ['configData' => 'checkout_term_condition']
+        )->run();
+    }
+
+    /**
+     * Inject pages
+     *
+     * @param CheckoutAgreementNew $agreementNew
+     * @param CheckoutAgreementIndex $agreementIndex
+     * @return void
+     */
+    public function __inject(
+        CheckoutAgreementNew $agreementNew,
+        CheckoutAgreementIndex $agreementIndex
+    ) {
+        $this->agreementNew = $agreementNew;
+        $this->agreementIndex = $agreementIndex;
+    }
+
+    /**
+     * Delete Term Entity test
+     *
+     * @param CheckoutAgreement $agreement
+     * @return void
+     */
+    public function test(CheckoutAgreement $agreement)
+    {
+        // Precondition
+        $agreement->persist();
+
+        // Steps
+        $this->agreementIndex->open()->getAgreementGridBlock()->searchAndOpen(['name' => $agreement->getName()]);
+        $this->agreementNew->getPageActionsBlock()->delete();
+    }
+
+    /**
+     * Set default configuration
+     *
+     * @return void
+     */
+    public static function tearDownAfterClass()
+    {
+        ObjectManager::getInstance()->create(
+            'Magento\Core\Test\TestStep\SetupConfigurationStep',
+            ['configData' => 'checkout_term_condition', 'rollback' => true]
+        )->run();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest/test.csv
new file mode 100644
index 0000000000000000000000000000000000000000..6824357498e273ddb797c09bf2d319cc9467f84f
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest/test.csv
@@ -0,0 +1,2 @@
+"product";"agreement/dataSet";"shipping/shipping_service";"shipping/shipping_method";"payment/method";"constraint"
+"catalogProductSimple::default";"term_enabled_text";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessDeleteMessage, assertTermAbsentInGrid, assertTermAbsentOnCheckout"
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/UpdateTermEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/UpdateTermEntityTest/test.csv
index 7911ad0d0817517ecb47b53756f02cf241a09d6f..5c9fa47f3d824e37df78401be8dba0dbc5584771 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/UpdateTermEntityTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/UpdateTermEntityTest/test.csv
@@ -1,4 +1,4 @@
 "product";"agreementOrigin/dataSet";"agreement/data/name";"agreement/data/is_active";"agreement/data/is_html";"agreement/data/stores/dataSet/0";"agreement/data/checkbox_text";"agreement/data/content";"shipping/shipping_service";"shipping/shipping_method";"payment/method";"constraint"
-"catalogProductSimple::default";"term_disabled_text";"name%isolation%";"Enabled";"HTML";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsOnCheckout"
-"catalogProductSimple::default";"term_disabled_html";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"<html>";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsOnCheckout"
-"catalogProductSimple::default";"term_enabled_text";"name%isolation%";"Disabled";"HTML";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermsSuccessSaveMessage, assertTermsInGrid, assertTermsAbsentOnCheckout"
+"catalogProductSimple::default";"term_disabled_text";"name%isolation%";"Enabled";"HTML";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermOnCheckout"
+"catalogProductSimple::default";"term_disabled_html";"name%isolation%";"Enabled";"Text";"default";"test_checkbox%isolation%";"<html>";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermOnCheckout"
+"catalogProductSimple::default";"term_enabled_text";"name%isolation%";"Disabled";"HTML";"default";"test_checkbox%isolation%";"TestMessage%isolation%";"Flat Rate";"Fixed";"checkmo";"assertTermSuccessSaveMessage, assertTermInGrid, assertTermAbsentOnCheckout"
diff --git a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/etc/constraint.xml b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/etc/constraint.xml
index 0625ce00faf3ccbe129dc842a3f0253862690e9a..50af29896ffff8239ea013383909796d3999ec55 100644
--- a/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/etc/constraint.xml
+++ b/dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/etc/constraint.xml
@@ -24,16 +24,22 @@
  */
 -->
 <constraint>
-    <assertTermsSuccessSaveMessage module="Magento_CheckoutAgreements">
+    <assertTermSuccessSaveMessage module="Magento_CheckoutAgreements">
         <severeness>low</severeness>
-    </assertTermsSuccessSaveMessage>
-    <assertTermsOnCheckout module="Magento_CheckoutAgreements">
+    </assertTermSuccessSaveMessage>
+    <assertTermOnCheckout module="Magento_CheckoutAgreements">
         <severeness>low</severeness>
-    </assertTermsOnCheckout>
-    <assertTermsAbsentOnCheckout module="Magento_CheckoutAgreements">
+    </assertTermOnCheckout>
+    <assertTermAbsentOnCheckout module="Magento_CheckoutAgreements">
         <severeness>low</severeness>
-    </assertTermsAbsentOnCheckout>
-    <assertTermsInGrid module="Magento_CheckoutAgreements">
+    </assertTermAbsentOnCheckout>
+    <assertTermInGrid module="Magento_CheckoutAgreements">
         <severeness>low</severeness>
-    </assertTermsInGrid>
+    </assertTermInGrid>
+    <assertTermSuccessDeleteMessage module="Magento_CheckoutAgreements">
+        <severeness>low</severeness>
+    </assertTermSuccessDeleteMessage>
+    <assertTermAbsentInGrid module="Magento_CheckoutAgreements">
+        <severeness>low</severeness>
+    </assertTermAbsentInGrid>
 </constraint>
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
index dc1c9d1cdc74dea8a8e6a8ddfd65b6d4e9358598..1291e96f4ffa37c75cebfe00a6eb9a99d04a6617 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
@@ -39,7 +39,7 @@ class Config extends Tab
      *
      * @var string
      */
-    protected $variationsTabTrigger = '[data-panel="product-variations"] .title';
+    protected $variationsTabTrigger = '[data-panel="product-variations"] .title span';
 
     /**
      * Selector for content "Variations" tab
@@ -69,6 +69,34 @@ class Config extends Tab
      */
     protected $variationsMatrixRow = '[data-role="product-variations-matrix"] [data-role="row"]';
 
+    /**
+     * Selector for variations tab wrapper
+     *
+     * @var string
+     */
+    protected $variationsTabWrapper = '#super_config-wrapper';
+
+    /**
+     * Attribute element selector
+     *
+     * @var string
+     */
+    protected $attributeElement = '.entry-edit.have-price';
+
+    /**
+     * Delete variation button selector
+     *
+     * @var string
+     */
+    protected $deleteVariationButton = '.action-delete';
+
+    /**
+     * Variations content selector
+     *
+     * @var string
+     */
+    protected $variationsContent = '#product_info_tabs_super_config_content';
+
     /**
      * Fill variations fieldset
      *
@@ -104,6 +132,7 @@ class Config extends Tab
     {
         $content = $this->_rootElement->find($this->variationsTabContent);
         if (!$content->isVisible()) {
+            $this->_rootElement->find($this->variationsTabWrapper)->click();
             $this->_rootElement->find($this->variationsTabTrigger)->click();
             $this->waitForElementVisible($this->variationsTabContent);
         }
@@ -163,4 +192,18 @@ class Config extends Tab
 
         return ['configurable_attributes_data' => $data];
     }
+
+    /**
+     * Delete all attributes
+     *
+     * @return void
+     */
+    public function deleteAttributes()
+    {
+        $attributeElements = $this->_rootElement->find($this->attributeElement)->getElements();
+        $this->_rootElement->find($this->variationsContent)->click();
+        foreach ($attributeElements as $element) {
+            $element->find($this->deleteVariationButton)->click();
+        }
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeAbsenceInVariationsSearch.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeAbsenceInVariationsSearch.php
index 94a471ebddfda8feb485306c761f28302e70b3df..148e661839cba712ce612fb746bd8ae5a871066d 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeAbsenceInVariationsSearch.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeAbsenceInVariationsSearch.php
@@ -57,8 +57,7 @@ class AssertProductAttributeAbsenceInVariationsSearch extends AbstractConstraint
      * @param CatalogProductNew $newProductPage
      * @return void
      */
-    public function processAssert
-    (
+    public function processAssert(
         CatalogProductAttribute $productAttribute,
         CatalogProductIndex $productGrid,
         CatalogProductNew $newProductPage
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeIsConfigurable.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeIsConfigurable.php
index c04069b44188d406a409bc80528093cdcfc5af69..6e5074d83fa356896fb9ae93a325ec0028ddc8ec 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeIsConfigurable.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertProductAttributeIsConfigurable.php
@@ -59,8 +59,7 @@ class AssertProductAttributeIsConfigurable extends AbstractConstraint
      * @param FixtureFactory $fixtureFactory
      * @param CatalogProductNew $newProductPage
      */
-    public function processAssert
-    (
+    public function processAssert(
         CatalogProductAttribute $attribute,
         CatalogProductIndex $productGrid,
         FixtureFactory $fixtureFactory,
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
index cf5789fef462c0481ee60ae6a7b431bc7aeb472d..1bf635fa875e696b144717e234b28d3ae20bd8b2 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
@@ -38,6 +38,8 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
      *
      * @param $name
      * @return array|null
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     protected function getPreset($name)
     {
@@ -62,6 +64,26 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
                     'subtotal' => 516
                 ]
             ],
+            'forUpdateMiniShoppingCart' => [
+                'options' => [
+                    'configurable_options' => [
+                        [
+                            'title' => 'attribute_key_0',
+                            'value' => 'option_key_1',
+                        ],
+                        [
+                            'title' => 'attribute_key_1',
+                            'value' => 'option_key_0',
+                        ]
+                    ],
+                ],
+                'qty' => 1,
+                'cartItem' => [
+                    'price' => 172,
+                    'qty' => 1,
+                    'subtotal' => 172
+                ]
+            ],
             'two_options' => [
                 'options' => [
                     'configurable_options' => [
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
index ed17c18f973f10e03fe07c6961e175fe85d11fb6..786bdbc5b5f6df21edf8ef8b476f527676f60ba9 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
@@ -536,14 +536,17 @@ class ConfigurableAttributesData implements FixtureInterface
     {
         $this->fixtureFactory = $fixtureFactory;
         $this->params = $params;
+        $this->data = !isset($data['preset']) ? $data : [];
 
         $preset = isset($data['preset']) ? $this->getPreset($data['preset']) : [];
 
-        $this->prepareAttributes($preset);
-        $this->prepareAttributesData($preset);
-        $this->prepareProducts($preset);
-        $this->prepareVariationsMatrix($preset);
-        $this->prepareData();
+        if (!empty($preset)) {
+            $this->prepareAttributes($preset);
+            $this->prepareAttributesData($preset);
+            $this->prepareProducts($preset);
+            $this->prepareVariationsMatrix($preset);
+            $this->prepareData();
+        }
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Adminhtml/CatalogProductEdit.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Adminhtml/CatalogProductEdit.xml
index 86c3d612545b958e99a1335347dc40b904e1d09e..c489a730667d76286fb80fc19f9b0b64fa8605a5 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Adminhtml/CatalogProductEdit.xml
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Adminhtml/CatalogProductEdit.xml
@@ -25,12 +25,17 @@
 -->
 <page mca="catalog/product/edit">
     <blocks>
+        <formPageActions>
+            <renders>
+                <configurable>
+                    <class>Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\FormPageActions</class>
+                </configurable>
+            </renders>
+        </formPageActions>
         <productForm>
             <renders>
                 <configurable>
                     <class>Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\ProductForm</class>
-                    <locator>[id="page:main-container"]</locator>
-                    <strategy>css selector</strategy>
                 </configurable>
             </renders>
         </productForm>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/etc/scenario.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/etc/scenario.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d8f1656bbd64292e8124554fff62c12fbb32845
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/etc/scenario.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Mtf/Config/etc/scenario.xsd">
+    <scenario name="CreateOrderFromCustomerPageTest" module="Magento_Customer">
+        <methods>
+            <method name="test">
+                <steps>
+                    <first>createCustomer</first>
+                    <step name="createCustomer" module="Magento_Customer">
+                        <next>openCustomerOnBackend</next>
+                    </step>
+                    <step name="openCustomerOnBackend" module="Magento_Customer">
+                        <next>createOrderFromCustomerAccount</next>
+                    </step>
+                    <step name="createOrderFromCustomerAccount" module="Magento_Customer">
+                        <next>createProducts</next>
+                    </step>
+                    <step name="createProducts" module="Magento_Catalog">
+                        <next>addProducts</next>
+                    </step>
+                    <step name="addProducts" module="Magento_Sales">
+                        <next>updateProductsData</next>
+                    </step>
+                    <step name="updateProductsData" module="Magento_Sales">
+                        <next>fillBillingAddress</next>
+                    </step>
+                    <step name="fillBillingAddress" module="Magento_Sales">
+                        <next>selectPaymentMethodForOrder</next>
+                    </step>
+                    <step name="selectPaymentMethodForOrder" module="Magento_Sales">
+                        <next>selectShippingMethodForOrder</next>
+                    </step>
+                    <step name="selectShippingMethodForOrder" module="Magento_Sales">
+                        <next>submitOrder</next>
+                    </step>
+                    <step name="submitOrder" module="Magento_Sales" />
+                </steps>
+            </method>
+        </methods>
+    </scenario>
+</scenarios>
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/LinkRow.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/LinkRow.php
index d6cde4fe846bc1d27c30e107d1dad97295003a41..3e3a3f15542784bcbc260782cec15482fa96e296 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/LinkRow.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/LinkRow.php
@@ -32,6 +32,13 @@ use Mtf\Block\Form;
  */
 class LinkRow extends Form
 {
+    /**
+     * Delete button selector
+     *
+     * @var string
+     */
+    protected $deleteButton = '.delete-link-item';
+
     /**
      * Fill item link
      *
@@ -55,4 +62,14 @@ class LinkRow extends Form
         $mapping = $this->dataMapping($fields);
         return $this->_getData($mapping);
     }
+
+    /**
+     * Click delete button
+     *
+     * @return void
+     */
+    public function clickDeleteButton()
+    {
+        $this->_rootElement->find($this->deleteButton)->click();
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
index 342534e1f9fdb7d4de3ad9e3a06197a534ec8882..354182458dba248fbd1613bff2a8ba24a6a99f0e 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
@@ -135,4 +135,20 @@ class Links extends Form
         }
         return $newFields;
     }
+
+    /**
+     * Delete all links and clear title.
+     *
+     * @return void
+     */
+    public function clearDownloadableData()
+    {
+        $this->_rootElement->find($this->title, Locator::SELECTOR_XPATH)->setValue('');
+        $index = 1;
+        while ($this->_rootElement->find(sprintf($this->rowBlock, $index), Locator::SELECTOR_XPATH)->isVisible()) {
+            $rowBlock = $this->getRowBlock($index - 1);
+            $rowBlock->clickDeleteButton();
+            ++$index;
+        }
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Catalog/Product/View.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Catalog/Product/View.php
index 4b1ad4b012ab61a18ef20322a4085553be5c5502..2634acd7241621178ef20731e5c9eff98bce7ed0 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Catalog/Product/View.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Catalog/Product/View.php
@@ -91,21 +91,20 @@ class View extends \Magento\Catalog\Test\Block\Product\View
         $downloadableLinks = isset($productData['downloadable_links']['downloadable']['link'])
             ? $productData['downloadable_links']['downloadable']['link']
             : [];
-        $data = $product->getCheckoutData()['options'];
+        $checkoutData = $product->getCheckoutData();
+        if (isset($checkoutData['options'])) {
+            // Replace link key to label
+            foreach ($checkoutData['options']['links'] as $key => $linkData) {
+                $linkKey = str_replace('link_', '', $linkData['label']);
 
-        // Replace link key to label
-        foreach ($data['links'] as $key => $linkData) {
-            $linkKey = str_replace('link_', '', $linkData['label']);
+                $linkData['label'] = isset($downloadableLinks[$linkKey]['title'])
+                    ? $downloadableLinks[$linkKey]['title']
+                    : $linkData['label'];
 
-            $linkData['label'] = isset($downloadableLinks[$linkKey]['title'])
-                ? $downloadableLinks[$linkKey]['title']
-                : $linkData['label'];
-
-            $data['links'][$key] = $linkData;
+                $checkoutData['options']['links'][$key] = $linkData;
+            }
+            $this->getDownloadableLinksBlock()->fill($checkoutData['options']['links']);
         }
-
-        $this->getDownloadableLinksBlock()->fill($data['links']);
-        parent::fillOptions($product);
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
index 89be5bfa577ebb60edb653dfcd048976d36350e8..ac30a17faedf680bd3d19eb013927d1dc97c15fd 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
@@ -56,7 +56,21 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
                     'subtotal' => 46
                 ]
             ],
+            'forUpdateMiniShoppingCart' => [
+                'options' => [
+                    'links' => [
+                        [
+                            'label' => 'link_0',
+                            'value' => 'Yes'
+                        ]
+                    ],
+                ],
+                'cartItem' => [
+                    'price' => 23,
+                    'subtotal' => 22.43
+                ]
+            ],
         ];
-        return isset($presets[$name]) ? $presets[$name] : null;
+        return isset($presets[$name]) ? $presets[$name] : [];
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Links.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Links.php
index a97fe0769d86b53b741d05f9db952f5e2d729a0b..2cb5ba47ce67638d442130bdf1ac7c5d99f89276 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Links.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Links.php
@@ -57,9 +57,7 @@ class Links implements FixtureInterface
     public function __construct(array $params, array $data = [])
     {
         $this->params = $params;
-        if (isset($data['preset'])) {
-            $this->data = $this->getPreset($data['preset']);
-        }
+        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : $data;
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Samples.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Samples.php
index 35c7dea6bb3a6dc49047b96c9a1368a8a9885fa7..170a2c970de53a14c7ae6d313cc7efcb7a66debb 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Samples.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/Samples.php
@@ -55,9 +55,7 @@ class Samples implements FixtureInterface
     public function __construct(array $params, array $data = [])
     {
         $this->params = $params;
-        if (isset($data['preset'])) {
-            $this->data = $this->getPreset($data['preset']);
-        }
+        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : $data;
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Handler/DownloadableProductInjectable/Curl.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Handler/DownloadableProductInjectable/Curl.php
index d30255ba0abfb61529bda8993fb9abc2a013571f..9000e5b1316f5afee33d4f5bd92ce172269c41c9 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Handler/DownloadableProductInjectable/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Handler/DownloadableProductInjectable/Curl.php
@@ -129,13 +129,14 @@ class Curl extends ProductCurl implements DownloadableProductInjectableInterface
             throw new \Exception("Product creation by curl handler was not successful! Response: $response");
         }
         preg_match("~Location: [^\s]*\/id\/(\d+)~", $response, $matches);
+        $checkoutData = isset($data['product']['checkout_data']) ? $data['product']['checkout_data'] : null;
         foreach ($data['downloadable']['link'] as $key => $link) {
             preg_match('`"link_id":"(\d*?)","title":"' . $link['title'] . '"`', $response, $linkId);
-            if (isset($data['product']['checkout_data']['options']['links'][$key]['label'])) {
-                $data['product']['checkout_data']['options']['links'][$key]['id'] = $linkId[1];
+            if (isset($checkoutData['options']['links'][$key]['label'])) {
+                $checkoutData['options']['links'][$key]['id'] = $linkId[1];
             }
         }
 
-        return ['id' => $matches[1], 'checkout_data' => $data['product']['checkout_data']];
+        return ['id' => $matches[1], 'checkout_data' => $checkoutData];
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create.php
new file mode 100644
index 0000000000000000000000000000000000000000..f5992970c3a882512eb82b6b2b787e7444c711d2
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order;
+
+use Magento\GiftMessage\Test\Fixture\GiftMessage;
+
+/**
+ * Class Create
+ * Adminhtml GiftMessage order create block.
+ */
+class Create extends \Magento\Sales\Test\Block\Adminhtml\Order\Create
+{
+    /**
+     * Sales order create items block.
+     *
+     * @var string
+     */
+    protected $itemsBlock = '#order-items_grid';
+
+    /**
+     * Fill order items gift messages.
+     *
+     * @param array $products
+     * @param GiftMessage $giftMessage
+     */
+    public function fillGiftMessageForItems(array $products, GiftMessage $giftMessage)
+    {
+        // Click on rootElement to solve overlapping inner elements by header menu.
+        $this->_rootElement->click();
+        /** @var \Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Items $items */
+        $items = $this->blockFactory->create(
+            'Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Items',
+            ['element' => $this->_rootElement->find($this->itemsBlock)]
+        );
+        foreach ($products as $key => $product) {
+            $giftMessageItem = $giftMessage->getItems()[$key];
+            $items->getItemProduct($product)->fillGiftMessageForm($giftMessageItem);
+        }
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.php
new file mode 100644
index 0000000000000000000000000000000000000000..b0605cca993815c98bb4c0f81973988d3e19ec7e
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\Create;
+
+use Mtf\Block\Form as ParentForm;
+use Mtf\Fixture\FixtureInterface;
+use Mtf\Client\Element;
+
+/**
+ * Class Form
+ * Backend item form for gift message
+ */
+class Form extends ParentForm
+{
+    /**
+     * Selector for 'OK' button.
+     *
+     * @var string
+     */
+    protected $okButton = '#gift_options_ok_button';
+
+    /**
+     * Fill backend GiftMessage item form.
+     *
+     * @param FixtureInterface $fixture
+     * @param Element|null $element
+     * @return $this
+     */
+    public function fill(FixtureInterface $fixture, Element $element = null)
+    {
+        parent::fill($fixture, $element);
+        $this->_rootElement->find($this->okButton)->click();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ef14080b578382fd3626d5bdef045c4cd69cce0
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<mapping strict="1">
+    <fields>
+        <sender>
+            <selector>[name="current_item_giftmessage_sender"]</selector>
+        </sender>
+        <recipient>
+            <selector>[name="current_item_giftmessage_recipient"]</selector>
+        </recipient>
+        <message>
+            <selector>[name="current_item_giftmessage_message"]</selector>
+        </message>
+    </fields>
+</mapping>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.php
new file mode 100644
index 0000000000000000000000000000000000000000..5b36f21f1fc8d27b32b85040d58aa92348a4b73d
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\Create;
+
+/**
+ * Class GiftOptions
+ * Backend GiftMessage for order form.
+ */
+class GiftOptions extends \Mtf\Block\Form
+{
+    //
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98cba3c2c273bd06181e7060a490391c9feefef2
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<mapping strict="0">
+    <fields>
+        <sender>
+            <selector>[name$="[sender]"]</selector>
+        </sender>
+        <recipient>
+            <selector>[name$="[recipient]"]</selector>
+        </recipient>
+        <message>
+            <selector>[name$="[message]"]</selector>
+        </message>
+    </fields>
+</mapping>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items.php
new file mode 100644
index 0000000000000000000000000000000000000000..812cfd8b04b98a398363542246e1a7bc281a2ed8
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\Create;
+
+use Mtf\Client\Element\Locator;
+use Mtf\Fixture\InjectableFixture;
+use Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Items\ItemProduct;
+
+/**
+ * Class Items
+ * Adminhtml GiftMessage order create items block.
+ */
+class Items extends \Magento\Sales\Test\Block\Adminhtml\Order\Create\Items
+{
+    /**
+     * Item product.
+     *
+     * @var string
+     */
+    protected $itemProduct = '//tbody[*[td//*[normalize-space(text())="%s"]]]';
+
+    /**
+     * Get item product block.
+     *
+     * @param InjectableFixture $product
+     * @return ItemProduct
+     */
+    public function getItemProduct(InjectableFixture $product)
+    {
+        return $this->blockFactory->create(
+            'Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Items\ItemProduct',
+            [
+                'element' => $this->browser->find(
+                    sprintf($this->itemProduct, $product->getName()),
+                    Locator::SELECTOR_XPATH
+                )
+            ]
+        );
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
new file mode 100644
index 0000000000000000000000000000000000000000..19bd44a0cd9d8dbfd8bc7aa7e3a36d22eb65dad0
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Items;
+
+use Magento\GiftMessage\Test\Fixture\GiftMessage;
+use Mtf\Client\Element;
+use Mtf\Client\Element\Locator;
+
+/**
+ * Class ItemProduct
+ * Item product block on backend create order page.
+ */
+class ItemProduct extends \Magento\Sales\Test\Block\Adminhtml\Order\Create\Items\ItemProduct
+{
+    /**
+     * Selector for GiftOptions link.
+     *
+     * @var string
+     */
+    protected $giftOptionsLink = '[id^="gift_options_link"]';
+
+    /**
+     * Selector for order item GiftMessage form.
+     *
+     * @var string
+     */
+    protected $giftMessageForm = '//*[@role="dialog"][*[@id="gift_options_configure"]]';
+
+    /**
+     * Magento varienLoader.js loader.
+     *
+     * @var string
+     */
+    protected $loadingMask = '//*[@id="loading-mask"]/*[@id="loading_mask_loader"]';
+
+    /**
+     * Fill GiftMessage form.
+     *
+     * @param GiftMessage $giftMessage
+     * @return void
+     */
+    public function fillGiftMessageForm(GiftMessage $giftMessage)
+    {
+        $giftOptionsLink = $this->_rootElement->find($this->giftOptionsLink);
+        $giftOptionsLink->click();
+        /** @var \Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Form $giftMessageForm */
+        $giftMessageForm = $this->blockFactory->create(
+            'Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\Form',
+            ['element' => $this->browser->find($this->giftMessageForm, Locator::SELECTOR_XPATH)]
+        );
+        $giftMessageForm->fill($giftMessage);
+        $loadingMask = $this->browser->find($this->loadingMask, Locator::SELECTOR_XPATH);
+        $this->browser->waitUntil(
+            function () use ($loadingMask) {
+                return !$loadingMask->isVisible() ? true : null;
+            }
+        );
+    }
+}
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Noroute.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.php
similarity index 67%
rename from app/code/Magento/Backend/Controller/Adminhtml/Noroute.php
rename to dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.php
index 903105251e4877db3ac14e9d59a3e20624610f1e..c19ec0ee18c85b1dd84fa75cf8a291b355b3d678 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Noroute.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.php
@@ -1,6 +1,5 @@
 <?php
 /**
- *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -22,22 +21,32 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Backend\Controller\Adminhtml;
 
-class Noroute
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\View;
+
+use Mtf\Block\Form as ParentForm;
+use Mtf\Client\Element;
+
+/**
+ * Class Form
+ * Backend item form for gift message.
+ */
+class Form extends ParentForm
 {
     /**
-     * No route action
+     * Selector for 'Close' button.
+     *
+     * @var string
+     */
+    protected $closeButton = '.ui-dialog-titlebar-close';
+
+    /**
+     * Close form dialog.
      *
-     * @param null $coreRoute
      * @return void
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function execute($coreRoute = null)
+    public function closeDialog()
     {
-        $this->getResponse()->setHeader('HTTP/1.1', '404 Not Found');
-        $this->getResponse()->setHeader('Status', '404 File not found');
-        $this->_view->loadLayout(array('default', 'adminhtml_noroute'));
-        $this->_view->renderLayout();
+        $this->_rootElement->find($this->closeButton)->click();
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ef14080b578382fd3626d5bdef045c4cd69cce0
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<mapping strict="1">
+    <fields>
+        <sender>
+            <selector>[name="current_item_giftmessage_sender"]</selector>
+        </sender>
+        <recipient>
+            <selector>[name="current_item_giftmessage_recipient"]</selector>
+        </recipient>
+        <message>
+            <selector>[name="current_item_giftmessage_message"]</selector>
+        </message>
+    </fields>
+</mapping>
diff --git a/dev/tests/functional/utils/generate/testcase.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.php
similarity index 83%
rename from dev/tests/functional/utils/generate/testcase.php
rename to dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.php
index db3c4a6cb5d1b77560d203db5d55d2d4121a76e1..baff93983545b85de6d551b90e6a0c6ff0091c8a 100644
--- a/dev/tests/functional/utils/generate/testcase.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.php
@@ -21,7 +21,14 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-require_once dirname(__DIR__) . '/' . 'bootstrap.php';
 
-$objectManager->create('Mtf\Util\Generate\TestCase')->launch();
-\Mtf\Util\Generate\GenerateResult::displayResults();
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\View;
+
+/**
+ * Class GiftOptions
+ * Backend GiftMessage for order from.
+ */
+class GiftOptions extends \Mtf\Block\Form
+{
+    //
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98cba3c2c273bd06181e7060a490391c9feefef2
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<mapping strict="0">
+    <fields>
+        <sender>
+            <selector>[name$="[sender]"]</selector>
+        </sender>
+        <recipient>
+            <selector>[name$="[recipient]"]</selector>
+        </recipient>
+        <message>
+            <selector>[name$="[message]"]</selector>
+        </message>
+    </fields>
+</mapping>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items.php
new file mode 100644
index 0000000000000000000000000000000000000000..8994f9933ba3ae87b0ded13c5c507774103f4a6b
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\View;
+
+use Mtf\Client\Element\Locator;
+use Mtf\Fixture\InjectableFixture;
+use Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Items\ItemProduct;
+
+/**
+ * Class Items
+ * Adminhtml GiftMessage order view items block.
+ */
+class Items extends \Magento\Sales\Test\Block\Adminhtml\Order\View\Items
+{
+    /**
+     * Item product selector.
+     *
+     * @var string
+     */
+    protected $itemProduct = '//tbody[*[td//*[normalize-space(text())="%s"]]]';
+
+    /**
+     * Get item product block.
+     *
+     * @param InjectableFixture $product
+     * @return ItemProduct
+     */
+    public function getItemProduct(InjectableFixture $product)
+    {
+        return $this->blockFactory->create(
+            'Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Items\ItemProduct',
+            [
+                'element' => $this->_rootElement->find(
+                    sprintf($this->itemProduct, $product->getName()),
+                    Locator::SELECTOR_XPATH
+                )
+            ]
+        );
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items/ItemProduct.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items/ItemProduct.php
new file mode 100644
index 0000000000000000000000000000000000000000..edbdc303a02d4440b153cc23d59ddb90bf3012bb
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items/ItemProduct.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Items;
+
+use Magento\GiftMessage\Test\Fixture\GiftMessage;
+use Mtf\Client\Element;
+use Mtf\Client\Element\Locator;
+
+/**
+ * Class ItemProduct
+ * Item product block on OrderView page.
+ */
+class ItemProduct extends \Magento\Sales\Test\Block\Adminhtml\Order\Create\Items\ItemProduct
+{
+    /**
+     * Selector for GiftOptions link.
+     *
+     * @var string
+     */
+    protected $giftOptionsLink = '[id^="gift_options_link"]';
+
+    /**
+     * Selector for order item GiftMessage form.
+     *
+     * @var string
+     */
+    protected $giftMessageForm = '//*[@role="dialog"][*[@id="gift_options_configure"]]';
+
+    /**
+     * Get GiftMessage form data.
+     *
+     * @param GiftMessage $giftMessage
+     * @return array
+     */
+    public function getGiftMessageFormData(GiftMessage $giftMessage)
+    {
+        $giftOptionsLink = $this->_rootElement->find($this->giftOptionsLink);
+        if ($giftOptionsLink->isVisible()) {
+            $giftOptionsLink->click();
+        }
+        /** @var \Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Form $giftMessageForm */
+        $giftMessageForm = $this->blockFactory->create(
+            'Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Form',
+            ['element' => $this->browser->find($this->giftMessageForm, Locator::SELECTOR_XPATH)]
+        );
+        $data = $giftMessageForm->getData($giftMessage);
+        $giftMessageForm->closeDialog();
+        return $data;
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInBackendOrder.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInBackendOrder.php
new file mode 100644
index 0000000000000000000000000000000000000000..65b7a53b1e5027d89246490254139ab344bef55c
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInBackendOrder.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Constraint;
+
+use Magento\GiftMessage\Test\Fixture\GiftMessage;
+use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
+use Magento\Sales\Test\Page\Adminhtml\OrderView;
+use Mtf\Constraint\AbstractAssertForm;
+
+/**
+ * Class AssertGiftMessageInBackendOrder
+ * Assert that message from dataSet is displayed on order(s) view page on backend.
+ */
+class AssertGiftMessageInBackendOrder extends AbstractAssertForm
+{
+    /**
+     * Constraint severeness.
+     *
+     * @var string
+     */
+    protected $severeness = 'high';
+
+    /**
+     * Skipped fields for verify data.
+     *
+     * @var array
+     */
+    protected $skippedFields = [
+        'allow_gift_options_for_items',
+        'allow_gift_messages_for_order',
+        'allow_gift_options',
+        'items'
+    ];
+
+    /**
+     * Assert that message from dataSet is displayed on order(s) view page on backend.
+     *
+     * @param GiftMessage $giftMessage
+     * @param OrderView $orderView
+     * @param OrderIndex $orderIndex
+     * @param array $products
+     * @param string $orderId
+     * @return void
+     */
+    public function processAssert(
+        GiftMessage $giftMessage,
+        OrderView $orderView,
+        OrderIndex $orderIndex,
+        array $products,
+        $orderId
+    ) {
+        $orderIndex->open()->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]);
+
+        if ($giftMessage->getAllowGiftMessagesForOrder()) {
+            $expectedData[] = $giftMessage->getData();
+            $actualData[] = $orderView->getGiftOptionsBlock()->getData($giftMessage);
+        }
+
+        if ($giftMessage->getAllowGiftOptionsForItems()) {
+            foreach ($products as $key => $product) {
+                $expectedData[] = $giftMessage->getItems()[$key]->getData();
+                $actualData[] = $orderView->getGiftItemsBlock()->getItemProduct($product)
+                    ->getGiftMessageFormData($giftMessage);
+            }
+        }
+
+        $errors = $this->verifyData($expectedData, $actualData);
+        \PHPUnit_Framework_Assert::assertEmpty($errors, $errors);
+    }
+
+    /**
+     * Return string representation of object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Backend gift message form data is equal to data passed from dataSet.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrder.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrder.php
index 2e72a37db3eb8c2ede5ab3566b8034f111840d95..9f667b0cc08fa14dac9014267d8794a6e7e4d854 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrder.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrder.php
@@ -24,6 +24,8 @@
 
 namespace Magento\GiftMessage\Test\Constraint;
 
+use Magento\Customer\Test\Fixture\CustomerInjectable;
+use Magento\Customer\Test\Page\CustomerAccountLogout;
 use Magento\GiftMessage\Test\Fixture\GiftMessage;
 use Magento\Sales\Test\Page\OrderHistory;
 use Magento\Sales\Test\Page\OrderView;
@@ -46,13 +48,26 @@ class AssertGiftMessageInFrontendOrder extends AbstractConstraint
      * Assert that message from dataSet is displayed on order(s) view page on frontend
      *
      * @param GiftMessage $giftMessage
+     * @param CustomerInjectable $customer
      * @param OrderHistory $orderHistory
      * @param OrderView $orderView
+     * @param CustomerAccountLogout $customerAccountLogout
      * @param string $orderId
      * @return void
      */
-    public function processAssert(GiftMessage $giftMessage, OrderHistory $orderHistory, OrderView $orderView, $orderId)
-    {
+    public function processAssert(
+        GiftMessage $giftMessage,
+        CustomerInjectable $customer,
+        OrderHistory $orderHistory,
+        OrderView $orderView,
+        CustomerAccountLogout $customerAccountLogout,
+        $orderId
+    ) {
+        $this->objectManager->create(
+            'Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep',
+            ['customer' => $customer]
+        )->run();
+
         $expectedData = [
             'sender' => $giftMessage->getSender(),
             'recipient' => $giftMessage->getRecipient(),
@@ -66,6 +81,7 @@ class AssertGiftMessageInFrontendOrder extends AbstractConstraint
             $orderView->getGiftMessageForOrderBlock()->getGiftMessage(),
             'Wrong gift message is displayed on order.'
         );
+        $customerAccountLogout->open();
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrderItems.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrderItems.php
index ec1e2e09cd47499adeb047f189f41cc191154541..b8c3fe61fdb3e4aa5ab255d7ccfd2ece908a62f2 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrderItems.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInFrontendOrderItems.php
@@ -24,6 +24,8 @@
 
 namespace Magento\GiftMessage\Test\Constraint;
 
+use Magento\Customer\Test\Fixture\CustomerInjectable;
+use Magento\Customer\Test\Page\CustomerAccountLogout;
 use Magento\GiftMessage\Test\Fixture\GiftMessage;
 use Magento\Sales\Test\Page\OrderHistory;
 use Magento\Sales\Test\Page\OrderView;
@@ -46,19 +48,28 @@ class AssertGiftMessageInFrontendOrderItems extends AbstractConstraint
      * Assert that message from dataSet is displayed for each items on order(s) view page on frontend
      *
      * @param GiftMessage $giftMessage
+     * @param CustomerInjectable $customer
      * @param OrderHistory $orderHistory
      * @param OrderView $orderView
+     * @param CustomerAccountLogout $customerAccountLogout
      * @param string $orderId
      * @param array $products
      * @return void
      */
     public function processAssert(
         GiftMessage $giftMessage,
+        CustomerInjectable $customer,
         OrderHistory $orderHistory,
         OrderView $orderView,
+        CustomerAccountLogout $customerAccountLogout,
         $orderId,
         $products = []
     ) {
+        $this->objectManager->create(
+            'Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep',
+            ['customer' => $customer]
+        )->run();
+
         $expectedData = [
             'sender' => $giftMessage->getSender(),
             'recipient' => $giftMessage->getRecipient(),
@@ -67,13 +78,22 @@ class AssertGiftMessageInFrontendOrderItems extends AbstractConstraint
         $orderHistory->open();
         $orderHistory->getOrderHistoryBlock()->openOrderById($orderId);
 
-        foreach ($products as $product) {
+        foreach ($products as $key => $product) {
+            if ($giftMessage->hasData('items')) {
+                $itemGiftMessage = $giftMessage->getItems()[$key];
+                $expectedData = [
+                    'sender' => $itemGiftMessage->getSender(),
+                    'recipient' => $itemGiftMessage->getRecipient(),
+                    'message' => $itemGiftMessage->getMessage(),
+                ];
+            }
             \PHPUnit_Framework_Assert::assertEquals(
                 $expectedData,
                 $orderView->getGiftMessageForItemBlock()->getGiftMessage($product->getName()),
                 'Wrong gift message is displayed on "' . $product->getName() . '" item.'
             );
         }
+        $customerAccountLogout->open();
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.php
index 1a8b15d841a5a9fef615f57ea13a5af820fc9196..f3d96c82c52e7c7f778bdae4a1b33bcdd6370b37 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.php
@@ -32,6 +32,13 @@ use Mtf\Fixture\InjectableFixture;
  */
 class GiftMessage extends InjectableFixture
 {
+    /**
+     * Path to GiftMessage repository
+     *
+     * @var string
+     */
+    protected $repositoryClass = 'Magento\GiftMessage\Test\Repository\GiftMessage';
+
     protected $defaultDataSet = [
         'allow_gift_options' => 'Yes',
         'allow_gift_messages_for_order' => 'Yes',
@@ -95,6 +102,12 @@ class GiftMessage extends InjectableFixture
         'backend_type' => 'virtual',
     ];
 
+    protected $items = [
+        'attribute_code' => 'items',
+        'backend_type' => 'virtual',
+        'source' => 'Magento\GiftMessage\Test\Fixture\GiftMessage\Items',
+    ];
+
     public function getGiftMessageId()
     {
         return $this->getData('gift_message_id');
@@ -134,4 +147,9 @@ class GiftMessage extends InjectableFixture
     {
         return $this->getData('allow_gift_options');
     }
+
+    public function getItems()
+    {
+        return $this->getData('items');
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.xml
index 4d5134a25248d6e9ccfa7e760289bf1a9457c60f..6a14999c910f2ed16d5c513694ed1c652fbd288f 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.xml
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage.xml
@@ -77,5 +77,10 @@
             <attribute_code>allow_gift_options_for_items</attribute_code>
             <backend_type>virtual</backend_type>
         </allow_gift_options_for_items>
+        <items>
+            <attribute_code>items</attribute_code>
+            <backend_type>virtual</backend_type>
+        </items>
     </fields>
+    <repository_class>Magento\GiftMessage\Test\Repository\GiftMessage</repository_class>
 </fixture>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage/Items.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage/Items.php
new file mode 100644
index 0000000000000000000000000000000000000000..73aa89494c99798481a6a1632f7a6af7fe9bede1
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage/Items.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Fixture\GiftMessage;
+
+use Mtf\Fixture\FixtureFactory;
+use Mtf\Fixture\FixtureInterface;
+
+/**
+ * Class Items
+ * Prepare Items for GiftMessage
+ */
+class Items implements FixtureInterface
+{
+    /**
+     * Prepared dataSet data
+     *
+     * @var array
+     */
+    protected $data;
+
+    /**
+     * Data set configuration settings
+     *
+     * @var array
+     */
+    protected $params;
+
+    /**
+     * Constructor
+     *
+     * @param FixtureFactory $fixtureFactory
+     * @param array $params
+     * @param array $data [optional]
+     */
+    public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
+    {
+        $this->params = $params;
+        if (isset($data['dataSets'])) {
+            $dataSets = explode(',', $data['dataSets']);
+            foreach ($dataSets as $dataSet) {
+                $this->data[] = $fixtureFactory->createByCode('giftMessage', ['dataSet' => trim($dataSet)]);
+            }
+        } else {
+            $this->data = $data;
+        }
+    }
+
+    /**
+     * Persist attribute options
+     *
+     * @return void
+     */
+    public function persist()
+    {
+        //
+    }
+
+    /**
+     * Return prepared data set
+     *
+     * @param string|null $key [optional]
+     * @return mixed
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function getData($key = null)
+    {
+        return $this->data;
+    }
+
+    /**
+     * Return data set configuration settings
+     *
+     * @return array
+     */
+    public function getDataConfig()
+    {
+        return $this->params;
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderCreateIndex.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderCreateIndex.xml
new file mode 100644
index 0000000000000000000000000000000000000000..17c82988fa6a2a932e25b61155b8463f31678bbb
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderCreateIndex.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page mca="sales/order_create/index">
+    <blocks>
+        <giftMessageForOrderBlock>
+            <class>Magento\GiftMessage\Test\Block\Adminhtml\Order\Create\GiftOptions</class>
+            <locator>#order-giftmessage</locator>
+            <strategy>css selector</strategy>
+        </giftMessageForOrderBlock>
+        <createGiftMessageBlock>
+            <class>Magento\GiftMessage\Test\Block\Adminhtml\Order\Create</class>
+            <locator>#order-items</locator>
+            <strategy>css selector</strategy>
+        </createGiftMessageBlock>
+    </blocks>
+</page>
\ No newline at end of file
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderView.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderView.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3e1f7fda49d0bf2981444f98673064fc5fcfc38
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderView.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page mca="sales/order/view">
+    <blocks>
+        <giftOptionsBlock>
+            <class>Magento\GiftMessage\Test\Block\Adminhtml\Order\View\GiftOptions</class>
+            <locator>.order-gift-options</locator>
+            <strategy>css selector</strategy>
+        </giftOptionsBlock>
+        <giftItemsBlock>
+            <class>Magento\GiftMessage\Test\Block\Adminhtml\Order\View\Items</class>
+            <locator>#sales_order_view_tabs_order_info_content .grid</locator>
+            <strategy>css selector</strategy>
+        </giftItemsBlock>
+    </blocks>
+</page>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Repository/GiftMessage.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Repository/GiftMessage.php
new file mode 100644
index 0000000000000000000000000000000000000000..faff70340652ccd840603ab4b0ba0bca86c0467e
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/Repository/GiftMessage.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\Repository;
+
+use Mtf\Repository\AbstractRepository;
+
+/**
+ * Class GiftMessage
+ * GiftMessage repository
+ */
+class GiftMessage extends AbstractRepository
+{
+    /**
+     * @construct
+     * @param array $defaultConfig
+     * @param array $defaultData
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function __construct(array $defaultConfig = [], array $defaultData = [])
+    {
+        $this->_data['default'] = [
+            'sender' => 'John Doe',
+            'recipient' => 'Jane Doe',
+            'message' => 'text_%isolation%',
+        ];
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.php
index 41de31ae3e6bdfcc1dc2b8f05284b540348c96a7..01533bb6249d83887b0e0218474a8f03bc0c398c 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.php
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.php
@@ -24,9 +24,8 @@
 
 namespace Magento\GiftMessage\Test\TestCase;
 
-use Magento\Customer\Test\Page\CustomerAccountLogout;
-use Mtf\ObjectManager;
 use Mtf\TestCase\Scenario;
+use Magento\Customer\Test\Page\CustomerAccountLogout;
 
 /**
  * Test Creation for Checkout with Gift Messages
@@ -50,110 +49,12 @@ use Mtf\TestCase\Scenario;
 class CheckoutWithGiftMessagesTest extends Scenario
 {
     /**
-     * Steps for scenario
-     *
-     * @var array
-     */
-    protected $scenario = [
-        'CheckoutWithGiftMessagesTest' => [
-            'methods' => [
-                'test' => [
-                    'scenario' => [
-                        'setupConfiguration' => [
-                            'module' => 'Magento_Core',
-                            'next' => 'createProducts',
-                            'arguments' => [
-                                'configData' => 'cashondelivery, enableGiftMessages',
-                            ],
-                        ],
-                        'createProducts' => [
-                            'module' => 'Magento_Catalog',
-                            'next' => 'createCustomer',
-                        ],
-                        'createCustomer' => [
-                            'module' => 'Magento_Customer',
-                            'next' => 'addProductsToTheCart'
-                        ],
-                        'addProductsToTheCart' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'proceedToCheckout',
-                        ],
-                        'proceedToCheckout' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'selectCheckoutMethod',
-                        ],
-                        'selectCheckoutMethod' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'fillBillingInformation',
-                        ],
-                        'fillBillingInformation' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'addGiftMessage',
-                        ],
-                        'addGiftMessage' => [
-                            'module' => 'Magento_GiftMessage',
-                            'next' => 'fillShippingMethod',
-                        ],
-                        'fillShippingMethod' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'selectPaymentMethod',
-                        ],
-                        'selectPaymentMethod' => [
-                            'module' => 'Magento_Checkout',
-                            'next' => 'placeOrder',
-                        ],
-                        'placeOrder' => [
-                            'module' => 'Magento_Checkout',
-                        ],
-                    ]
-                ]
-            ]
-        ]
-    ];
-
-    /**
-     * Configuration data set name
-     *
-     * @var string
-     */
-    protected $configuration;
-
-    /**
-     * Customer logout page
-     *
-     * @var CustomerAccountLogout
-     */
-    protected $customerAccountLogout;
-
-    /**
-     * Preparing configuration for test
-     *
-     * @param CustomerAccountLogout $customerAccountLogout
-     * @return void
-     */
-    public function __prepare(
-        CustomerAccountLogout $customerAccountLogout
-    ) {
-        $this->customerAccountLogout = $customerAccountLogout;
-    }
-
-    /**
-     * Runs one page checkout test
+     * Runs one page checkout test with gift message.
      *
      * @return void
      */
     public function test()
     {
-        $this->executeScenario($this->scenario);
-    }
-
-    /**
-     * Logout customer
-     *
-     * @return void
-     */
-    public function tearDown()
-    {
-        $this->customerAccountLogout->open();
+        $this->executeScenario();
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e69ce8e554c7ab0639400b165cef53e8104739ae
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\TestCase;
+
+use Mtf\TestCase\Scenario;
+
+/**
+ * Test Creation for CreateGiftMessageOnBackend
+ *
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1. Create Product according dataSet.
+ * 2. Enable Gift Messages (Order/Items level).
+ *
+ * Steps:
+ * 1. Login to backend
+ * 2. Go to Sales >Orders
+ * 3. Create new order
+ * 4. Fill data form dataSet
+ * 5. Perform all asserts
+ *
+ * @group Gift_Messages_(CS)
+ * @ZephyrId MAGETWO-29642
+ */
+class CreateGiftMessageOnBackendTest extends Scenario
+{
+    /**
+     * Run CreateGiftMessageOnBackend test.
+     *
+     * @return void
+     */
+    public function test()
+    {
+        $this->executeScenario();
+    }
+
+    /**
+     * Disable enabled config after test.
+     *
+     * @return void
+     */
+    public function tearDown()
+    {
+        $setConfigStep = $this->objectManager->create(
+            'Magento\Core\Test\TestStep\SetupConfigurationStep',
+            ['configData' => 'cashondelivery', 'rollback' => true]
+        );
+        $setConfigStep->run();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest/test.csv b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest/test.csv
new file mode 100644
index 0000000000000000000000000000000000000000..eceb66e4d4caffff48f0ebbae56c14505d7c82d0
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest/test.csv
@@ -0,0 +1,4 @@
+"products";"customer/dataSet";"billingAddress/dataSet";"shipping/shipping_service";"shipping/shipping_method";"giftMessage/data/allow_gift_options";"giftMessage/data/allow_gift_messages_for_order";"giftMessage/data/allow_gift_options_for_items";"giftMessage/data/sender";"giftMessage/data/recipient";"giftMessage/data/message";"giftMessage/data/items/dataSets";"payment/method";"constraint"
+"catalogProductSimple::default, catalogProductVirtual::default";"customer_US";"customer_US";"Flat Rate";"Fixed";"Yes";"-";"Yes";"John Doe";"Jane Doe";"text_gift_message";"default, default";"cashondelivery";"assertOrderSuccessCreateMessage, assertGiftMessageInBackendOrder, assertGiftMessageInFrontendOrderItems"
+"catalogProductSimple::default, catalogProductVirtual::default";"customer_US";"customer_US";"Flat Rate";"Fixed";"Yes";"Yes";"-";"John Doe";"Jane Doe";"text_gift_message";"-";"cashondelivery";"assertOrderSuccessCreateMessage, assertGiftMessageInBackendOrder, assertGiftMessageInFrontendOrder"
+"catalogProductSimple::default, catalogProductVirtual::default";"customer_US";"customer_US";"Flat Rate";"Fixed";"Yes";"Yes";"Yes";"John Doe";"Jane Doe";"text_gift_message";"default, default";"cashondelivery";"assertOrderSuccessCreateMessage, assertGiftMessageInBackendOrder, assertGiftMessageInFrontendOrder, assertGiftMessageInFrontendOrderItems"
\ No newline at end of file
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestStep/AddGiftMessageBackendStep.php b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestStep/AddGiftMessageBackendStep.php
new file mode 100644
index 0000000000000000000000000000000000000000..b00147060fa3b654940d586bc6a728afc2844cc9
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestStep/AddGiftMessageBackendStep.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\GiftMessage\Test\TestStep;
+
+use Magento\Sales\Test\Page\Adminhtml\OrderCreateIndex;
+use Magento\GiftMessage\Test\Fixture\GiftMessage;
+use Mtf\TestStep\TestStepInterface;
+
+/**
+ * Class AddGiftMessageBackendStep
+ * Add gift message to order or item on backend
+ */
+class AddGiftMessageBackendStep implements TestStepInterface
+{
+    /**
+     * Sales order create index page.
+     *
+     * @var OrderCreateIndex
+     */
+    protected $orderCreateIndex;
+
+    /**
+     * Gift message fixture.
+     *
+     * @var GiftMessage
+     */
+    protected $giftMessage;
+
+    /**
+     * Array with products.
+     *
+     * @var array
+     */
+    protected $products;
+
+    /**
+     * @constructor
+     * @param OrderCreateIndex $orderCreateIndex
+     * @param GiftMessage $giftMessage
+     * @param array $products
+     */
+    public function __construct(
+        OrderCreateIndex $orderCreateIndex,
+        GiftMessage $giftMessage,
+        array $products = []
+    ) {
+        $this->orderCreateIndex = $orderCreateIndex;
+        $this->giftMessage = $giftMessage;
+        $this->products = $products;
+    }
+
+    /**
+     * Add gift message to backend order.
+     *
+     * @return array
+     */
+    public function run()
+    {
+        if ($this->giftMessage->getAllowGiftMessagesForOrder()) {
+            $this->orderCreateIndex->getGiftMessageForOrderBlock()->fill($this->giftMessage);
+        }
+        if ($this->giftMessage->getAllowGiftOptionsForItems()) {
+            $this->orderCreateIndex->getCreateGiftMessageBlock()
+                ->fillGiftMessageForItems($this->products, $this->giftMessage);
+        }
+
+        return ['giftMessage' => $this->giftMessage];
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/constraint.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/constraint.xml
index 2be26c5cec4c4d3c639f8a47c9ae464bc72e78f6..dc65c394dbf93c7988fab6d9e437c1244ebbc6d3 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/constraint.xml
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/constraint.xml
@@ -30,4 +30,7 @@
     <assertGiftMessageInFrontendOrder module="Magento_GiftMessage">
         <severeness>high</severeness>
     </assertGiftMessageInFrontendOrder>
+    <assertGiftMessageInBackendOrder module="Magento_GiftMessage">
+        <severeness>high</severeness>
+    </assertGiftMessageInBackendOrder>
 </constraint>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/fixture.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/fixture.xml
index a916a14cf3c4fb04b0c432e35f831812aa9fa2dd..41ec9910a05185cbcf496085004d25ae839ae201 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/fixture.xml
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/fixture.xml
@@ -29,5 +29,11 @@
         <entity_type>gift_message</entity_type>
         <collection>Magento\GiftMessage\Model\Resource\Message\Collection</collection>
         <identifier>gift_message_id</identifier>
+        <fields>
+            <items>
+                <attribute_code>giftMessageItems</attribute_code>
+                <backend_type>virtual</backend_type>
+            </items>
+        </fields>
     </giftMessage>
 </fixture>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/scenario.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/scenario.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f33fba65f23bce60261782b45b260a50d0c9da1
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/scenario.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Mtf/Config/etc/scenario.xsd">
+    <scenario name="CheckoutWithGiftMessagesTest" module="Magento_GiftMessage">
+        <methods>
+            <method name="test">
+                <steps>
+                    <first>setupConfiguration</first>
+                    <step name="setupConfiguration" module="Magento_Core">
+                        <arguments>
+                            <item name="configData">cashondelivery, enableGiftMessages</item>
+                        </arguments>
+                        <next>createProducts</next>
+                    </step>
+                    <step name="createProducts" module="Magento_Catalog">
+                        <next>createCustomer</next>
+                    </step>
+                    <step name="createCustomer" module="Magento_Customer">
+                        <next>loginCustomerOnFrontend</next>
+                    </step>
+                    <step name="loginCustomerOnFrontend" module="Magento_Customer">
+                        <next>addProductsToTheCart</next>
+                    </step>
+                    <step name="addProductsToTheCart" module="Magento_Checkout">
+                        <next>proceedToCheckout</next>
+                    </step>
+                    <step name="proceedToCheckout" module="Magento_Checkout">
+                        <next>fillBillingInformation</next>
+                    </step>
+                    <step name="fillBillingInformation" module="Magento_Checkout">
+                        <next>fillShippingMethod</next>
+                    </step>
+                    <step name="addGiftMessage" module="Magento_GiftMessage">
+                        <next>fillShippingMethod</next>
+                    </step>
+                    <step name="fillShippingMethod" module="Magento_Checkout">
+                        <next>selectPaymentMethod</next>
+                    </step>
+                    <step name="selectPaymentMethod" module="Magento_Checkout">
+                        <next>placeOrder</next>
+                    </step>
+                    <step name="placeOrder" module="Magento_Checkout" />
+                </steps>
+            </method>
+        </methods>
+    </scenario>
+    <scenario name="CreateGiftMessageOnBackendTest" module="Magento_GiftMessage">
+        <methods>
+            <method name="test">
+                <steps>
+                    <first>setupConfiguration</first>
+                    <step name="setupConfiguration" module="Magento_Core">
+                        <arguments>
+                            <item name="configData">cashondelivery, enableGiftMessages</item>
+                        </arguments>
+                        <next>createProducts</next>
+                    </step>
+                    <step name="createProducts" module="Magento_Catalog">
+                        <next>createCustomer</next>
+                    </step>
+                    <step name="createCustomer" module="Magento_Customer">
+                        <arguments>
+                            <items name="customer">
+                                <item name="dataSet">johndoe_with_addresses</item>
+                            </items>
+                        </arguments>
+                        <next>openSalesOrders</next>
+                    </step>
+                    <step name="openSalesOrders" module="Magento_Sales">
+                        <next>createNewOrder</next>
+                    </step>
+                    <step name="createNewOrder" module="Magento_Sales">
+                        <next>selectCustomerOrder</next>
+                    </step>
+                    <step name="selectCustomerOrder" module="Magento_Sales">
+                        <next>selectStore</next>
+                    </step>
+                    <step name="selectStore" module="Magento_Sales">
+                        <next>addProducts</next>
+                    </step>
+                    <step name="addProducts" module="Magento_Sales">
+                        <next>addGiftMessageBackend</next>
+                    </step>
+                    <step name="addGiftMessageBackend" module="Magento_GiftMessage">
+                        <next>fillBillingAddress</next>
+                    </step>
+                    <step name="fillBillingAddress" module="Magento_Sales">
+                        <next>selectPaymentMethodForOrder</next>
+                    </step>
+                    <step name="selectPaymentMethodForOrder" module="Magento_Sales">
+                        <next>selectShippingMethodForOrder</next>
+                    </step>
+                    <step name="selectShippingMethodForOrder" module="Magento_Sales">
+                        <next>submitOrder</next>
+                    </step>
+                    <step name="submitOrder" module="Magento_Sales" />
+                </steps>
+            </method>
+        </methods>
+    </scenario>
+</scenarios>
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Block/Catalog/Product/View/Type/Grouped.php b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Block/Catalog/Product/View/Type/Grouped.php
index 8e911912ba8a79ccb73fcd4d46c9b1870de8df52..a69f2fdd5533ea65ef3e4a90e69a6ba894e49714 100644
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Block/Catalog/Product/View/Type/Grouped.php
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Block/Catalog/Product/View/Type/Grouped.php
@@ -34,40 +34,40 @@ use Mtf\Fixture\InjectableFixture;
 
 /**
  * Class Grouped
- * Grouped product blocks on frontend
+ * Grouped product blocks on frontend.
  */
 class Grouped extends Block
 {
     /**
-     * Selector qty for sub product by id
+     * Selector qty for sub product by id.
      *
      * @var string
      */
     protected $qtySubProductById = '[name="super_group[%d]"]';
 
     /**
-     * Selector for sub product block by name
+     * Selector for sub product block by name.
      *
      * @var string
      */
     protected $subProductByName = './/tr[./td[contains(@class,"item")] and .//*[contains(.,"%s")]]';
 
     /**
-     * Selector for sub product name
+     * Selector for sub product name.
      *
      * @var string
      */
     protected $productName = '.product.name';
 
     /**
-     * Selector for sub product price
+     * Selector for sub product price.
      *
      * @var string
      */
     protected $price = '.price.price';
 
     /**
-     * Selector for qty of sub product
+     * Selector for qty of sub product.
      *
      * @var string
      */
@@ -85,7 +85,7 @@ class Grouped extends Block
     }
 
     /**
-     * Fill product options on view page
+     * Fill product options on view page.
      *
      * @param FixtureInterface $product
      * @return void
@@ -94,33 +94,33 @@ class Grouped extends Block
     {
         /** @var GroupedProductInjectable $product */
         $associatedProducts = $product->getAssociated()['products'];
-        $data = $product->getCheckoutData()['options'];
-
-        // Replace link key to label
-        foreach ($data as $key => $productData) {
-            $productKey = str_replace('product_key_', '', $productData['name']);
-            $data[$key]['name'] = $associatedProducts[$productKey]->getName();
-        }
-
-        // Fill
-        foreach ($data as $productData) {
-            $subProduct = $this->_rootElement->find(
-                sprintf($this->subProductByName, $productData['name']),
-                Locator::SELECTOR_XPATH
-            );
-            $subProduct->find($this->qty)->setValue($productData['qty']);
+        $checkoutData = $product->getCheckoutData();
+        if (isset($checkoutData['options'])) {
+            // Replace link key to label
+            foreach ($checkoutData['options'] as $key => $productData) {
+                $productKey = str_replace('product_key_', '', $productData['name']);
+                $checkoutData['options'][$key]['name'] = $associatedProducts[$productKey]->getName();
+            }
+
+            // Fill
+            foreach ($checkoutData['options'] as $productData) {
+                $subProduct = $this->_rootElement->find(
+                    sprintf($this->subProductByName, $productData['name']),
+                    Locator::SELECTOR_XPATH
+                );
+                $subProduct->find($this->qty)->setValue($productData['qty']);
+            }
         }
     }
 
     /**
-     * Return product options on view page
+     * Return product options on view page.
      *
      * @param FixtureInterface $product
      * @return array
      */
     public function getOptions(FixtureInterface $product)
     {
-
         $options = [];
         if ($product instanceof InjectableFixture) {
             /** @var GroupedProductInjectable $product */
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable/Associated.php b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable/Associated.php
index cb263e9232043b12dba8866afc42a02c3d071b25..8d54bed60bc967dbef22a2f4e8924865039eb472 100644
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable/Associated.php
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable/Associated.php
@@ -56,26 +56,28 @@ class Associated implements FixtureInterface
      * @param FixtureFactory $fixtureFactory
      * @param array $data
      * @param array $params [optional]
+     *
+     * @SuppressWarnings(PHPMD.NPathComplexity)
      */
     public function __construct(FixtureFactory $fixtureFactory, array $data, array $params = [])
     {
         $this->params = $params;
+        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : $data;
 
-        if (isset($data['preset'])) {
-            $this->data = $this->getPreset($data['preset']);
-        }
-
-        $this->data['products'] = isset($data['products']) ? explode(',', $data['products']) : $this->data['products'];
+        $this->data['products'] = (isset($data['products']) && !is_array($data['products']))
+            ? explode(',', $data['products'])
+            : $this->data['products'];
 
         foreach ($this->data['products'] as $key => $product) {
-            list($fixture, $dataSet) = explode('::', $product);
-            /** @var $productFixture InjectableFixture */
-            $productFixture = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
-            if (!$productFixture->hasData('id')) {
-                $productFixture->persist();
+            if (!($product instanceof FixtureInterface)) {
+                list($fixture, $dataSet) = explode('::', $product);
+                /** @var $productFixture InjectableFixture */
+                $product = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
             }
-
-            $this->data['products'][$key] = $productFixture;
+            if (!$product->hasData('id')) {
+                $product->persist();
+            }
+            $this->data['products'][$key] = $product;
         }
 
         $assignedProducts = & $this->data['assigned_products'];
diff --git a/dev/tests/functional/tests/app/Magento/Tax/Test/Block/Adminhtml/Rule/Grid.php b/dev/tests/functional/tests/app/Magento/Tax/Test/Block/Adminhtml/Rule/Grid.php
index 5d795c7b26430e26215f98cfeb44645dd4be7dc5..84c60abb42daa3f3e46ca156a677846bf2d8324a 100644
--- a/dev/tests/functional/tests/app/Magento/Tax/Test/Block/Adminhtml/Rule/Grid.php
+++ b/dev/tests/functional/tests/app/Magento/Tax/Test/Block/Adminhtml/Rule/Grid.php
@@ -68,7 +68,7 @@ class Grid extends GridInterface
      *
      * @var string
      */
-    protected $firstRowSelector = '//tr[1]/td[@data-column="code"]';
+    protected $firstRowSelector = '//tr[./td[contains(@class, "col-name")]][1]';
 
     /**
      * Check if specific row exists in grid
diff --git a/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Page/Adminhtml/UrlRewriteIndex.xml b/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Page/Adminhtml/UrlRewriteIndex.xml
new file mode 100644
index 0000000000000000000000000000000000000000..87bfa9c5d10cf23d57ad193f6eec0863323151eb
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Page/Adminhtml/UrlRewriteIndex.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<page mca="admin/url_rewrite/index" module="Magento_UrlRewrite">
+    <blocks>
+        <pageActionsBlock>
+            <class>Magento\Backend\Test\Block\GridPageActions</class>
+            <locator>.page-main-actions</locator>
+            <strategy>css selector</strategy>
+        </pageActionsBlock>
+        <urlRedirectGrid>
+            <class>Magento\UrlRewrite\Test\Block\Adminhtml\Catalog\Category\Grid</class>
+            <locator>#urlrewriteGrid</locator>
+            <strategy>css selector</strategy>
+        </urlRedirectGrid>
+        <messagesBlock>
+            <class>Magento\Core\Test\Block\Messages</class>
+            <locator>.messages .messages</locator>
+            <strategy>css selector</strategy>
+        </messagesBlock>
+    </blocks>
+</page>
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/Block/Adminhtml/User/Edit/PageActions.php b/dev/tests/functional/tests/app/Magento/User/Test/Block/Adminhtml/User/Edit/PageActions.php
new file mode 100644
index 0000000000000000000000000000000000000000..02819f86ebbec0237d42d76b6c4d2c0e7b712f41
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/User/Test/Block/Adminhtml/User/Edit/PageActions.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\User\Test\Block\Adminhtml\User\Edit;
+
+use Magento\Backend\Test\Block\FormPageActions;
+
+/**
+ * Class PageActions
+ * User page actions on user edit page.
+ */
+class PageActions extends FormPageActions
+{
+    /**
+     * 'Force Sign-In' button selector.
+     *
+     * @var string
+     */
+    protected $forceSignIn = '#invalidate';
+
+    /**
+     * Click on 'Force Sign-In' button.
+     *
+     * @return void
+     */
+    public function forceSignIn()
+    {
+        $this->_rootElement->find($this->forceSignIn)->click();
+        $this->_rootElement->acceptAlert();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/Constraint/AssertAccessTokensErrorRevokeMessage.php b/dev/tests/functional/tests/app/Magento/User/Test/Constraint/AssertAccessTokensErrorRevokeMessage.php
new file mode 100644
index 0000000000000000000000000000000000000000..84cfeb4f6861b5b94e53c437740b00b026cf35ad
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/User/Test/Constraint/AssertAccessTokensErrorRevokeMessage.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\User\Test\Constraint;
+
+use Magento\User\Test\Page\Adminhtml\UserEdit;
+use Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Class AssertAccessTokensErrorRevokeMessage
+ * Assert that error message appears after click on 'Force Sing-In' button for user without tokens.
+ */
+class AssertAccessTokensErrorRevokeMessage extends AbstractConstraint
+{
+    /**
+     * User revoke tokens error message.
+     */
+    const ERROR_MESSAGE = 'This user has no tokens.';
+
+    /**
+     * Constraint severeness.
+     *
+     * @var string
+     */
+    protected $severeness = 'low';
+
+    /**
+     * Assert that error message appears after click on 'Force Sing-In' button for user without tokens.
+     *
+     * @param UserEdit $userEdit
+     * @return void
+     */
+    public function processAssert(UserEdit $userEdit)
+    {
+        \PHPUnit_Framework_Assert::assertEquals(
+            self::ERROR_MESSAGE,
+            $userEdit->getMessagesBlock()->getErrorMessages()
+        );
+    }
+
+    /**
+     * Return string representation of object
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return self::ERROR_MESSAGE . ' error message is present on UserEdit page.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/Page/Adminhtml/UserEdit.xml b/dev/tests/functional/tests/app/Magento/User/Test/Page/Adminhtml/UserEdit.xml
index c4d1d38b8e95f92b7da97d85a8b2bb68ffe8601b..206f4a86b04952b667826d65b77342d0c3875890 100644
--- a/dev/tests/functional/tests/app/Magento/User/Test/Page/Adminhtml/UserEdit.xml
+++ b/dev/tests/functional/tests/app/Magento/User/Test/Page/Adminhtml/UserEdit.xml
@@ -26,7 +26,7 @@
 <page mca="admin/user/edit" module="Magento_User">
     <blocks>
         <pageActions>
-            <class>Magento\Backend\Test\Block\FormPageActions</class>
+            <class>Magento\User\Test\Block\Adminhtml\User\Edit\PageActions</class>
             <locator>.page-main-actions</locator>
             <strategy>css selector</strategy>
         </pageActions>
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest.php b/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..a5e006c1f2e7d8993a4e88d24550e7b89fec19b4
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\User\Test\TestCase;
+
+use Magento\User\Test\Fixture\User;
+use Mtf\TestCase\Injectable;
+use Magento\User\Test\Page\Adminhtml\UserEdit;
+use Magento\User\Test\Page\Adminhtml\UserIndex;
+
+/**
+ * Revoke all access tokens for admin without tokens.
+ *
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1. Tokens are not generated for admin.
+ *
+ * Steps:
+ * 1. Open Backend.
+ * 2. Open System > All Users.
+ * 3. Open admin from the user grid.
+ * 4. Click button Force Sign-in.
+ * 5. Click Ok on popup window.
+ * 6. Perform all asserts.
+ *
+ * @group Web_API_Framework_(PS)
+ * @ZephyrId MAGETWO-29675
+ */
+class RevokeAllAccessTokensForAdminWithoutTokensTest extends Injectable
+{
+    /**
+     * User Index page.
+     *
+     * @var UserIndex
+     */
+    protected $userIndex;
+
+    /**
+     * User Edit page.
+     *
+     * @var UserEdit
+     */
+    protected $userEdit;
+
+    /**
+     * Setup necessary data for test.
+     *
+     * @param UserIndex $userIndex
+     * @param UserEdit $userEdit
+     * @return void
+     */
+    public function __inject(
+        UserIndex $userIndex,
+        UserEdit $userEdit
+    ) {
+        $this->userIndex = $userIndex;
+        $this->userEdit = $userEdit;
+    }
+
+    /**
+     * Run Revoke all access tokens for admin without tokens test.
+     *
+     * @param User $user
+     * @return void
+     */
+    public function test(User $user)
+    {
+        // Preconditions:
+        $user->persist();
+        // Steps:
+        $this->userIndex->open();
+        $this->userIndex->getUserGrid()->searchAndOpen(['username' => $user->getUsername()]);
+        $this->userEdit->getPageActions()->forceSignIn();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest/test.csv b/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest/test.csv
new file mode 100644
index 0000000000000000000000000000000000000000..df69cf7c378b3b7ec3e8effccb84d27364e7ae77
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest/test.csv
@@ -0,0 +1,2 @@
+"user/dataSet";"constraint"
+"custom_admin";"assertAccessTokensErrorRevokeMessage"
\ No newline at end of file
diff --git a/dev/tests/functional/tests/app/Magento/User/Test/etc/constraint.xml b/dev/tests/functional/tests/app/Magento/User/Test/etc/constraint.xml
index b0b8a44a22f455784177cb48a7f49208f9eb2d61..594da1e277562769fb001148908d76c26440801f 100644
--- a/dev/tests/functional/tests/app/Magento/User/Test/etc/constraint.xml
+++ b/dev/tests/functional/tests/app/Magento/User/Test/etc/constraint.xml
@@ -128,4 +128,10 @@
             <user class="Magento\User\Test\Fixture\User" />
         </require>
     </assertUserInvalidEmailMessage>
+    <assertAccessTokensErrorRevokeMessage module="Magento_User">
+        <severeness>low</severeness>
+        <require>
+            <userEdit class="Magento\User\Test\Page\Adminhtml\UserEdit" />
+        </require>
+    </assertAccessTokensErrorRevokeMessage>
 </constraint>
diff --git a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/UrlRewriteTest.php b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/UrlRewriteTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..40d98f02c2f67f5f71911ea3108a2910ced1b5ed
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/UrlRewriteTest.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Backend\Controller\Adminhtml;
+
+/**
+ * @magentoAppArea adminhtml
+ */
+class UrlRewriteTest extends \Magento\Backend\Utility\Controller
+{
+    /**
+     * Check save cms page rewrite
+     * @magentoDbIsolation enabled
+     * @magentoDataFixture Magento/Cms/_files/pages.php
+     */
+    public function testSaveActionCmsPage()
+    {
+        $page = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Cms\Model\Page');
+        $page->load('page_design_blank', 'identifier');
+
+        $this->getRequest()->setPost(
+            [
+                'description' => 'Some URL rewrite description',
+                'options' => 'R',
+                'request_path' => 'some_new_path',
+                'store_id' => 1,
+                'cms_page' => $page->getId()
+            ]
+        );
+        $this->dispatch('backend/admin/url_rewrite/save');
+
+        $this->assertSessionMessages(
+            $this->contains('The URL Rewrite has been saved.'),
+            \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
+        );
+        $this->assertRedirect($this->stringContains('backend/admin/url_rewrite/index'));
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Bundle/Controller/ProductTest.php b/dev/tests/integration/testsuite/Magento/Bundle/Controller/ProductTest.php
index 9a553bea6e667cd643318763781ca625e20908f7..919f7ec9a01a72d84a87f9d88529c17ade083d7b 100644
--- a/dev/tests/integration/testsuite/Magento/Bundle/Controller/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/Bundle/Controller/ProductTest.php
@@ -35,12 +35,6 @@ class ProductTest extends \Magento\TestFramework\TestCase\AbstractController
     public function testViewAction()
     {
         $this->dispatch('catalog/product/view/id/3');
-        $this->assertContains(
-            'catalog_product_view_type_bundle',
-            \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-                'Magento\Framework\View\LayoutInterface'
-            )->getUpdate()->getHandles()
-        );
         $responseBody = $this->getResponse()->getBody();
         $this->assertContains('Bundle Product', $responseBody);
         $this->assertContains('In stock', $responseBody);
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Product/Edit/TabsTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Product/Edit/TabsTest.php
index 68a3c94d3c82d8e42f1bb577b1070e85d3af7374..d967e51fc0b78e0491cae1d646a07602fd151120 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Product/Edit/TabsTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Block/Adminhtml/Product/Edit/TabsTest.php
@@ -51,6 +51,6 @@ class TabsTest extends \PHPUnit_Framework_TestCase
         /** @var $block \Magento\Catalog\Block\Adminhtml\Product\Edit\Tabs */
         $block = $layout->createBlock('Magento\Catalog\Block\Adminhtml\Product\Edit\Tabs');
         $this->assertArrayHasKey(0, $block->getTabsIds());
-        $this->assertNotEmpty($layout->getBlock('adminhtml\product\edit\tabs'));
+        $this->assertNotEmpty($layout->getBlock('adminhtml\product\edit\tabs_0'));
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ViewTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ViewTest.php
index 53335fb4eb24728385efcef15f1aab446601ce11..29338cea65869a13ca8249815ab9a7d0167658cc 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ViewTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Block/Product/ViewTest.php
@@ -59,7 +59,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
         /** @var $pageConfig \Magento\Framework\View\Page\Config */
         $pageConfig = $objectManager->get('Magento\Framework\View\Page\Config');
 
-        $layout->addBlock($this->_block);
+        $layout->createBlock('Magento\Catalog\Block\Product\View');
 
         $this->assertNotEmpty($pageConfig->getTitle());
         $this->assertEquals($this->_product->getMetaTitle(), $pageConfig->getTitle());
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/ProductTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/ProductTest.php
index 613a2dfdf2f28f0b458e7f87a1fc8218aeae4213..438e871f1436c34c16ad863e105e93aecdb3abfe 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Controller/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/ProductTest.php
@@ -68,12 +68,6 @@ class ProductTest extends \Magento\TestFramework\TestCase\AbstractController
         )->getLastViewedProductId();
         $this->assertEquals(1, $lastViewedProductId);
 
-        /* Layout updates */
-        $handles = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\View\LayoutInterface'
-        )->getUpdate()->getHandles();
-        $this->assertContains('catalog_product_view_type_simple', $handles);
-
         $responseBody = $this->getResponse()->getBody();
         /* Product info */
         $this->assertContains('Simple Product 1 Name', $responseBody);
@@ -106,7 +100,6 @@ class ProductTest extends \Magento\TestFramework\TestCase\AbstractController
     public function testViewActionNoProductId()
     {
         $this->dispatch('catalog/product/view/id/');
-
         $this->assert404NotFound();
     }
 
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/ViewTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/ViewTest.php
index dc678b54cb3a832b196d4a6fbbc144e0cb36ee72..a2dfecc6d864feb16b9c70166506d00f2d6ddb13 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/ViewTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Helper/Product/ViewTest.php
@@ -39,12 +39,12 @@ class ViewTest extends \PHPUnit_Framework_TestCase
     protected $_controller;
 
     /**
-     * @var \Magento\Framework\View\LayoutInterface
+     * @var \Magento\Framework\View\Result\Page
      */
-    protected $_layout;
+    protected $page;
 
     /**
-     * @var \Magento\TestFramework\Helper\Bootstrap
+     * @var \Magento\Framework\ObjectManager
      */
     protected $objectManager;
 
@@ -69,10 +69,8 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             'Magento\Catalog\Controller\Product',
             array('context' => $context)
         );
-
-        $this->_layout = $this->objectManager->get(
-            'Magento\Framework\View\LayoutInterface'
-        );
+        $resultPageFactory = $this->objectManager->get('Magento\Framework\View\Result\PageFactory');
+        $this->page = $resultPageFactory->create();
     }
 
     /**
@@ -101,7 +99,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
         $objectManager = $this->objectManager;
         $objectManager->get('Magento\Framework\Registry')->register('product', $product);
 
-        $this->_helper->initProductLayout($product, $this->_controller);
+        $this->_helper->initProductLayout($this->page, $product);
 
         /** @var \Magento\Framework\View\Page\Config $pageConfig */
         $pageConfig = $this->objectManager->get('Magento\Framework\View\Page\Config');
@@ -110,7 +108,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             \Magento\Framework\View\Page\Config::BODY_ATTRIBUTE_CLASS
         );
         $this->assertContains("product-{$uniqid}", $bodyClass);
-        $handles = $this->_layout->getUpdate()->getHandles();
+        $handles = $this->page->getLayout()->getUpdate()->getHandles();
         $this->assertContains('catalog_product_view_type_simple', $handles);
     }
 
@@ -121,8 +119,11 @@ class ViewTest extends \PHPUnit_Framework_TestCase
      */
     public function testPrepareAndRender()
     {
-        $this->_helper->prepareAndRender(10, $this->_controller);
-        $this->assertNotEmpty($this->_controller->getResponse()->getBody());
+        $this->_helper->prepareAndRender($this->page, 10, $this->_controller);
+        /** @var \Magento\TestFramework\Response $response */
+        $response = $this->objectManager->get('Magento\TestFramework\Response');
+        $this->page->renderResult($response);
+        $this->assertNotEmpty($response->getBody());
         $this->assertEquals(
             10,
             $this->objectManager->get(
@@ -139,7 +140,7 @@ class ViewTest extends \PHPUnit_Framework_TestCase
     {
         $objectManager = $this->objectManager;
         $controller = $objectManager->create('Magento\Catalog\Controller\Product');
-        $this->_helper->prepareAndRender(10, $controller);
+        $this->_helper->prepareAndRender($this->page, 10, $controller);
     }
 
     /**
@@ -148,6 +149,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
      */
     public function testPrepareAndRenderWrongProduct()
     {
-        $this->_helper->prepareAndRender(999, $this->_controller);
+        $this->_helper->prepareAndRender($this->page, 999, $this->_controller);
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/Advanced/ResultTest.php b/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/Advanced/ResultTest.php
index 11f0bbfb19ad0adcf2e40b49a8898ffc045bd954..89123585158c4101136171585c08682bd30f4d57 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/Advanced/ResultTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/Advanced/ResultTest.php
@@ -37,7 +37,7 @@ class ResultTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->_layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+        $this->_layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Framework\View\LayoutInterface'
         );
         $this->_block = $this->_layout->createBlock('Magento\CatalogSearch\Block\Advanced\Result', 'block');
diff --git a/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/ResultTest.php b/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/ResultTest.php
index 109444dc8fa2ad4acc41a9a6f44b588de2ef06ca..38540e03ebedb99bebf52f5d19a4a61c577fce43 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/ResultTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogSearch/Block/ResultTest.php
@@ -28,7 +28,7 @@ class ResultTest extends \PHPUnit_Framework_TestCase
     public function testSetListOrders()
     {
         /** @var $layout \Magento\Framework\View\Layout */
-        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Framework\View\LayoutInterface'
         );
         $layout->addBlock('Magento\Framework\View\Element\Text', 'head');
diff --git a/dev/tests/integration/testsuite/Magento/Checkout/Block/Onepage/Payment/MethodsTest.php b/dev/tests/integration/testsuite/Magento/Checkout/Block/Onepage/Payment/MethodsTest.php
index 25978753e5b0fbd37d1ea75d2a6bdbc745b5240d..720f4ce239ca403bb3b8c8de0a8e110c96d518ac 100644
--- a/dev/tests/integration/testsuite/Magento/Checkout/Block/Onepage/Payment/MethodsTest.php
+++ b/dev/tests/integration/testsuite/Magento/Checkout/Block/Onepage/Payment/MethodsTest.php
@@ -37,7 +37,7 @@ class MethodsTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         parent::setUp();
-        $this->_block = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+        $this->_block = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Framework\View\LayoutInterface'
         )->createBlock(
             'Magento\Checkout\Block\Onepage\Payment\Methods'
@@ -55,13 +55,9 @@ class MethodsTest extends \PHPUnit_Framework_TestCase
             'Magento\Payment\Model\Method\Free'
         );
 
-        $block = $this->_block->getLayout()->createBlock(
-            'Magento\Framework\View\Element\Text'
-        )->setMethodTitle(
-            $expectedTitle
-        )->setMethodLabelAfterHtml(
-            $expectedLabel
-        );
+        $block = $this->_block->getLayout()->createBlock('Magento\Framework\View\Element\Text')
+            ->setMethodTitle($expectedTitle)
+            ->setMethodLabelAfterHtml($expectedLabel);
 
         $this->assertEquals('No Payment Information Required', $this->_block->getMethodTitle($method));
         $this->_block->setChild('payment.method.free', $block);
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
index b32cbc0393fd3099e1d43f92b78bf231a3367f39..141b2b8bdd03937a2e8841b9e57177872e6d91c4 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
@@ -224,7 +224,7 @@ class GroupTest extends \Magento\Backend\Utility\Controller
         $this->assertSessionMessages($this->isEmpty(), MessageInterface::TYPE_SUCCESS);
         $this->assertSessionMessages($this->logicalNot($this->isEmpty()), MessageInterface::TYPE_ERROR);
         $this->assertSessionMessages(
-            $this->equalTo(['No such entity with groupId = 10000']),
+            $this->equalTo(['No such entity with id = 10000']),
             MessageInterface::TYPE_ERROR
         );
         $this->assertRedirect($this->stringStartsWith(self::BASE_CONTROLLER_URL . 'edit/'));
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
index 028863666d52bc4eaa17518e5f583fa116fec20c..3f4602d96a200ad63ca5b2fccc661ed0d611c54c 100755
--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
@@ -453,11 +453,11 @@ class IndexTest extends \Magento\Backend\Utility\Controller
         // verify
         $this->assertContains('<h1 class="title">new firstname new lastname</h1>', $body);
 
-        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-fieldset-element-text-account-';
+        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-0-fieldset-element-text-account-';
         $this->assertNotContains($accountStr . 'firstname"  value="test firstname"', $body);
         $this->assertContains($accountStr . 'firstname"  value="new firstname"', $body);
 
-        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-fieldset-element-text-address-';
+        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-0-fieldset-element-text-address-';
         $this->assertNotContains($addressStr . '1-firstname"  value="test firstname"', $body);
         $this->assertContains($addressStr . '1-firstname"  value="update firstname"', $body);
         $this->assertContains($addressStr . '2-firstname"  value="test firstname"', $body);
@@ -478,10 +478,10 @@ class IndexTest extends \Magento\Backend\Utility\Controller
         // verify
         $this->assertContains('<h1 class="title">test firstname test lastname</h1>', $body);
 
-        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-fieldset-element-text-account-';
+        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-0-fieldset-element-text-account-';
         $this->assertContains($accountStr . 'firstname"  value="test firstname"', $body);
 
-        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-fieldset-element-text-address-';
+        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-0-fieldset-element-text-address-';
         $this->assertContains($addressStr . '1-firstname"  value="test firstname"', $body);
         $this->assertContains($addressStr . '2-firstname"  value="test firstname"', $body);
         $this->assertContains($addressStr . '3-firstname"  value="removed firstname"', $body);
@@ -497,10 +497,10 @@ class IndexTest extends \Magento\Backend\Utility\Controller
         // verify
         $this->assertContains('<h1 class="title">New Customer</h1>', $body);
 
-        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-fieldset-element-text-account-';
+        $accountStr = 'data-ui-id="adminhtml-edit-tab-account-0-fieldset-element-text-account-';
         $this->assertContains($accountStr . 'firstname"  value=""', $body);
 
-        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-fieldset-element-text-address-';
+        $addressStr = 'data-ui-id="adminhtml-edit-tab-addresses-0-fieldset-element-text-address-';
         $this->assertNotContains($addressStr . '1-firstname"', $body);
         $this->assertNotContains($addressStr . '2-firstname"', $body);
         $this->assertNotContains($addressStr . '3-firstname"', $body);
diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/Controller/ProductTest.php b/dev/tests/integration/testsuite/Magento/Downloadable/Controller/ProductTest.php
index becf1073dcd27087afd4ba416f0030485784844e..6d5ff1e1813b293ea436f1731476e76c24391ca7 100644
--- a/dev/tests/integration/testsuite/Magento/Downloadable/Controller/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/Downloadable/Controller/ProductTest.php
@@ -35,12 +35,6 @@ class ProductTest extends \Magento\TestFramework\TestCase\AbstractController
     public function testViewAction()
     {
         $this->dispatch('catalog/product/view/id/1');
-        $this->assertContains(
-            'catalog_product_view_type_downloadable',
-            \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-                'Magento\Framework\View\LayoutInterface'
-            )->getUpdate()->getHandles()
-        );
         $responseBody = $this->getResponse()->getBody();
         $this->assertContains('Downloadable Product', $responseBody);
         $this->assertContains('In stock', $responseBody);
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php b/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
index 6f3297b43e251661454a5401184ae17f8d51e4f8..ba72a6f6c521b3b3e6325e17c9184398230f0739 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/Element/AbstractBlockTest.php
@@ -368,7 +368,7 @@ class AbstractBlockTest extends \PHPUnit_Framework_TestCase
         $parent = $this->_createBlockWithLayout('parent', 'parent');
         $block = $this->_createBlockWithLayout('');
         $parent->setChild('', $block);
-        $this->assertContains('abstractblockmock', $parent->getChildNames());
+        $this->assertContains('abstractblockmock_0', $parent->getChildNames());
     }
 
     /**
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/LayoutDirectivesTest.php b/dev/tests/integration/testsuite/Magento/Framework/View/LayoutDirectivesTest.php
index 9a2a6f7a389a5b00a779ef84ff73f2e190eb3c34..ccc6d63ec8bf8e990ebdbe4b65f3cd77778eaf3f 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/LayoutDirectivesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/LayoutDirectivesTest.php
@@ -25,8 +25,45 @@
  */
 namespace Magento\Framework\View;
 
+use Magento\Framework\View\Layout\BuilderFactory;
+
 class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
+    /**
+     * @var \Magento\Framework\View\Layout\BuilderFactory
+     */
+    protected $builderFactory;
+
+    protected function setUp()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->layoutFactory = $objectManager->get('Magento\Framework\View\LayoutFactory');
+    }
+
+    /**
+     * Prepare a layout model with pre-loaded fixture of an update XML
+     *
+     * @param string $fixtureFile
+     * @return \Magento\Framework\View\LayoutInterface
+     */
+    protected function _getLayoutModel($fixtureFile)
+    {
+        $layout = $this->layoutFactory->create();
+        /** @var $xml \Magento\Framework\View\Layout\Element */
+        $xml = simplexml_load_file(
+            __DIR__ . "/_files/layout_directives_test/{$fixtureFile}",
+            'Magento\Framework\View\Layout\Element'
+        );
+        $layout->loadString($xml->asXml());
+        $layout->generateElements();
+        return $layout;
+    }
+
     /**
      * Test scheduled operations in the rendering of elements
      *
@@ -45,8 +82,8 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
     {
         $layout = $this->_getLayoutModel('render.xml');
         $this->assertEmpty($layout->renderElement('nonexisting_element'));
-        $this->assertEquals('124', $layout->renderElement('container1'));
-        $this->assertEquals('12', $layout->renderElement('block1'));
+        $this->assertEquals('124', $layout->renderElement('container_one'));
+        $this->assertEquals('12', $layout->renderElement('block_one'));
     }
 
     /**
@@ -58,16 +95,8 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
     public function testGetBlockUnscheduled()
     {
         $layout = $this->_getLayoutModel('get_block.xml');
-        $this->assertInstanceOf('Magento\Framework\View\Element\Text', $layout->getBlock('block1'));
-        $this->assertInstanceOf('Magento\Framework\View\Element\Text', $layout->getBlock('block2'));
-    }
-
-    /**
-     * @expectedException \Magento\Framework\Exception
-     */
-    public function testGetBlockUnscheduledException()
-    {
-        $this->_getLayoutModel('get_block_exception.xml');
+        $this->assertInstanceOf('Magento\Framework\View\Element\Text', $layout->getBlock('block_first'));
+        $this->assertInstanceOf('Magento\Framework\View\Element\Text', $layout->getBlock('block_second'));
     }
 
     public function testLayoutArgumentsDirective()
@@ -81,14 +110,11 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
     public function testLayoutArgumentsDirectiveIfComplexValues()
     {
         $layout = $this->_getLayoutModel('arguments_complex_values.xml');
-
         $this->assertEquals(
             array('parameters' => array('first' => '1', 'second' => '2')),
             $layout->getBlock('block_with_args_complex_values')->getOne()
         );
-
         $this->assertEquals('two', $layout->getBlock('block_with_args_complex_values')->getTwo());
-
         $this->assertEquals(
             array('extra' => array('key1' => 'value1', 'key2' => 'value2')),
             $layout->getBlock('block_with_args_complex_values')->getThree()
@@ -152,8 +178,8 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
     public function testActionAnonymousParentBlock()
     {
         $layout = $this->_getLayoutModel('action_for_anonymous_parent_block.xml');
-        $this->assertEquals('schedule_block', $layout->getParentName('test.block.insert'));
-        $this->assertEquals('schedule_block_1', $layout->getParentName('test.block.append'));
+        $this->assertEquals('schedule_block0', $layout->getParentName('test.block.insert'));
+        $this->assertEquals('schedule_block1', $layout->getParentName('test.block.append'));
     }
 
     /**
@@ -241,28 +267,6 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    /**
-     * Prepare a layout model with pre-loaded fixture of an update XML
-     *
-     * @param string $fixtureFile
-     * @return \Magento\Framework\View\LayoutInterface
-     */
-    protected function _getLayoutModel($fixtureFile)
-    {
-        /** @var $layout \Magento\Framework\View\LayoutInterface */
-        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\View\LayoutInterface'
-        );
-        /** @var $xml \Magento\Framework\View\Layout\Element */
-        $xml = simplexml_load_file(
-            __DIR__ . "/_files/layout_directives_test/{$fixtureFile}",
-            'Magento\Framework\View\Layout\Element'
-        );
-        $layout->loadString($xml->asXml());
-        $layout->generateElements();
-        return $layout;
-    }
-
     /**
      * @magentoConfigFixture current_store true_options 1
      * @magentoAppIsolation enabled
@@ -271,7 +275,7 @@ class LayoutDirectivesTest extends \PHPUnit_Framework_TestCase
     {
         $layout = $this->_getLayoutModel('ifconfig.xml');
         $this->assertFalse($layout->getBlock('block1'));
-        $this->assertInstanceOf('Magento\Framework\View\Element\BlockInterface', $layout->getBlock('block2'));
+        $this->assertFalse( $layout->getBlock('block2'));
         $this->assertInstanceOf('Magento\Framework\View\Element\BlockInterface', $layout->getBlock('block3'));
         $this->assertFalse($layout->getBlock('block4'));
     }
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/LayoutTest.php b/dev/tests/integration/testsuite/Magento/Framework/View/LayoutTest.php
index 5d6d9b45369a4408c5a88c31e232b7c5c1331cfb..c8c0c86009f0dc16ca68e9f0220ac4bad0c6989b 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/LayoutTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/LayoutTest.php
@@ -38,22 +38,25 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
      */
     protected $_layout;
 
+    /**
+     * @var \Magento\Framework\View\LayoutFactory
+     */
+    protected $layoutFactory;
+
     protected function setUp()
     {
-        $this->_layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\View\Layout'
-        );
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->layoutFactory = $objectManager->get('Magento\Framework\View\LayoutFactory');
+        $this->_layout = $this->layoutFactory->create();
     }
 
     public function testConstructorStructure()
     {
-        $structure = new \Magento\Framework\Data\Structure();
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $structure = $objectManager->get('Magento\Framework\View\Layout\Data\Structure');
         $structure->createElement('test.container', array());
         /** @var $layout \Magento\Framework\View\LayoutInterface */
-        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
-            'Magento\Framework\View\Layout',
-            array('structure' => $structure)
-        );
+        $layout = $this->layoutFactory->create(['structure' => $structure]);
         $this->assertTrue($layout->hasElement('test.container'));
     }
 
@@ -125,12 +128,12 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         );
         $this->assertEquals(array(), $this->_layout->getAllBlocks());
         $this->_layout->generateElements();
-        $expected = array('block1', 'block1_schedule_block', 'schedule_block', 'schedule_block_1');
+        $expected = array('block1', 'block1_schedule_block0', 'schedule_block1', 'schedule_block2');
         $this->assertSame($expected, array_keys($this->_layout->getAllBlocks()));
-        $child = $this->_layout->getBlock('block1_schedule_block');
+        $child = $this->_layout->getBlock('block1_schedule_block0');
         $this->assertSame($this->_layout->getBlock('block1'), $child->getParentBlock());
-        $this->assertEquals('test', $this->_layout->getBlock('schedule_block')->getData('template'));
-        $this->assertEquals('360', $this->_layout->getBlock('schedule_block')->getData('ttl'));
+        $this->assertEquals('test', $this->_layout->getBlock('schedule_block1')->getData('template'));
+        $this->assertEquals('360', $this->_layout->getBlock('schedule_block1')->getData('ttl'));
         $this->assertFalse($this->_layout->getBlock('nonexisting'));
     }
 
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/Utility/Layout.php b/dev/tests/integration/testsuite/Magento/Framework/View/Utility/Layout.php
index cb9332ea06de8ced18d0c7f323e110b52ef1fb3a..fd1facdfbb8f594328cfd2737f51ecd42f52668c 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/Utility/Layout.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/Utility/Layout.php
@@ -113,22 +113,14 @@ class Layout
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         return [
             'processorFactory' => $objectManager->get('Magento\Framework\View\Layout\ProcessorFactory'),
-            'logger' => $objectManager->get('Magento\Framework\Logger'),
             'eventManager' => $objectManager->get('Magento\Framework\Event\ManagerInterface'),
-            'uiComponentFactory' => $objectManager->get('Magento\Framework\View\Element\UiComponentFactory'),
-            'blockFactory' => $objectManager->create('Magento\Framework\View\Element\BlockFactory', []),
-            'structure' => $objectManager->create('Magento\Framework\Data\Structure', []),
-            'argumentParser' => $objectManager->get('Magento\Framework\View\Layout\Argument\Parser'),
-            'argumentInterpreter' => $objectManager->get('layoutArgumentInterpreter'),
+            'structure' => $objectManager->create('Magento\Framework\View\Layout\Data\Structure', []),
             'scheduledStructure' => $objectManager->create('Magento\Framework\View\Layout\ScheduledStructure', []),
-            'scopeConfig' => $objectManager->create('Magento\Framework\App\Config\ScopeConfigInterface'),
-            'appState' => $objectManager->get('Magento\Framework\App\State'),
             'messageManager' => $objectManager->get('Magento\Framework\Message\ManagerInterface'),
             'themeResolver' => $objectManager->get('Magento\Framework\View\Design\Theme\ResolverInterface'),
-            'scopeResolver' => $objectManager->get('Magento\Framework\App\ScopeResolverInterface'),
-            'pageConfigReader' => $objectManager->get('Magento\Framework\View\Page\Config\Reader'),
-            'pageConfigGenerator' => $objectManager->get('Magento\Framework\View\Page\Config\Generator'),
-            'scopeType' => \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+            'pageConfigStructure' => $objectManager->create('Magento\Framework\View\Page\Config\Structure'),
+            'reader' => $objectManager->get('commonRenderPool'),
+            'generatorPool' => $objectManager->get('Magento\Framework\View\Layout\GeneratorPool'),
         ];
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/arguments_complex_values.xml b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/arguments_complex_values.xml
index eb8203aa9baf8c18bf91023b3e500a5ab9b6d845..4f7cab2944db6ca74218cf3bde85c45bb6bf66b7 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/arguments_complex_values.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/arguments_complex_values.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <block class="Magento\Framework\View\Element\Text" name="block_with_args_complex_values">
         <arguments>
             <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="one" xsi:type="array">
@@ -45,6 +45,7 @@
             </argument>
         </arguments>
     </block>
+
     <referenceBlock name="block_with_args_complex_values">
         <arguments>
             <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="two" xsi:type="string">two</argument>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block.xml b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block.xml
index cd6b070866fe72ab2f682071d78ab078af02a5b7..89f522833fdd7fd2434f11ce93da5cca1d225094 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block.xml
@@ -23,11 +23,11 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
-    <block name="block1" class="Magento\Framework\View\Element\Text">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
+    <block name="block_first" class="Magento\Framework\View\Element\Text">
         <action method="getChildBlock">
-            <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">block2</argument>
+            <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">block_second</argument>
         </action>
-        <block name="block2" class="Magento\Framework\View\Element\Text"/>
+        <block name="block_second" class="Magento\Framework\View\Element\Text"/>
     </block>
 </layout>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/ifconfig.xml b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/ifconfig.xml
index 1bdeeb94eb412d66ec2c1294f9ea23abea7a81c3..c102af27c41ba394b73f089449ed9868f62e2cf3 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/ifconfig.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/ifconfig.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <block class="Magento\Framework\View\Element\Text" name="block1" ifconfig="not_exists">
         <block class="Magento\Framework\View\Element\Text" name="block2"/>
     </block>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/render.xml b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/render.xml
index 54b3e545a0b3700dbcf9cd31a2cf7c02bffe38a7..76e5c544cc48305d466cccebd5de49b1d348a00e 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/render.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/render.xml
@@ -23,27 +23,27 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
+<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <!-- Despite reference element is not declared yet, it will "save this action for later" -->
-    <referenceBlock name="block1">
+    <referenceBlock name="block_one">
         <action method="addText">
             <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">1</argument>
         </action>
     </referenceBlock>
-    <container name="container1" label="Container 1">
-        <block class="Magento\Framework\View\Element\Text" name="block1">
+    <container name="container_one" label="Container 1">
+        <block class="Magento\Framework\View\Element\Text" name="block_one">
             <action method="addText">
                 <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">2</argument>
             </action>
         </block>
-        <block class="Magento\Framework\View\Element\Text" name="block2">
+        <block class="Magento\Framework\View\Element\Text" name="block_two">
             <action method="setText">
                 <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">3</argument>
             </action>
         </block>
     </container>
     <!-- A conventional use of reference - after element is declared -->
-    <referenceBlock name="block2">
+    <referenceBlock name="block_two">
         <action method="setText">
             <argument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="value" xsi:type="string">4</argument>
         </action>
diff --git a/dev/tests/integration/testsuite/Magento/SalesRule/Block/Adminhtml/Promo/Quote/Edit/Tab/MainTest.php b/dev/tests/integration/testsuite/Magento/SalesRule/Block/Adminhtml/Promo/Quote/Edit/Tab/MainTest.php
index cb5d12ac9cce82879bf9c8ae6e7dd3b0914dfc78..7e6ca5259d921685ffb3cac177e3627f5cd49c7e 100644
--- a/dev/tests/integration/testsuite/Magento/SalesRule/Block/Adminhtml/Promo/Quote/Edit/Tab/MainTest.php
+++ b/dev/tests/integration/testsuite/Magento/SalesRule/Block/Adminhtml/Promo/Quote/Edit/Tab/MainTest.php
@@ -49,7 +49,7 @@ class MainTest extends \PHPUnit_Framework_TestCase
         );
 
         $layout = $objectManager->create('Magento\Framework\View\Layout');
-        $block = $layout->addBlock('Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Main');
+        $block = $layout->createBlock('Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Main');
         $prepareFormMethod = new \ReflectionMethod(
             'Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Main',
             '_prepareForm'
diff --git a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Category/EditTest.php b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Category/EditTest.php
index 4ca9162c017aff6ff66741c1de60d127ae453c72..95f93f285e188b781bfc8863f5609cbf862ca507 100644
--- a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Category/EditTest.php
+++ b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Category/EditTest.php
@@ -41,10 +41,10 @@ class EditTest extends \PHPUnit_Framework_TestCase
      */
     public function testPrepareLayout($blockAttributes, $expected)
     {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $layoutFactory = $objectManager->get('Magento\Framework\View\LayoutFactory');
         /** @var $layout \Magento\Framework\View\LayoutInterface */
-        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\View\LayoutInterface'
-        );
+        $layout = $layoutFactory->create();
 
         /** @var $block \Magento\UrlRewrite\Block\Catalog\Category\Edit */
         $block = $layout->createBlock(
diff --git a/dev/tests/js/testsuite/mage/suggest/suggest-test.js b/dev/tests/js/testsuite/mage/suggest/suggest-test.js
index a5fd552fc54cfae025ce5658bd14e4d1d4a374ee..55bd0e8aa3ff10197033a0b8632f772c595e8b33 100644
--- a/dev/tests/js/testsuite/mage/suggest/suggest-test.js
+++ b/dev/tests/js/testsuite/mage/suggest/suggest-test.js
@@ -856,11 +856,11 @@ SuggestTest.prototype.testAddRecent = function() {
 SuggestTest.prototype.testRenderMultiselect = function() {
     var suggestOptions = {
             multiselect: true,
-            multiSuggestWrapper: '<div id="test-multisuggest-wrapper"></div>'
+            multiSuggestWrapper: '<div id="test-multisuggest-wrapper" data-role="parent-choice-element"></div>'
         },
         suggestInstance = this.suggestCreate(suggestOptions);
 
-    assertTrue(this.suggestElement.parent().is('#test-multisuggest-wrapper'));
+    assertTrue(this.suggestElement.closest('[data-role="parent-choice-element"]').is('#test-multisuggest-wrapper'));
     assertTrue(suggestInstance.elementWrapper.is('#test-multisuggest-wrapper'));
 };
 SuggestTest.prototype.testGetOptions = function() {
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
index b048cfee769442b1021b6accdd044dd54a9f3aa1..10fccac1664d52788106ac1a9922e9d96ceb1d4f 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
@@ -2061,7 +2061,6 @@ return array(
         'Magento\Framework\Data\Argument\Interpreter\Composite'
     ),
     array('Magento\Framework\Phrase\Renderer\Factory'),
-    array('Magento\Framework\View\Layout\Factory', 'Magento\DesignEditor\Model\AreaEmulator'),
     array('Magento\Catalog\Model\Category\Indexer\Product'),
     array('Magento\Catalog\Model\Resource\Category\Indexer\Product'),
     array('Magento\Catalog\Model\Index'),
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Cache/CleanMediaTest.php b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Cache/CleanMediaTest.php
index e0f61e5e7bc86b1bee96d1f410ffb1854900c5bb..b6ae4212aa957fcca7f7359cf7fd38b185f98d2a 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Cache/CleanMediaTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Cache/CleanMediaTest.php
@@ -64,41 +64,47 @@ class CleanMediaTest extends \PHPUnit_Framework_TestCase
         $context->expects($this->once())->method('getResponse')->will($this->returnValue($response));
         $context->expects($this->once())->method('getSession')->will($this->returnValue($session));
         $context->expects($this->once())->method('getMessageManager')->will($this->returnValue($messageManager));
+
+        $resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $resultRedirectFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\RedirectFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRedirectFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($resultRedirect);
+
         $controller = $helper->getObject(
-            'Magento\Backend\Controller\Adminhtml\Cache\CleanMedia', array('context' => $context)
+            'Magento\Backend\Controller\Adminhtml\Cache\CleanMedia',
+            [
+                'context' => $context,
+                'resultRedirectFactory' => $resultRedirectFactory
+            ]
         );
 
         // Setup expectations
         $mergeService = $this->getMock('Magento\Framework\View\Asset\MergeService', array(), array(), '', false);
         $mergeService->expects($this->once())->method('cleanMergedJsCss');
 
-        $messageManager->expects(
-            $this->once()
-        )->method(
-            'addSuccess'
-        )->with(
-            'The JavaScript/CSS cache has been cleaned.'
+        $messageManager->expects($this->once())
+            ->method('addSuccess')
+            ->with('The JavaScript/CSS cache has been cleaned.'
         );
 
-        $session->expects($this->once())->method('setIsUrlNotice')->will($this->returnSelf());
-
         $valueMap = array(
             array('Magento\Framework\View\Asset\MergeService', $mergeService),
             array('Magento\Framework\Session\SessionManager', $session)
         );
         $objectManager->expects($this->any())->method('get')->will($this->returnValueMap($valueMap));
 
-        $backendHelper->expects(
-            $this->once()
-        )->method(
-            'getUrl'
-        )->with(
-            'adminhtml/*'
-        )->will(
-            $this->returnValue('redirect_url')
-        );
+        $resultRedirect->expects($this->once())
+            ->method('setPath')
+            ->with('adminhtml/*')
+            ->willReturnSelf();
 
-        $response->expects($this->once())->method('setRedirect')->with('redirect_url');
         // Run
         $controller->execute();
     }
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Dashboard/TunnelTest.php b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Dashboard/TunnelTest.php
index 62061bbf18f72d10c46d7ce9f34dd55dba5e9890..66b28e148c5ee4188e5eb45f3bb6fdaea0654c63 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Dashboard/TunnelTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/Dashboard/TunnelTest.php
@@ -40,6 +40,11 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
      */
     protected $_objectManager;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultRaw;
+
     protected function setUp()
     {
         $this->_request = $this->getMock('Magento\Framework\App\Request\Http', array(), array(), '', false);
@@ -57,15 +62,10 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
     public function testTunnelAction()
     {
         $fixture = uniqid();
-        $this->_request->expects(
-            $this->at(0)
-        )->method(
-            'getParam'
-        )->with(
-            'ga'
-        )->will(
-            $this->returnValue(urlencode(base64_encode(json_encode(array(1)))))
-        );
+        $this->_request->expects($this->at(0))
+            ->method('getParam')
+            ->with('ga')
+            ->will($this->returnValue(urlencode(base64_encode(json_encode(array(1))))));
         $this->_request->expects($this->at(1))->method('getParam')->with('h')->will($this->returnValue($fixture));
         $tunnelResponse = $this->getMock('Magento\Framework\App\Response\Http', array(), array(), '', false);
         $httpClient = $this->getMock(
@@ -83,91 +83,63 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
         );
         $helper->expects($this->any())->method('getChartDataHash')->will($this->returnValue($fixture));
 
-        $this->_objectManager->expects(
-            $this->at(0)
-        )->method(
-            'get'
-        )->with(
-            'Magento\Backend\Helper\Dashboard\Data'
-        )->will(
-            $this->returnValue($helper)
-        );
-        $this->_objectManager->expects(
-            $this->at(1)
-        )->method(
-            'create'
-        )->with(
-            'Magento\Framework\HTTP\ZendClient'
-        )->will(
-            $this->returnValue($httpClient)
-        );
+        $this->_objectManager->expects($this->at(0))
+            ->method('get')
+            ->with('Magento\Backend\Helper\Dashboard\Data')
+            ->will($this->returnValue($helper));
+        $this->_objectManager->expects($this->at(1))
+            ->method('create')
+            ->with('Magento\Framework\HTTP\ZendClient')
+            ->will($this->returnValue($httpClient));
         $httpClient->expects($this->once())->method('setUri')->will($this->returnValue($httpClient));
         $httpClient->expects($this->once())->method('setParameterGet')->will($this->returnValue($httpClient));
         $httpClient->expects($this->once())->method('setConfig')->will($this->returnValue($httpClient));
         $httpClient->expects($this->once())->method('request')->with('GET')->will($this->returnValue($tunnelResponse));
-        $tunnelResponse->expects(
-            $this->any()
-        )->method(
-            'getHeaders'
-        )->will(
-            $this->returnValue(array('Content-type' => 'test_header'))
-        );
-        $this->_response->expects($this->any())->method('setHeader')->will($this->returnValue($this->_response));
+        $tunnelResponse->expects($this->any())->method('getHeaders')
+            ->will($this->returnValue(array('Content-type' => 'test_header')));
         $tunnelResponse->expects($this->any())->method('getBody')->will($this->returnValue('success_msg'));
-        $this->_response->expects(
-            $this->once()
-        )->method(
-            'setBody'
-        )->with(
-            'success_msg'
-        )->will(
-            $this->returnValue($this->_response)
-        );
         $this->_response->expects($this->any())->method('getBody')->will($this->returnValue('success_msg'));
+
         $controller = $this->_factory($this->_request, $this->_response);
+        $this->resultRaw->expects($this->once())
+            ->method('setHeader')
+            ->with('Content-type', 'test_header')
+            ->willReturnSelf();
+        $this->resultRaw->expects($this->once())
+            ->method('setContents')
+            ->with('success_msg')
+            ->willReturnSelf();
+
         $controller->execute();
         $this->assertEquals('success_msg', $controller->getResponse()->getBody());
     }
 
     public function testTunnelAction400()
     {
-        $this->_response->expects(
-            $this->once()
-        )->method(
-            'setBody'
-        )->with(
-            'Service unavailable: invalid request'
-        )->will(
-            $this->returnValue($this->_response)
-        );
-        $this->_response->expects($this->any())->method('setHeader')->will($this->returnValue($this->_response));
-        $this->_response->expects(
-            $this->once()
-        )->method(
-            'setHttpResponseCode'
-        )->with(
-            400
-        )->will(
-            $this->returnValue($this->_response)
-        );
-        $this->_response->expects($this->once())->method('getHttpResponseCode')->will($this->returnValue(400));
         $controller = $this->_factory($this->_request, $this->_response);
+
+        $this->resultRaw->expects($this->once())
+            ->method('setHeader')
+            ->willReturnSelf();
+        $this->resultRaw->expects($this->once())
+            ->method('setHttpResponseCode')
+            ->with(400)
+            ->willReturnSelf();
+        $this->resultRaw->expects($this->once())
+            ->method('setContents')
+            ->with('Service unavailable: invalid request')
+            ->willReturnSelf();
+
         $controller->execute();
-        $this->assertEquals(400, $controller->getResponse()->getHttpResponseCode());
     }
 
     public function testTunnelAction503()
     {
         $fixture = uniqid();
-        $this->_request->expects(
-            $this->at(0)
-        )->method(
-            'getParam'
-        )->with(
-            'ga'
-        )->will(
-            $this->returnValue(urlencode(base64_encode(json_encode(array(1)))))
-        );
+        $this->_request->expects($this->at(0))
+            ->method('getParam')
+            ->with('ga')
+            ->will($this->returnValue(urlencode(base64_encode(json_encode(array(1))))));
         $this->_request->expects($this->at(1))->method('getParam')->with('h')->will($this->returnValue($fixture));
         /** @var $helper \Magento\Backend\Helper\Dashboard\Data|PHPUnit_Framework_MockObject_MockObject */
         $helper = $this->getMock(
@@ -180,60 +152,37 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
         );
         $helper->expects($this->any())->method('getChartDataHash')->will($this->returnValue($fixture));
 
-        $this->_objectManager->expects(
-            $this->at(0)
-        )->method(
-            'get'
-        )->with(
-            'Magento\Backend\Helper\Dashboard\Data'
-        )->will(
-            $this->returnValue($helper)
-        );
+        $this->_objectManager->expects($this->at(0))
+            ->method('get')
+            ->with('Magento\Backend\Helper\Dashboard\Data')
+            ->will($this->returnValue($helper));
         $exceptionMock = new \Exception();
-        $this->_objectManager->expects(
-            $this->at(1)
-        )->method(
-            'create'
-        )->with(
-            'Magento\Framework\HTTP\ZendClient'
-        )->will(
-            $this->throwException($exceptionMock)
-        );
+        $this->_objectManager->expects($this->at(1))
+            ->method('create')
+            ->with('Magento\Framework\HTTP\ZendClient')
+            ->will($this->throwException($exceptionMock));
         $loggerMock = $this->getMock('Magento\Framework\Logger', array('logException'), array(), '', false);
         $loggerMock->expects($this->once())->method('logException')->with($exceptionMock);
-        $this->_objectManager->expects(
-            $this->at(2)
-        )->method(
-            'get'
-        )->with(
-            'Magento\Framework\Logger'
-        )->will(
-            $this->returnValue($loggerMock)
-        );
+        $this->_objectManager->expects($this->at(2))
+            ->method('get')
+            ->with('Magento\Framework\Logger')
+            ->will($this->returnValue($loggerMock));
 
-        $this->_response->expects(
-            $this->once()
-        )->method(
-            'setBody'
-        )->with(
-            'Service unavailable: see error log for details'
-        )->will(
-            $this->returnValue($this->_response)
-        );
-        $this->_response->expects($this->any())->method('setHeader')->will($this->returnValue($this->_response));
-        $this->_response->expects(
-            $this->once()
-        )->method(
-            'setHttpResponseCode'
-        )->with(
-            503
-        )->will(
-            $this->returnValue($this->_response)
-        );
-        $this->_response->expects($this->once())->method('getHttpResponseCode')->will($this->returnValue(503));
         $controller = $this->_factory($this->_request, $this->_response);
+
+        $this->resultRaw->expects($this->once())
+            ->method('setHeader')
+            ->willReturnSelf();
+        $this->resultRaw->expects($this->once())
+            ->method('setHttpResponseCode')
+            ->with(503)
+            ->willReturnSelf();
+        $this->resultRaw->expects($this->once())
+            ->method('setContents')
+            ->with('Service unavailable: see error log for details')
+            ->willReturnSelf();
+
         $controller->execute();
-        $this->assertEquals(503, $controller->getResponse()->getHttpResponseCode());
     }
 
     /**
@@ -259,7 +208,18 @@ class TunnelTest extends \PHPUnit_Framework_TestCase
             'objectManager' => $this->_objectManager,
             'frontController' => $varienFront
         );
+        $this->resultRaw = $this->getMockBuilder('Magento\Framework\Controller\Result\Raw')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $resultRawFactory = $this->getMockBuilder('Magento\Framework\Controller\Result\RawFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRawFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultRaw);
         $context = $helper->getObject('Magento\Backend\App\Action\Context', $arguments);
-        return new \Magento\Backend\Controller\Adminhtml\Dashboard\Tunnel($context);
+        return new \Magento\Backend\Controller\Adminhtml\Dashboard\Tunnel($context, $resultRawFactory);
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Account/SaveTest.php b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Account/SaveTest.php
index 34cdc68745d3ea3396fd18129b3ac5a827a05ec4..0f7014c10ad71e9239965df92840ae6493bb7dca 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Account/SaveTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Account/SaveTest.php
@@ -148,7 +148,19 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         );
         $contextMock->expects($this->any())->method('getTranslator')->will($this->returnValue($this->_translatorMock));
 
-        $args = array('context' => $contextMock);
+        $resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $resultRedirectFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\RedirectFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRedirectFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($resultRedirect);
+
+        $args = array('context' => $contextMock, 'resultRedirectFactory' => $resultRedirectFactory);
 
         $testHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
         $this->_controller = $testHelper->getObject('Magento\Backend\Controller\Adminhtml\System\Account\Save', $args);
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Config/SaveTest.php b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Config/SaveTest.php
index 33960d51babc74deeadb6feed37147d3eabe4e91..11c6b4c6ffadd3d322a4b9d06492acf82bced9f7 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Config/SaveTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Controller/Adminhtml/System/Config/SaveTest.php
@@ -75,6 +75,9 @@ class SaveTest extends \PHPUnit_Framework_TestCase
      */
     protected $_sectionCheckerMock;
 
+    /** @var \PHPUnit_Framework_MockObject_MockObject */
+    protected $resultRedirect;
+
     /**
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
@@ -138,16 +141,10 @@ class SaveTest extends \PHPUnit_Framework_TestCase
 
         $this->_cacheMock = $this->getMock('Magento\Framework\App\Cache\Type\Layout', array(), array(), '', false);
 
-        $configStructureMock->expects(
-            $this->any()
-        )->method(
-            'getElement'
-        )->will(
-            $this->returnValue($this->_sectionMock)
-        );
+        $configStructureMock->expects($this->any())->method('getElement')
+            ->will($this->returnValue($this->_sectionMock));
 
         $helperMock->expects($this->any())->method('getUrl')->will($this->returnArgument(0));
-        $this->_responseMock->expects($this->once())->method('setRedirect')->with('adminhtml/system_config/edit');
 
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
         $arguments = array(
@@ -167,6 +164,21 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             false
         );
 
+        $this->resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resultRedirect->expects($this->atLeastOnce())
+            ->method('setPath')
+            ->with('adminhtml/system_config/edit')
+            ->willReturnSelf();
+        $resultRedirectFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\RedirectFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRedirectFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultRedirect);
+
         $context = $helper->getObject('Magento\Backend\App\Action\Context', $arguments);
         $this->_controller = $this->getMock(
             'Magento\Backend\Controller\Adminhtml\System\Config\Save',
@@ -177,7 +189,8 @@ class SaveTest extends \PHPUnit_Framework_TestCase
                 $this->_sectionCheckerMock,
                 $this->_configFactoryMock,
                 $this->_cacheMock,
-                new \Magento\Framework\Stdlib\String()
+                new \Magento\Framework\Stdlib\String(),
+                $resultRedirectFactory
             )
         );
     }
@@ -218,7 +231,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             $this->returnValue($backendConfigMock)
         );
 
-        $this->_controller->execute();
+        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
     }
 
     public function testIndexActionSaveState()
@@ -239,7 +252,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue($data)
         );
-        $this->_controller->execute();
+        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
     }
 
     public function testIndexActionGetGroupForSave()
@@ -290,7 +303,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         );
         $backendConfigMock->expects($this->once())->method('save');
 
-        $this->_controller->execute();
+        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
     }
 
     public function testIndexActionSaveAdvanced()
@@ -316,6 +329,6 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         $backendConfigMock->expects($this->once())->method('save');
 
         $this->_cacheMock->expects($this->once())->method('clean')->with(\Zend_Cache::CLEANING_MODE_ALL);
-        $this->_controller->execute();
+        $this->assertEquals($this->resultRedirect, $this->_controller->execute());
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Model/ViewTest.php b/dev/tests/unit/testsuite/Magento/Backend/Model/ViewTest.php
deleted file mode 100644
index 9e11b57cf50a064bc1223ed4727bfadbbdb039a4..0000000000000000000000000000000000000000
--- a/dev/tests/unit/testsuite/Magento/Backend/Model/ViewTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Backend\Model;
-
-class ViewTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \Magento\Backend\Model\View
-     */
-    protected $_view;
-
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_layoutMock;
-
-    protected function setUp()
-    {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $aclFilter = $this->getMock('Magento\Backend\Model\Layout\Filter\Acl', [], [], '', false);
-        $this->_layoutMock = $this->getMock('Magento\Framework\View\Layout', [], [], '', false);
-        $layoutProcessor = $this->getMock('Magento\Core\Model\Layout\Merge', [], [], '', false);
-        $configMock = $this->getMock('Magento\Framework\View\Page\Config', [], [], '', false);
-
-        $node = new \Magento\Framework\Simplexml\Element('<node/>');
-        $this->_layoutMock->expects($this->once())->method('getNode')->will($this->returnValue($node));
-        $this->_layoutMock->expects($this->any())->method('getUpdate')->will($this->returnValue($layoutProcessor));
-
-        $resultPage = $this->getMockBuilder('Magento\Framework\View\Result\Page')
-            ->disableOriginalConstructor()
-            ->setMethods(['getLayout', 'getDefaultLayoutHandle', 'getConfig'])
-            ->getMock();
-        $resultPage->expects($this->any())
-            ->method('getConfig')
-            ->will($this->returnValue($configMock));
-        $resultPage->expects($this->atLeastOnce())
-            ->method('getLayout')
-            ->will($this->returnValue($this->_layoutMock));
-        $pageFactory = $this->getMockBuilder('Magento\Framework\View\Result\PageFactory')
-            ->disableOriginalConstructor()
-            ->setMethods(['create'])
-            ->getMock();
-        $pageFactory->expects($this->once())
-            ->method('create')
-            ->will($this->returnValue($resultPage));
-
-        $this->_view = $helper->getObject(
-            'Magento\Backend\Model\View',
-            array(
-                'aclFilter' => $aclFilter,
-                'layout' => $this->_layoutMock,
-                'request' => $this->getMock('Magento\Framework\App\Request\Http', array(), array(), '', false),
-                'pageFactory' => $pageFactory
-            )
-        );
-    }
-
-    public function testLoadLayoutWhenBlockIsGenerate()
-    {
-        $this->_layoutMock->expects($this->once())->method('generateElements');
-        $this->_view->loadLayout();
-    }
-
-    public function testLoadLayoutWhenBlockIsNotGenerate()
-    {
-        $this->_layoutMock->expects($this->never())->method('generateElements');
-        $this->_view->loadLayout(null, false, true);
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
index 3e713801168f3a6a074a78a415b20e894b65fdae..0752bc26157aa1365fe292a7d6667bc510341b2c 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/CategoriesJsonTest.php
@@ -66,6 +66,11 @@ class CategoriesJsonTest extends \PHPUnit_Framework_TestCase
      */
     protected $objectManagerMock;
 
+    /**
+     * @var \Magento\Framework\Controller\Result\JSON|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultJson;
+
     public function setUp()
     {
         $this->responseMock = $this->getMock('Magento\Framework\App\Response\Http', array(), array(), '', false);
@@ -93,11 +98,33 @@ class CategoriesJsonTest extends \PHPUnit_Framework_TestCase
                 )
             )
         );
+
+        $this->resultJson = $this->getMockBuilder('Magento\Framework\Controller\Result\JSON')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $resultJsonFactory = $this->getMockBuilder('Magento\Framework\Controller\Result\JSONFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultJsonFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultJson);
+
+        $this->layoutMock = $this->getMock('Magento\Core\Model\Layout', array('createBlock'), array(), '', false);
+
+        $layoutFactory = $this->getMockBuilder('Magento\Framework\View\LayoutFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $layoutFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->layoutMock);
+
         $context->expects($this->once())->method('getRequest')->will($this->returnValue($this->requestMock));
         $context->expects($this->once())->method('getResponse')->will($this->returnValue($this->responseMock));
         $this->registryMock = $this->getMock('Magento\Framework\Registry', array(), array(), '', false);
         $this->controller = new \Magento\Catalog\Controller\Adminhtml\Category\Widget\CategoriesJson(
-            $context, $this->registryMock
+            $context, $layoutFactory, $resultJsonFactory, $this->registryMock
         );
     }
 
@@ -106,11 +133,9 @@ class CategoriesJsonTest extends \PHPUnit_Framework_TestCase
         $this->chooserBlockMock = $this->getMock(
             'Magento\Catalog\Block\Adminhtml\Category\Widget\Chooser', array(), array(), '', false
         );
-        $this->layoutMock = $this->getMock('Magento\Core\Model\Layout', array('createBlock'), array(), '', false);
         $this->layoutMock->expects($this->once())->method('createBlock')->will(
             $this->returnValue($this->chooserBlockMock)
         );
-        $this->viewMock->expects($this->once())->method('getLayout')->will($this->returnValue($this->layoutMock));
     }
 
     public function testExecute()
@@ -130,7 +155,7 @@ class CategoriesJsonTest extends \PHPUnit_Framework_TestCase
         );
         $testHtml = '<div>Some test html</div>';
         $this->chooserBlockMock->expects($this->once())->method('getTreeJson')->will($this->returnValue($testHtml));
-        $this->responseMock->expects($this->once())->method('representJson')->with($this->equalTo($testHtml));
+        $this->resultJson->expects($this->once())->method('setJsonData')->with($testHtml)->willReturnSelf();
         $this->controller->execute();
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/ChooserTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/ChooserTest.php
index 179c0dd8026aed7dab16988cecf5da042967ff26..ccb8048948dde9267824fd07eb16fca40abf5e77 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/ChooserTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Category/Widget/ChooserTest.php
@@ -61,6 +61,11 @@ class ChooserTest extends \PHPUnit_Framework_TestCase
      */
     protected $objectManagerMock;
 
+    /**
+     * @var \Magento\Framework\Controller\Result\Raw|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultRaw;
+
     public function setUp()
     {
         $this->responseMock = $this->getMock('Magento\Framework\App\Response\Http', array(), array(), '', false);
@@ -88,10 +93,31 @@ class ChooserTest extends \PHPUnit_Framework_TestCase
                 )
             )
         );
+
+        $this->resultRaw = $this->getMockBuilder('Magento\Framework\Controller\Result\Raw')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $resultRawFactory = $this->getMockBuilder('Magento\Framework\Controller\Result\RawFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRawFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultRaw);
+
+        $this->layoutMock = $this->getMock('Magento\Core\Model\Layout', array('createBlock'), array(), '', false);
+        $layoutFactory = $this->getMockBuilder('Magento\Framework\View\LayoutFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $layoutFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->layoutMock);
+
         $context->expects($this->once())->method('getRequest')->will($this->returnValue($this->requestMock));
         $context->expects($this->once())->method('getResponse')->will($this->returnValue($this->responseMock));
         $this->controller = new \Magento\Catalog\Controller\Adminhtml\Category\Widget\Chooser(
-            $context
+            $context, $layoutFactory, $resultRawFactory
         );
     }
 
@@ -100,11 +126,10 @@ class ChooserTest extends \PHPUnit_Framework_TestCase
         $this->chooserBlockMock = $this->getMock(
             'Magento\Catalog\Block\Adminhtml\Category\Widget\Chooser', array(), array(), '', false
         );
-        $this->layoutMock = $this->getMock('Magento\Core\Model\Layout', array('createBlock'), array(), '', false);
+
         $this->layoutMock->expects($this->once())->method('createBlock')->will(
             $this->returnValue($this->chooserBlockMock)
         );
-        $this->viewMock->expects($this->once())->method('getLayout')->will($this->returnValue($this->layoutMock));
     }
 
     public function testExecute()
@@ -112,7 +137,7 @@ class ChooserTest extends \PHPUnit_Framework_TestCase
         $this->_getTreeBlock();
         $testHtml = '<div>Some test html</div>';
         $this->chooserBlockMock->expects($this->once())->method('toHtml')->will($this->returnValue($testHtml));
-        $this->responseMock->expects($this->once())->method('setBody')->with($this->equalTo($testHtml));
+        $this->resultRaw->expects($this->once())->method('setContents')->with($testHtml);
         $this->controller->execute();
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
index 5e884ad818159ba590b86ab7da7a0d21faf9c679..434af4d436c2bf34e22992307ec67a1a21de5650 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/SaveTest.php
@@ -113,6 +113,18 @@ class SaveTest extends \PHPUnit_Framework_TestCase
             false
         );
 
+        $resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $resultRedirectFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\RedirectFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRedirectFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($resultRedirect);
+
         $this->object = (new \Magento\TestFramework\Helper\ObjectManager($this))->getObject(
             'Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Save',
             [
@@ -120,6 +132,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
                 'attributeHelper' => $this->attributeHelper,
                 'stockIndexerProcessor' => $this->stockIndexerProcessor,
                 'stockItemBuilder' => $this->stockItemBuilder,
+                'resultRedirectFactory' => $resultRedirectFactory
             ]
         );
 
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/MassStatusTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/MassStatusTest.php
index a317dbd420adfde847dbc29e07f1c73f6c158eff..8370c845c08aad8ef66fcb18c922a7e5406a0baa 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/MassStatusTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/MassStatusTest.php
@@ -31,6 +31,9 @@ class MassStatusTest extends \Magento\Catalog\Controller\Adminhtml\ProductTest
      */
     protected $priceProcessor;
 
+    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Backend\Model\View\Result\Redirect */
+    protected $resultRedirect;
+
     protected function setUp()
     {
         $this->priceProcessor = $this->getMockBuilder('Magento\Catalog\Model\Indexer\Product\Price\Processor')
@@ -46,10 +49,22 @@ class MassStatusTest extends \Magento\Catalog\Controller\Adminhtml\ProductTest
         $product->expects($this->any())->method('getStoreId')->will($this->returnValue('1'));
         $productBuilder->expects($this->any())->method('build')->will($this->returnValue($product));
 
+        $this->resultRedirect = $this->getMockBuilder('Magento\Backend\Model\View\Result\Redirect')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $resultRedirectFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\RedirectFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultRedirectFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultRedirect);
+
         $this->action = new \Magento\Catalog\Controller\Adminhtml\Product\MassStatus(
             $this->initContext(),
             $productBuilder,
-            $this->priceProcessor
+            $this->priceProcessor,
+            $resultRedirectFactory
         );
 
     }
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/NewActionTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/NewActionTest.php
index 21d5d89f6972524b6bee9f446eeebd7123b21b11..a05fe47917a3295c2aecbe6fd5acc278eab80f3d 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/NewActionTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/Product/NewActionTest.php
@@ -28,6 +28,16 @@ class NewActionTest extends \Magento\Catalog\Controller\Adminhtml\ProductTest
 {
     protected $action;
 
+    /**
+     * @var \Magento\Backend\Model\View\Result\Page|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultPage;
+
+    /**
+     * @var \Magento\Backend\Model\View\Result\Forward|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultForward;
+
     protected function setUp()
     {
         $productBuilder = $this->getMockBuilder('Magento\Catalog\Controller\Adminhtml\Product\Builder')->setMethods([
@@ -40,13 +50,42 @@ class NewActionTest extends \Magento\Catalog\Controller\Adminhtml\ProductTest
         $product->expects($this->any())->method('getStoreId')->will($this->returnValue('1'));
         $productBuilder->expects($this->any())->method('build')->will($this->returnValue($product));
 
+        $this->resultPage = $this->getMockBuilder('Magento\Backend\Model\View\Result\Page')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $resultPageFactory = $this->getMockBuilder('Magento\Framework\View\Result\PageFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultPageFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->resultPage);
+
+        $this->resultForward = $this->getMockBuilder('Magento\Backend\Model\View\Result\Forward')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $resultForwardFactory = $this->getMockBuilder('Magento\Backend\Model\View\Result\ForwardFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultForwardFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->resultForward);
+
         $this->action = new \Magento\Catalog\Controller\Adminhtml\Product\NewAction(
             $this->initContext(),
             $productBuilder,
             $this->getMockBuilder('Magento\Catalog\Controller\Adminhtml\Product\Initialization\StockDataFilter')
-                ->disableOriginalConstructor()->getMock()
+                ->disableOriginalConstructor()->getMock(),
+            $resultPageFactory,
+            $resultForwardFactory
         );
 
+        $this->resultPage->expects($this->atLeastOnce())
+            ->method('getLayout')
+            ->willReturn($this->layout);
+
     }
 
     /**
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/ProductTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/ProductTest.php
index a25e57a172ba0f83ebd68965941a2a89bf8f19ba..5d93e0b106fe67c8b6c91c85bd847ede8a237d5d 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/ProductTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Adminhtml/ProductTest.php
@@ -35,6 +35,9 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
      */
     protected $action;
 
+    /** @var \Magento\Framework\View\Layout  */
+    protected $layout;
+
     /**
      *  Init context object
      */
@@ -54,21 +57,10 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
 
         $block = $this->getMockBuilder('\Magento\Framework\View\Element\AbstractBlock')
             ->disableOriginalConstructor()->getMockForAbstractClass();
-        $layout = $this->getMockBuilder('Magento\Framework\View\Layout\Element\Layout')
+        $this->layout = $this->getMockBuilder('Magento\Framework\View\Layout')
             ->setMethods(['getBlock'])->disableOriginalConstructor()
             ->getMock();
-        $layout->expects($this->any())->method('getBlock')->will($this->returnValue($block));
-        $view = $this->getMockBuilder('Magento\Framework\App\View')
-            ->setMethods(['loadLayout', 'getLayout', 'renderLayout'])
-            ->disableOriginalConstructor()->getMock();
-        $view->expects($this->any())->method('renderLayout')->will($this->returnSelf());
-        $view->expects($this->any())->method('getLayout')->will($this->returnValue($layout));
-        $view->expects($this->any())->method('loadLayout')->with(array(
-            'default',
-            'popup',
-            'catalog_product_new',
-            'catalog_product_simple'
-        ))->will($this->returnSelf());
+        $this->layout->expects($this->any())->method('getBlock')->will($this->returnValue($block));
 
         $eventManager = $this->getMockBuilder('Magento\Framework\Event\Manager')
             ->setMethods(['dispatch'])->disableOriginalConstructor()->getMock();
@@ -109,7 +101,6 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
 
         $this->context->expects($this->any())->method('getTitle')->will($this->returnValue($title));
         $this->context->expects($this->any())->method('getEventManager')->will($this->returnValue($eventManager));
-        $this->context->expects($this->any())->method('getView')->will($this->returnValue($view));
         $this->context->expects($this->any())->method('getRequest')->will($this->returnValue($requestInterfaceMock));
         $this->context->expects($this->any())->method('getResponse')->will($this->returnValue($responseInterfaceMock));
         $this->context->expects($this->any())->method('getObjectManager')->will($this->returnValue($objectManagerMock));
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Category/ViewTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Category/ViewTest.php
index 362131c79657215b0e842c540ad1cf47ff48febf..0eae2310de4b0d3f33e6912fa4e827a7d566e2b1 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Controller/Category/ViewTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Controller/Category/ViewTest.php
@@ -108,15 +108,28 @@ class ViewTest extends \PHPUnit_Framework_TestCase
     protected $layoutHelper;
 
     /**
-     * @var \Magento\Catalog\Controller\Category
+     * @var \Magento\Catalog\Controller\Category\View
      */
     protected $action;
 
+    /**
+     * @var \Magento\Framework\Controller\ResultFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resultFactory;
+
+    /**
+     * @var \Magento\Framework\View\Page|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $page;
+
     /**
      * @var \Magento\Framework\View\Page\Config
      */
     protected $pageConfig;
 
+    /**
+     * Set up instances and mock objects
+     */
     public function setUp()
     {
         $this->request = $this->getMock('Magento\Framework\App\RequestInterface');
@@ -135,12 +148,17 @@ class ViewTest extends \PHPUnit_Framework_TestCase
         $this->pageConfig->expects($this->any())->method('addBodyClass')->will($this->returnSelf());
 
         $this->page = $this->getMockBuilder('Magento\Framework\View\Page')
-            ->setMethods(['getConfig', 'initLayout'])->disableOriginalConstructor()->getMock();
+            ->setMethods(['getConfig', 'initLayout', 'addPageLayoutHandles', 'getLayout'])
+            ->disableOriginalConstructor()->getMock();
         $this->page->expects($this->any())->method('getConfig')->will($this->returnValue($this->pageConfig));
+        $this->page->expects($this->any())->method('addPageLayoutHandles')->will($this->returnSelf());
+        $this->page->expects($this->any())->method('getLayout')->will($this->returnValue($this->layout));
 
         $this->view = $this->getMock('Magento\Framework\App\ViewInterface');
         $this->view->expects($this->any())->method('getLayout')->will($this->returnValue($this->layout));
-        $this->view->expects($this->any())->method('getPage')->will($this->returnValue($this->page));
+
+        $this->resultFactory = $this->getMock('Magento\Framework\Controller\ResultFactory', [], [], '', false);
+        $this->resultFactory->expects($this->any())->method('create')->will($this->returnValue($this->page));
 
         $this->context = $this->getMock('Magento\Backend\App\Action\Context', [], [], '', false);
         $this->context->expects($this->any())->method('getRequest')->will($this->returnValue($this->request));
@@ -149,6 +167,8 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($this->objectManager));
         $this->context->expects($this->any())->method('getEventManager')->will($this->returnValue($this->eventManager));
         $this->context->expects($this->any())->method('getView')->will($this->returnValue($this->view));
+        $this->context->expects($this->any())->method('getResultFactory')
+            ->will($this->returnValue($this->resultFactory));
 
         $this->category = $this->getMock('Magento\Catalog\Model\Category', [], [], '', false);
         $this->categoryFactory = $this->getMock('Magento\Catalog\Model\CategoryFactory', ['create'], [], '', false);
@@ -160,11 +180,20 @@ class ViewTest extends \PHPUnit_Framework_TestCase
         $this->catalogDesign = $this->getMock('Magento\Catalog\Model\Design', [], [], '', false);
         $this->layoutHelper = $this->getMock('Magento\Theme\Helper\Layout', [], [], '', false);
 
+        $resultPageFactory = $this->getMockBuilder('Magento\Framework\View\Result\PageFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $resultPageFactory->expects($this->atLeastOnce())
+            ->method('create')
+            ->willReturn($this->page);
+
         $this->action = (new ObjectManager($this))->getObject('Magento\Catalog\Controller\Category\View', [
             'context' => $this->context,
             'catalogDesign' => $this->catalogDesign,
             'categoryFactory' => $this->categoryFactory,
             'storeManager' => $this->storeManager,
+            'resultPageFactory' => $resultPageFactory
         ]);
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Adminhtml/Stock/ItemTest.php b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Adminhtml/Stock/ItemTest.php
index f16b812476f8c492d294c9eb15a97295f907bbcb..e2d307147270e8150505390449a3fa33c7b9c462 100644
--- a/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Adminhtml/Stock/ItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Adminhtml/Stock/ItemTest.php
@@ -60,6 +60,7 @@ class ItemTest extends \PHPUnit_Framework_TestCase
 
     public function testIsQtyCheckApplicable()
     {
+        $this->_model->setData('backorders', \Magento\CatalogInventory\Model\Stock::BACKORDERS_YES_NONOTIFY);
         $this->assertTrue($this->_model->checkQty(1.0));
     }
 
@@ -72,4 +73,9 @@ class ItemTest extends \PHPUnit_Framework_TestCase
         $result = $this->_model->checkQuoteItemQty(1, 1);
         $this->assertEquals('We don\'t have as many "qwerty" as you requested.', $result->getMessage());
     }
+
+    public function testHasAdminArea()
+    {
+        $this->assertTrue($this->_model->hasAdminArea());
+    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessorTest.php b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..881234b574e7489b1277a7876ae89f2bce433e53
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessorTest.php
@@ -0,0 +1,148 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer;
+
+class QtyProcessorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var QtyProcessor
+     */
+    protected $qtyProcessor;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $quoteItemQtyList;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $itemMock;
+
+    public function setUp()
+    {
+        $this->quoteItemQtyList = $this->getMockBuilder(
+            'Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\QuoteItemQtyList'
+        )
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->qtyProcessor = new QtyProcessor($this->quoteItemQtyList);
+        $this->itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(['getParentItem', 'getProduct'])
+            ->getMock();
+    }
+
+    public function testSetItem()
+    {
+        $itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->assertInstanceOf(
+            'Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer\QtyProcessor',
+            $this->qtyProcessor->setItem($itemMock)
+        );
+    }
+
+    public function testGetRowQty()
+    {
+        $qty = 1;
+
+        $itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $parentItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $itemMock->expects($this->any())
+            ->method('getParentItem')
+            ->willReturn($parentItemMock);
+        $parentItemMock->expects($this->once())
+            ->method('getQty')
+            ->willReturn($qty);
+
+        $this->qtyProcessor->setItem($itemMock);
+        $this->assertEquals($qty, $this->qtyProcessor->getRowQty($qty));
+    }
+
+    /**
+     */
+    public function testGetQtyForCheckNoParentItem()
+    {
+        $qty = 1;
+        $productId = 1;
+
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->setMethods(['getId'])
+            ->getMock();
+        $productMock->expects($this->once())
+            ->method('getId')
+            ->willReturn($productId);
+        $itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $itemMock->expects($this->any())
+            ->method('getProduct')
+            ->willReturn($productMock);
+        $this->quoteItemQtyList->expects($this->once())
+            ->method('getQty')
+            ->withAnyParameters()
+            ->willReturn($qty);
+
+        $this->qtyProcessor->setItem($itemMock);
+        $this->assertEquals($qty, $this->qtyProcessor->getQtyForCheck($qty));
+    }
+
+    public function testGetQtyForCheck()
+    {
+        $qty = 1;
+        $productId = 1;
+
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->setMethods(['getId'])
+            ->getMock();
+        $productMock->expects($this->once())
+            ->method('getId')
+            ->willReturn($productId);
+        $parentItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->itemMock->expects($this->any())
+            ->method('getParentItem')
+            ->willReturn($parentItemMock);
+        $this->itemMock->expects($this->any())
+            ->method('getProduct')
+            ->willReturn($productMock);
+        $this->quoteItemQtyList->expects($this->once())
+            ->method('getQty')
+            ->withAnyParameters()
+            ->willReturn($qty);
+
+        $this->qtyProcessor->setItem($this->itemMock);
+        $this->assertEquals($qty, $this->qtyProcessor->getQtyForCheck($qty));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItemTest.php b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItemTest.php
index 27221df4a2037a60749e35365574da85a4ea7ac4..84d72152e0bb186ec169c005fe8716db62583a28 100644
--- a/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/StockItemTest.php
@@ -23,226 +23,122 @@
  */
 namespace Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer;
 
-use Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\QuoteItemQtyList;
-
 class StockItemTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer\StockItem
+     * @var StockItem
      */
-    protected $model;
+    protected $stockItem;
 
     /**
-     * @var QuoteItemQtyList| \PHPUnit_Framework_MockObject_MockObject
+     * @var \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $quoteItemQtyList;
+    protected $configMock;
 
     /**
-     * @var \Magento\Catalog\Model\ProductTypes\ConfigInterface| \PHPUnit_Framework_MockObject_MockObject
+     * @var \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $typeConfig;
+    protected $qtyProcessorMock;
 
-    protected function setUp()
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $itemMock;
+
+    public function setUp()
     {
-        $this->quoteItemQtyList = $this
-            ->getMockBuilder('Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\QuoteItemQtyList')
+        $this->configMock = $this->getMockBuilder('Magento\Catalog\Model\ProductTypes\Config')
             ->disableOriginalConstructor()
             ->getMock();
-
-        $this->typeConfig = $this
-            ->getMockBuilder('Magento\Catalog\Model\ProductTypes\ConfigInterface')
+        $this->qtyProcessorMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer\QtyProcessor'
+        )
             ->disableOriginalConstructor()
             ->getMock();
-
-        $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
-
-        $this->model = $objectManagerHelper->getObject(
-            'Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer\StockItem',
-            [
-                'quoteItemQtyList' => $this->quoteItemQtyList,
-                'typeConfig' => $this->typeConfig
-            ]
-        );
+        $this->stockItem = new StockItem($this->configMock, $this->qtyProcessorMock);
+        $this->itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(['getParentItem', 'getProduct'])
+            ->getMock();
     }
 
-    public function testInitializeWithSubitem()
+    public function testInitialize()
     {
-        $qty = 2;
-        $parentItemQty = 3;
+        $qty = 1;
+        $rowQty = 2;
+        $qtyForCheck = 3;
 
-        $stockItem = $this->getMockBuilder('Magento\CatalogInventory\Model\Stock\Item')
-            ->setMethods(
-                [
-                    'checkQuoteItemQty',
-                    'setProductName',
-                    'setIsChildItem',
-                    'hasIsChildItem',
-                    'unsIsChildItem',
-                    '__wakeup'
-                ]
-            )
-            ->disableOriginalConstructor()
-            ->getMock();
-        $quoteItem = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
-            ->setMethods(
-                [
-                    'getParentItem',
-                    'getProduct',
-                    'getId',
-                    'getQuoteId',
-                    'setIsQtyDecimal',
-                    'setData',
-                    'setUseOldQty',
-                    'setMessage',
-                    'setBackorders',
-                    '__wakeup'
-                ]
-            )
-            ->disableOriginalConstructor()
-            ->getMock();
-        $parentItem = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
-            ->setMethods(['getQty', 'setIsQtyDecimal', 'getProduct', '__wakeup'])
-            ->disableOriginalConstructor()
-            ->getMock();
-        $product = $this->getMockBuilder('Magento\Catalog\Model\Product')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $parentProduct = $this->getMockBuilder('Magento\Catalog\Model\Product')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $productTypeInstance = $this->getMockBuilder('Magento\Catalog\Model\Product\Type\AbstractType')
+        $stockItemMock = $this->getMockBuilder('Magento\CatalogInventory\Model\Stock\Item')
             ->disableOriginalConstructor()
+            ->setMethods(['hasIsChildItem', 'checkQuoteItemQty', 'setProduct'])
             ->getMock();
-        $productTypeCustomOption = $this->getMockBuilder('Magento\Catalog\Model\Product\Configuration\Item\Option')
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
             ->disableOriginalConstructor()
+            ->setMethods(['getTypeInstance', 'getForceChildItemQtyChanges', 'getCustomOption', 'getName'])
             ->getMock();
-        $result = $this->getMockBuilder('Magento\Framework\Object')
-            ->setMethods(
-                [
-                    'getItemIsQtyDecimal',
-                    'getHasQtyOptionUpdate',
-                    'getOrigQty',
-                    'getItemUseOldQty',
-                    'getMessage',
-                    'getItemBackorders',
-                ]
-            )
+
+        $customOptionMock = $this->getMockBuilder('Magneto\Framework\Object')
             ->disableOriginalConstructor()
+            ->setMethods(['getValue'])
             ->getMock();
 
-        $quoteItem->expects($this->any())->method('getParentItem')->will($this->returnValue($parentItem));
-        $parentItem->expects($this->once())->method('getQty')->will($this->returnValue($parentItemQty));
-        $quoteItem->expects($this->any())->method('getProduct')->will($this->returnValue($product));
-        $product->expects($this->any())->method('getId')->will($this->returnValue('product_id'));
-        $quoteItem->expects($this->once())->method('getId')->will($this->returnValue('quote_item_id'));
-        $quoteItem->expects($this->once())->method('getQuoteId')->will($this->returnValue('quote_id'));
-        $this->quoteItemQtyList->expects($this->any())
-            ->method('getQty')
-            ->with('product_id', 'quote_item_id', 'quote_id', 0)
-            ->will($this->returnValue('summary_qty'));
-        $stockItem->expects($this->once())
-            ->method('checkQuoteItemQty')
-            ->with($parentItemQty * $qty, 'summary_qty', $qty)
-            ->will($this->returnValue($result));
-        $product->expects($this->once())
+        $productMock->expects($this->any())
             ->method('getCustomOption')
             ->with('product_type')
-            ->will($this->returnValue($productTypeCustomOption));
-        $productTypeCustomOption->expects($this->once())
-            ->method('getValue')
-            ->will(($this->returnValue('option_value')));
-        $this->typeConfig->expects($this->once())
-            ->method('isProductSet')
-            ->with('option_value')
-            ->will($this->returnValue(true));
-        $product->expects($this->once())->method('getName')->will($this->returnValue('product_name'));
-        $stockItem->expects($this->once())->method('setProductName')->with('product_name')->will($this->returnSelf());
-        $stockItem->expects($this->once())->method('setIsChildItem')->with(true)->will($this->returnSelf());
-        $stockItem->expects($this->once())->method('hasIsChildItem')->will($this->returnValue(true));
-        $stockItem->expects($this->once())->method('unsIsChildItem');
-        $result->expects($this->exactly(3))->method('getItemIsQtyDecimal')->will($this->returnValue(true));
-        $quoteItem->expects($this->once())->method('setIsQtyDecimal')->with(true)->will($this->returnSelf());
-        $parentItem->expects($this->once())->method('setIsQtyDecimal')->with(true)->will($this->returnSelf());
-        $parentItem->expects($this->any())->method('getProduct')->will($this->returnValue($parentProduct));
-        $result->expects($this->once())->method('getHasQtyOptionUpdate')->will($this->returnValue(true));
-        $parentProduct->expects($this->once())
+            ->willReturn($customOptionMock);
+        $productMock->expects($this->any())
+            ->method('getName')
+            ->willReturn('product_name');
+        $productMock->expects($this->any())
             ->method('getTypeInstance')
-            ->will($this->returnValue($productTypeInstance));
-        $productTypeInstance->expects($this->once())
-            ->method('getForceChildItemQtyChanges')
-            ->with($product)->will($this->returnValue(true));
-        $result->expects($this->once())->method('getOrigQty')->will($this->returnValue('orig_qty'));
-        $quoteItem->expects($this->once())->method('setData')->with('qty', 'orig_qty')->will($this->returnSelf());
-        $result->expects($this->exactly(2))->method('getItemUseOldQty')->will($this->returnValue('item'));
-        $quoteItem->expects($this->once())->method('setUseOldQty')->with('item')->will($this->returnSelf());
-        $result->expects($this->exactly(2))->method('getMessage')->will($this->returnValue('message'));
-        $quoteItem->expects($this->once())->method('setMessage')->with('message')->will($this->returnSelf());
-        $result->expects($this->exactly(2))->method('getItemBackorders')->will($this->returnValue('backorders'));
-        $quoteItem->expects($this->once())->method('setBackorders')->with('backorders')->will($this->returnSelf());
-
-        $this->model->initialize($stockItem, $quoteItem, $qty);
-    }
+            ->willReturn('product_name');
 
-    public function testInitializeWithoutSubitem()
-    {
-        $qty = 3;
-
-        $stockItem = $this->getMockBuilder('Magento\CatalogInventory\Model\Stock\Item')
-            ->setMethods(['checkQuoteItemQty', 'setProductName', 'setIsChildItem', 'hasIsChildItem', '__wakeup'])
+        $parentItemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
             ->disableOriginalConstructor()
             ->getMock();
-        $quoteItem = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
-            ->setMethods(['getProduct', 'getParentItem', 'getQtyToAdd', 'getId', 'getQuoteId', '__wakeup'])
-            ->disableOriginalConstructor()
-            ->getMock();
-        $product = $this->getMockBuilder('Magento\Catalog\Model\Product')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $productTypeCustomOption = $this->getMockBuilder('Magento\Catalog\Model\Product\Configuration\Item\Option')
+        $parentItemMock->expects($this->any())
+            ->method('getProduct')
+            ->willReturn($productMock);
+
+        $itemMock = $this->getMockBuilder('Magento\Sales\Model\Quote\Item')
             ->disableOriginalConstructor()
             ->getMock();
-        $result = $this->getMockBuilder('Magento\Framework\Object')
-            ->setMethods(
-                ['getItemIsQtyDecimal', 'getHasQtyOptionUpdate', 'getItemUseOldQty', 'getMessage', 'getItemBackorders']
-            )
+        $itemMock->expects($this->any())
+            ->method('getProduct')
+            ->willReturn($productMock);
+        $itemMock->expects($this->any())
+            ->method('getParentItem')
+            ->willReturn($parentItemMock);
+        $this->qtyProcessorMock->expects($this->once())
+            ->method('getRowQty')
+            ->with($qty)
+            ->willReturn($rowQty);
+        $this->qtyProcessorMock->expects($this->once())
+            ->method('getQtyForCheck')
+            ->with($qty)
+            ->willReturn($qtyForCheck);
+
+        $this->configMock->expects($this->any())
+            ->method('isProductSet')
+            ->willReturn(true);
+
+        $stockItemMock->expects($this->any())
+            ->method('hasIsChildItem')
+            ->willReturn(true);
+        $resultMock = $this->getMockBuilder('Magento\Framework\Object')
             ->disableOriginalConstructor()
+            ->setMethods(['getItemIsQtyDecimal', 'getHasQtyOptionUpdate'])
             ->getMock();
-
-        $quoteItem->expects($this->once())->method('getParentItem')->will($this->returnValue(false));
-        $quoteItem->expects($this->once())->method('getQtyToAdd')->will($this->returnValue(false));
-        $product->expects($this->once())->method('getId')->will($this->returnValue('product_id'));
-        $quoteItem->expects($this->any())->method('getProduct')->will($this->returnValue($product));
-        $quoteItem->expects($this->once())->method('getId')->will($this->returnValue('quote_item_id'));
-        $quoteItem->expects($this->once())->method('getQuoteId')->will($this->returnValue('quote_id'));
-        $this->quoteItemQtyList->expects($this->any())
-            ->method('getQty')
-            ->with('product_id', 'quote_item_id', 'quote_id', $qty)
-            ->will($this->returnValue('summary_qty'));
-        $stockItem->expects($this->once())
+        $resultMock->expects($this->any())
+            ->method('getItemIsQtyDecimal')
+            ->willReturn(true);
+        $stockItemMock->expects($this->any())
             ->method('checkQuoteItemQty')
-            ->with($qty, 'summary_qty', $qty)
-            ->will($this->returnValue($result));
-        $product->expects($this->once())
-            ->method('getCustomOption')
-            ->with('product_type')
-            ->will($this->returnValue($productTypeCustomOption));
-        $productTypeCustomOption->expects($this->once())
-            ->method('getValue')
-            ->will($this->returnValue('option_value'));
-        $this->typeConfig->expects($this->once())
-            ->method('isProductSet')
-            ->with('option_value')
-            ->will($this->returnValue(true));
-        $product->expects($this->once())->method('getName')->will($this->returnValue('product_name'));
-        $stockItem->expects($this->once())->method('setProductName')->with('product_name')->will($this->returnSelf());
-        $stockItem->expects($this->once())->method('setIsChildItem')->with(true)->will($this->returnSelf());
-        $stockItem->expects($this->once())->method('hasIsChildItem')->will($this->returnValue(false));
-        $result->expects($this->once())->method('getItemIsQtyDecimal')->will($this->returnValue(null));
-        $result->expects($this->once())->method('getHasQtyOptionUpdate')->will($this->returnValue(false));
-        $result->expects($this->once())->method('getItemUseOldQty')->will($this->returnValue(null));
-        $result->expects($this->once())->method('getMessage')->will($this->returnValue(null));
-        $result->expects($this->once())->method('getItemBackorders')->will($this->returnValue(null));
+            ->willReturn($resultMock);
 
-        $this->model->initialize($stockItem, $quoteItem, $qty);
+        $this->assertInstanceOf(
+            'Magento\Framework\Object',
+            $this->stockItem->initialize($stockItemMock, $itemMock, $qty)
+        );
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveBillingTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveBillingTest.php
index 2b382943d89676c82253337b317b641e45d2a89f..006ddd56d0f32a40331cda3d883e5da817448787 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveBillingTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveBillingTest.php
@@ -210,7 +210,7 @@ class SaveBillingTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->layoutFactory->expects($this->once())
+        $this->layoutFactory->expects($this->any())
             ->method('create')
             ->willReturn($layout);
 
@@ -229,7 +229,7 @@ class SaveBillingTest extends \PHPUnit_Framework_TestCase
         $layout->expects($this->any())
             ->method('getUpdate')
             ->willReturn($update);
-        $update->expects($this->once())
+        $update->expects($this->any())
             ->method('load');
         $this->coreHelper->expects($this->once())
             ->method('jsonEncode')
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveShippingTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveShippingTest.php
index 29a728c2384375e2b76286907def4e96b962c472..ccbcc96884cca5e1dac9cae6cb49dcacb3effe7d 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveShippingTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Controller/Onepage/SaveShippingTest.php
@@ -211,7 +211,7 @@ class SaveShippingTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->layoutFactory->expects($this->once())
+        $this->layoutFactory->expects($this->any())
             ->method('create')
             ->willReturn($layout);
 
@@ -230,7 +230,7 @@ class SaveShippingTest extends \PHPUnit_Framework_TestCase
         $layout->expects($this->any())
             ->method('getUpdate')
             ->willReturn($update);
-        $update->expects($this->once())
+        $update->expects($this->any())
             ->method('load');
         $this->view->expects($this->any())
             ->method('getLayout')
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/MergeTest.php b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/MergeTest.php
index 6ddd1b58cb9663e27e1c6a50cb2b195e4f8f4d24..467f1ac6a51f9864a90a0179a6805d2c092a6ea3 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/MergeTest.php
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/MergeTest.php
@@ -239,8 +239,12 @@ class MergeTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($handles, $this->_model->getHandles());
         $expectedResult = '
             <root>
-                <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
-                <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+                <body>
+                    <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+                </body>
+                <body>
+                    <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+                </body>
             </root>
         ';
         $actualResult = '<root>' . $this->_model->asString() . '</root>';
@@ -250,29 +254,17 @@ class MergeTest extends \PHPUnit_Framework_TestCase
     public function testLoadFileSystemWithPageLayout()
     {
         $handles = ['fixture_handle_with_page_layout'];
-        $expectedHandles = ['fixture_handle_with_page_layout', 'fixture_handle_page_layout'];
+        $expectedHandles = ['fixture_handle_with_page_layout'];
         $expectedResult = '
             <root>
-                <referenceContainer name="main.container">
-                    <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
-                </referenceContainer>
-                <container name="main.container" />
+                <body>
+                    <referenceContainer name="main.container">
+                        <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+                    </referenceContainer>
+                </body>
             </root>
         ';
 
-        $this->pageConfig->expects($this->at(0))
-            ->method('getPageLayout')
-            ->will($this->returnValue(false));
-        $this->pageConfig->expects($this->at(1))
-            ->method('getPageLayout')
-            ->will($this->returnValue(false));
-        $this->pageConfig->expects($this->at(2))
-            ->method('setPageLayout')
-            ->with('fixture_handle_page_layout');
-        $this->pageConfig->expects($this->at(3))
-            ->method('getPageLayout')
-            ->will($this->returnValue('fixture_handle_page_layout'));
-
         $this->assertEmpty($this->_model->getHandles());
         $this->assertEmpty($this->_model->asString());
         $this->_model->load($handles);
@@ -280,6 +272,7 @@ class MergeTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($expectedHandles, $this->_model->getHandles());
         $actualResult = '<root>' . $this->_model->asString() . '</root>';
         $this->assertXmlStringEqualsXmlString($expectedResult, $actualResult);
+        $this->assertEquals('fixture_handle_page_layout', $this->_model->getPageLayout());
     }
 
     public function testLoadCache()
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/arguments.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/arguments.xml
index 86af1c575d1fad72ea383db88398177620f2da14..79933ad823207b5815244ead2d030a8d0827a731 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/arguments.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/arguments.xml
@@ -24,46 +24,48 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <block class="Magento\Test\Block" name="test.block">
-        <arguments>
-            <argument name="testHelperWithParams" xsi:type="helper" helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
-                <param name="firstParam">firstValue</param>
-                <param name="secondParam">secondValue</param>
-            </argument>
-            <argument name="testHelperWithoutParams" xsi:type="helper" helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod"/>
-            <argument name="testSimpleBoolean" xsi:type="boolean">true</argument>
-            <argument name="testSimpleNumber" xsi:type="number">1.5</argument>
-            <argument name="testSimpleString" xsi:type="string">Simple Test</argument>
-            <argument name="testTranslateString" xsi:type="string" translate="true">Test Translate</argument>
-            <argument name="testUrlWithParams" xsi:type="url" path="module/controller/action">
-                <param name="firstParam">firstValue</param>
-                <param name="secondParam">secondValue</param>
-            </argument>
-            <argument name="testUrlWithoutParams" xsi:type="url" path="module/controller/action"/>
-            <argument name="testParseWithUpdater" xsi:type="string"><updater>Magento_Test_Updater</updater>Some Value</argument>
-            <argument name="testParseWithoutUpdater" xsi:type="string">Some Value</argument>
-            <argument name="testSimpleArray" xsi:type="array">
-                <item name="csv" xsi:type="array">
-                    <item name="label" xsi:type="string" translate="true">CSV</item>
-                </item>
-                <item name="urlPath" xsi:type="url" path="*/*/exportMsxml"/>
-                <item name="label" xsi:type="string">Excel XML</item>
-            </argument>
-            <argument name="testArrayWithUpdater" xsi:type="array">
-                <updater>Magento\Sales\Model\Order\Grid\Massaction\ItemsUpdater</updater>
-                <item name="add" xsi:type="array">
-                    <item name="label" xsi:type="string" translate="true">Move to Archive</item>
-                    <item name="url" xsi:type="string">*/sales_archive/massAdd</item>
-                </item>
-            </argument>
-            <argument name="testOptions" xsi:type="options" model="Magento\Core\Model\Layout\Argument\Handler\TestOptions"/>
-            <argument name="testSimpleObject" xsi:type="object">
-                Magento\Framework\View\Layout\Argument\Handler\TestObject
-            </argument>
-            <argument name="testComplexObject" xsi:type="object"><updater>Magento_Test_Updater</updater>Magento\Core\Model\Layout\Argument\Handler\TestObject</argument>
-        </arguments>
-        <action method="testAction">
-            <argument name="string" xsi:type="string">string</argument>
-        </action>
-    </block>
+    <body>
+        <block class="Magento\Test\Block" name="test.block">
+            <arguments>
+                <argument name="testHelperWithParams" xsi:type="helper" helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
+                    <param name="firstParam">firstValue</param>
+                    <param name="secondParam">secondValue</param>
+                </argument>
+                <argument name="testHelperWithoutParams" xsi:type="helper" helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod"/>
+                <argument name="testSimpleBoolean" xsi:type="boolean">true</argument>
+                <argument name="testSimpleNumber" xsi:type="number">1.5</argument>
+                <argument name="testSimpleString" xsi:type="string">Simple Test</argument>
+                <argument name="testTranslateString" xsi:type="string" translate="true">Test Translate</argument>
+                <argument name="testUrlWithParams" xsi:type="url" path="module/controller/action">
+                    <param name="firstParam">firstValue</param>
+                    <param name="secondParam">secondValue</param>
+                </argument>
+                <argument name="testUrlWithoutParams" xsi:type="url" path="module/controller/action"/>
+                <argument name="testParseWithUpdater" xsi:type="string"><updater>Magento_Test_Updater</updater>Some Value</argument>
+                <argument name="testParseWithoutUpdater" xsi:type="string">Some Value</argument>
+                <argument name="testSimpleArray" xsi:type="array">
+                    <item name="csv" xsi:type="array">
+                        <item name="label" xsi:type="string" translate="true">CSV</item>
+                    </item>
+                    <item name="urlPath" xsi:type="url" path="*/*/exportMsxml"/>
+                    <item name="label" xsi:type="string">Excel XML</item>
+                </argument>
+                <argument name="testArrayWithUpdater" xsi:type="array">
+                    <updater>Magento\Sales\Model\Order\Grid\Massaction\ItemsUpdater</updater>
+                    <item name="add" xsi:type="array">
+                        <item name="label" xsi:type="string" translate="true">Move to Archive</item>
+                        <item name="url" xsi:type="string">*/sales_archive/massAdd</item>
+                    </item>
+                </argument>
+                <argument name="testOptions" xsi:type="options" model="Magento\Core\Model\Layout\Argument\Handler\TestOptions"/>
+                <argument name="testSimpleObject" xsi:type="object">
+                    Magento\Framework\View\Layout\Argument\Handler\TestObject
+                </argument>
+                <argument name="testComplexObject" xsi:type="object"><updater>Magento_Test_Updater</updater>Magento\Core\Model\Layout\Argument\Handler\TestObject</argument>
+            </arguments>
+            <action method="testAction">
+                <argument name="string" xsi:type="string">string</argument>
+            </action>
+        </block>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/invalidLayoutArgumentsXmlArray.php b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/invalidLayoutArgumentsXmlArray.php
index ba61bbc1607beef64c6f7dd037be7606c62a380d..2e92e60737bc38580ab9a5ea1e63333e739c11be 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/invalidLayoutArgumentsXmlArray.php
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/invalidLayoutArgumentsXmlArray.php
@@ -24,108 +24,128 @@
 return array(
     'options without model attribute' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="options" />
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="options" />
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'argument': The attribute 'model' is required but missing.")),
     'url without path attribute' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="url" />
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="url" />
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'argument': The attribute 'path' is required but missing.")),
     'url without param name' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="url" path="module/controller/action">
-                        <param />
-                    </argument>
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="url" path="module/controller/action">
+                            <param />
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'param': The attribute 'name' is required but missing.")),
     'url with forbidden param attribute' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+            <body>
             <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="url" path="module/controller/action">
-                        <param name="paramName" forbidden="forbidden"/>
-                    </argument>
-                </arguments>
-            </block>
+                    <arguments>
+                        <argument name="argumentName" xsi:type="url" path="module/controller/action">
+                            <param name="paramName" forbidden="forbidden"/>
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'param', attribute 'forbidden': The attribute 'forbidden' is not allowed.")),
     'url with forbidden param sub-element' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="url" path="module/controller/action">
-                        <param name="paramName"><forbidden /></param>
-                    </argument>
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="url" path="module/controller/action">
+                            <param name="paramName"><forbidden /></param>
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'forbidden': This element is not expected.")),
     'helper without helper attribute' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="helper" />
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="helper" />
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'argument': The attribute 'helper' is required but missing.")),
     'helper without param name' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="helper"
-                        helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
-                        <param />
-                    </argument>
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="helper"
+                            helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
+                            <param />
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'param': The attribute 'name' is required but missing.")),
     'helper with forbidden param attribute' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="helper"
-                        helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
-                        <param name="paramName" forbidden="forbidden"/>
-                    </argument>
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="helper"
+                            helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
+                            <param name="paramName" forbidden="forbidden"/>
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'param', attribute 'forbidden': The attribute 'forbidden' is not allowed.")),
     'helper with forbidden param sub-element' => array(
         '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <block class="Magento\Test\Block" name="test.block">
-                <arguments>
-                    <argument name="argumentName" xsi:type="helper"
-                        helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
-                        <param name="paramName"><forbidden /></param>
-                    </argument>
-                </arguments>
-            </block>
+            <body>
+                <block class="Magento\Test\Block" name="test.block">
+                    <arguments>
+                        <argument name="argumentName" xsi:type="helper"
+                            helper="Magento\Core\Model\Layout\Argument\Handler\TestHelper::testMethod">
+                            <param name="paramName"><forbidden /></param>
+                        </argument>
+                    </arguments>
+                </block>
+            </body>
         </page>',
         array("Element 'forbidden': This element is not expected.")),
     'action with doubled arguments' => array(
             '<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-                <block class="Magento\Test\Block" name="test.block">
-                    <action method="testAction">
-                        <argument name="string" xsi:type="string">string1</argument>
-                        <argument name="string" xsi:type="string">string2</argument>
-                    </action>
-                </block>
+                <body>
+                    <block class="Magento\Test\Block" name="test.block">
+                        <action method="testAction">
+                            <argument name="string" xsi:type="string">string1</argument>
+                            <argument name="string" xsi:type="string">string2</argument>
+                        </action>
+                    </block>
+                </body>
             </page>',
         array(
             "Element 'argument': Duplicate key-sequence ['string'] in key identity-constraint 'actionArgumentName'."
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view.xml
index a922cf3cc7e27fd2e408f9be32d159eaafedfb6e..ca0f2e4823a1222c0e1c53ce39046069280474b8 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page>
-    <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint"/>
+    <body>
+        <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint"/>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view_type_configurable.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view_type_configurable.xml
index 0949af576b40385370aa1d452eaf21721319f180..0bb225703df1231510ac9ccde7f870583cf767eb 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view_type_configurable.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/catalog_product_view_type_configurable.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page>
-    <container name="product.info.configurable.extra" as="product_type_data_extra" label="Configurable Product Extra Info"/>
+    <body>
+        <container name="product.info.configurable.extra" as="product_type_data_extra" label="Configurable Product Extra Info"/>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/default.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/default.xml
index aeab28fc4eaa7cb54cf1bbf848429b91357e8f1e..3ea94909fae128e65ec2971d5c627c2ed7eb8680 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/default.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/default.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page>
-    <container name="content" as="content" label="Main Content Area"/>
+    <body>
+        <container name="content" as="content" label="Main Content Area"/>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_one.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_one.xml
index c41956e32ddde14dfe4ab4813c4510e93b23a2ae..f547acaa6b9da4c7e93692aa7f21d0aca45a3fc5 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_one.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_one.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page>
-    <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+    <body>
+        <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_two.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_two.xml
index 972f0ff852d3852577bc12b45516a785dba37d27..3a0283dc05394ecf8f4badc9257094144158a0b0 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_two.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_two.xml
@@ -24,5 +24,7 @@
  */
 -->
 <page>
-    <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+    <body>
+        <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_with_page_layout.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_with_page_layout.xml
index 93cf1da523afe10b1b370bd986c86c09c1fcdaca..877cd097ca463d3d0617da36f1edc525be58b103 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_with_page_layout.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/layout/fixture_handle_with_page_layout.xml
@@ -24,7 +24,9 @@
  */
 -->
 <page layout="fixture_handle_page_layout">
-    <referenceContainer name="main.container">
-        <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
-    </referenceContainer>
+    <body>
+        <referenceContainer name="main.container">
+            <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+        </referenceContainer>
+    </body>
 </page>
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/merged.xml b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/merged.xml
index 93fcee9b91097cce6b0d2b493b3557167b338b4b..2eeb2a5361a4bf98f17b1190cc1ced4783806644 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/merged.xml
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/Layout/_files/merged.xml
@@ -29,30 +29,42 @@
     <handle id="catalog_category_default"/>
     <handle id="catalog_category_layered"/>
     <handle id="catalog_product_view">
-        <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint"/>
+        <body>
+            <container name="product.info.extrahint" as="extrahint" label="Product View Extra Hint"/>
+        </body>
     </handle>
     <handle id="catalog_product_view_type_configurable">
-        <container name="product.info.configurable.extra" as="product_type_data_extra" label="Configurable Product Extra Info"/>
+        <body>
+            <container name="product.info.configurable.extra" as="product_type_data_extra" label="Configurable Product Extra Info"/>
+        </body>
     </handle>
     <handle id="catalog_product_view_type_simple"/>
     <handle id="checkout_onepage_index"/>
     <handle id="customer_account" label="Customer My Account (All Pages)" design_abstraction="custom"/>
     <handle id="default">
-        <container name="content" as="content" label="Main Content Area"/>
+        <body>
+            <container name="content" as="content" label="Main Content Area"/>
+        </body>
     </handle>
     <handle id="fixture_handle_one">
-        <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+        <body>
+            <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+        </body>
     </handle>
     <layout id="fixture_handle_page_layout">
         <container name="main.container"/>
     </layout>
     <handle id="fixture_handle_two">
-        <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+        <body>
+            <block class="Magento\Framework\View\Element\Template" template="fixture_template_two.phtml"/>
+        </body>
     </handle>
     <handle id="fixture_handle_with_page_layout" layout="fixture_handle_page_layout">
-        <referenceContainer name="main.container">
-            <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
-        </referenceContainer>
+        <body>
+            <referenceContainer name="main.container">
+                <block class="Magento\Framework\View\Element\Template" template="fixture_template_one.phtml"/>
+            </referenceContainer>
+        </body>
     </handle>
     <handle id="not_a_page_type" label="Handle that Is Not a Page Type"/>
     <handle id="page_empty" label="All Empty Layout Pages" design_abstraction="page_layout"/>
diff --git a/dev/tests/unit/testsuite/Magento/DesignEditor/Block/Adminhtml/Theme/Selector/SelectorList/AbstractTest.php b/dev/tests/unit/testsuite/Magento/DesignEditor/Block/Adminhtml/Theme/Selector/SelectorList/AbstractTest.php
index 252728086d56eeb88b97a744c73009e9f2d9dbc5..35636e9b5746cae9f30bb74ae1924c9f34469e73 100644
--- a/dev/tests/unit/testsuite/Magento/DesignEditor/Block/Adminhtml/Theme/Selector/SelectorList/AbstractTest.php
+++ b/dev/tests/unit/testsuite/Magento/DesignEditor/Block/Adminhtml/Theme/Selector/SelectorList/AbstractTest.php
@@ -39,20 +39,16 @@ class AbstractTest extends \PHPUnit_Framework_TestCase
             false,
             false,
             true,
-            array('getChildBlock')
+            array('getChildBlock', 'getLayout')
         );
 
         $themeMock = $this->getMock('Magento\DesignEditor\Block\Adminhtml\Theme', array(), array(), '', false);
 
         $listAbstractBlock->setCollection($collection);
 
-        $listAbstractBlock->expects(
-            $this->atLeastOnce()
-        )->method(
-            'getChildBlock'
-        )->will(
-            $this->returnValue($themeMock)
-        );
+        $listAbstractBlock->expects($this->atLeastOnce())
+            ->method('getChildBlock')
+            ->will($this->returnValue($themeMock));
 
         $this->assertEquals(2, count($listAbstractBlock->getListItems()));
     }
diff --git a/dev/tests/unit/testsuite/Magento/Downloadable/Helper/DownloadTest.php b/dev/tests/unit/testsuite/Magento/Downloadable/Helper/DownloadTest.php
index 2761896f8f5a9a6b0a9e37f0ea0c1d98897918b9..ba6bc8a50a780c084a4f5b5b3d22dfa8575bfa72 100644
--- a/dev/tests/unit/testsuite/Magento/Downloadable/Helper/DownloadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Downloadable/Helper/DownloadTest.php
@@ -37,7 +37,7 @@ use Magento\Downloadable\Helper\File as DownloadableFile;
 require_once __DIR__ . '/../../../../framework/bootstrap.php';
 
 /**
- * @runTestsInSeparateProcesses
+ * @  runTestsInSeparateProcesses
  * @preserveGlobalState disabled
  */
 class DownloadTest extends \PHPUnit_Framework_TestCase
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/ViewTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/ViewTest.php
index c1f888bd32589f6f562aa9fa1edeb69a488538de..138a3444a08142f457a998d93f98f6812cc5c909 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/ViewTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/ViewTest.php
@@ -81,15 +81,32 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($this->_layoutProcessor));
         $this->_actionFlagMock = $this->getMock('Magento\Framework\App\ActionFlag', array(), array(), '', false);
         $this->_eventManagerMock = $this->getMock('Magento\Framework\Event\ManagerInterface');
+        $pageConfigMock = $this->getMockBuilder('\Magento\Framework\View\Page\Config')->disableOriginalConstructor()
+            ->getMock();
+        $pageConfigMock->expects($this->any())
+            ->method('publicBuild')
+            ->willReturnSelf();
+
+        $pageConfigRendererFactory = $this->getMockBuilder('Magento\Framework\View\Page\Config\RendererFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+
         $this->resultPage = $this->getMockBuilder('Magento\Framework\View\Result\Page')
             ->setConstructorArgs(
-                $helper->getConstructArguments('Magento\Framework\View\Result\Page', ['request' => $this->_requestMock])
+                $helper->getConstructArguments('Magento\Framework\View\Result\Page', [
+                'request' => $this->_requestMock,
+                'pageConfigRendererFactory' => $pageConfigRendererFactory
+                ])
             )
-            ->setMethods(['getLayout', 'renderResult'])
+            ->setMethods(['getLayout', 'renderResult', 'getConfig'])
             ->getMock();
         $this->resultPage->expects($this->any())
             ->method('getLayout')
             ->will($this->returnValue($this->_layoutMock));
+        $this->resultPage->expects($this->any())
+            ->method('getConfig')
+            ->will($this->returnValue($pageConfigMock));
         $pageFactory = $this->getMockBuilder('Magento\Framework\View\Result\PageFactory')
             ->disableOriginalConstructor()
             ->setMethods(['create'])
@@ -140,34 +157,16 @@ class ViewTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue('action_name')
         );
-        $this->_layoutMock->expects(
-            $this->once()
-        )->method(
-            'generateXml'
-        )->will(
-            $this->returnValue($this->_layoutMock)
-        );
-        $this->_layoutMock->expects(
-            $this->once()
-        )->method(
-            'generateElements'
-        )->will(
-            $this->returnValue($this->_layoutMock)
-        );
         $this->_view->loadLayout();
     }
 
     public function testLoadLayoutWhenBlocksNotGenerated()
     {
-        $this->_layoutMock->expects($this->once())->method('generateXml');
-        $this->_layoutMock->expects($this->never())->method('generateElements');
         $this->_view->loadLayout('', false, true);
     }
 
     public function testLoadLayoutWhenXmlNotGenerated()
     {
-        $this->_layoutMock->expects($this->never())->method('generateElements');
-        $this->_layoutMock->expects($this->never())->method('generateXml');
         $this->_view->loadLayout('', true, false);
     }
 
@@ -214,31 +213,6 @@ class ViewTest extends \PHPUnit_Framework_TestCase
             array('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH_BLOCK_EVENT, false)
         );
         $this->_actionFlagMock->expects($this->any())->method('get')->will($this->returnValueMap($valueMap));
-
-        $eventArgument = array('full_action_name' => 'Full_Name', 'layout' => $this->_layoutMock);
-        $this->_requestMock->expects(
-            $this->exactly(2)
-        )->method(
-            'getFullActionName'
-        )->will(
-            $this->returnValue('Full_Name')
-        );
-        $this->_eventManagerMock->expects(
-            $this->at(0)
-        )->method(
-            'dispatch'
-        )->with(
-            'controller_action_layout_generate_blocks_before',
-            $eventArgument
-        );
-        $this->_eventManagerMock->expects(
-            $this->at(1)
-        )->method(
-            'dispatch'
-        )->with(
-            'controller_action_layout_generate_blocks_after',
-            $eventArgument
-        );
         $this->_view->generateLayoutBlocks();
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/ForwardTest.php b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/ForwardTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b15ac3a76d65738a4a3a18fbdf2444f58a39a0ff
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/ForwardTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class ForwardTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Framework\Controller\Result\Forward */
+    protected $forward;
+
+    /** @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $requestInterface;
+
+    /** @var ObjectManagerHelper */
+    protected $objectManagerHelper;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->requestInterface = $this->getMock(
+            'Magento\Framework\App\RequestInterface',
+            [
+                'initForward',
+                'getModuleName',
+                'setModuleName',
+                'getActionName',
+                'setActionName',
+                'getParam',
+                'getCookie',
+                'setDispatched',
+                'setParams',
+                'setControllerName'
+            ],
+            [],
+            '',
+            false
+        );
+        $this->forward = $this->objectManagerHelper->getObject(
+            'Magento\Framework\Controller\Result\Forward',
+            [
+                'request' => $this->requestInterface
+            ]
+        );
+    }
+
+    public function testSetModule()
+    {
+        $module = 'test_module';
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Forward', $this->forward->setModule($module));
+    }
+
+    public function testSetController()
+    {
+        $controller = 'test_controller';
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Forward',
+            $this->forward->setController($controller)
+        );
+    }
+
+    public function testSetParams()
+    {
+        $params = ['param1', 'param2', 3];
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Forward',
+            $this->forward->setParams($params)
+        );
+    }
+
+    public function testForward()
+    {
+        $action = 'test_action';
+        $this->requestInterface->expects($this->once())->method('initForward');
+        $this->requestInterface->expects($this->once())->method('setActionName')->with($action);
+        $this->requestInterface->expects($this->once())->method('setDispatched');
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Forward',
+            $this->forward->forward($action)
+        );
+    }
+
+    public function testForwardWithParams()
+    {
+        $action = 'test_action';
+        $params = ['param1', 'param2', 3];
+        $controller = 'test_controller';
+        $module = 'test_module';
+        $this->forward->setModule($module);
+        $this->forward->setParams($params);
+        $this->forward->setController($controller);
+        $this->requestInterface->expects($this->once())->method('setParams')->with($params);
+        $this->requestInterface->expects($this->once())->method('setControllerName')->with($controller);
+        $this->requestInterface->expects($this->once())->method('setModuleName')->with($module);
+        $this->requestInterface->expects($this->once())->method('initForward');
+        $this->requestInterface->expects($this->once())->method('setActionName')->with($action);
+        $this->requestInterface->expects($this->once())->method('setDispatched');
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Forward',
+            $this->forward->forward($action)
+        );
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/JSONTest.php b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/JSONTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..552b8d2826f850df6da52d53c4ecba5797eb6466
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/JSONTest.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+/**
+ * Class JSONTest
+ *
+ * @covers Magento\Framework\Controller\Result\JSON
+ */
+class JSONTest extends \PHPUnit_Framework_TestCase
+{
+    public function testRenderResult()
+    {
+        $json = '{"data":"data"}';
+        $translatedJson = '{"data_translated":"data_translated"}';
+
+        /** @var \Magento\Framework\Translate\InlineInterface|\PHPUnit_Framework_MockObject_MockObject
+         * $translateInline
+         */
+        $translateInline = $this->getMock('Magento\Framework\Translate\InlineInterface', [], [], '', false);
+        $translateInline->expects($this->any())->method('processResponseBody')->with($json, true)->will(
+            $this->returnValue($translatedJson)
+        );
+
+        $response = $this->getMock('Magento\Framework\App\Response\Http', ['representJson'], [], '', false);
+        $response->expects($this->atLeastOnce())->method('representJson')->with($json)->will($this->returnSelf());
+
+        /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
+        $resultJson = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\Controller\Result\JSON', ['translateInline' => $translateInline]);
+        $resultJson->setJsonData($json);
+        $this->assertSame($resultJson, $resultJson->renderResult($response));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RawTest.php b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RawTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d654185a6c108351f1e026a82c519562d85860ba
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RawTest.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class RawTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Framework\Controller\Result\Raw */
+    protected $raw;
+
+    /** @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject*/
+    protected $response;
+
+    /** @var ObjectManagerHelper */
+    protected $objectManagerHelper;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->response = $this->getMock(
+            'Magento\Framework\App\ResponseInterface',
+            ['setBody', 'sendResponse'],
+            [],
+            '',
+            false
+        );
+        $this->raw = $this->objectManagerHelper->getObject(
+            'Magento\Framework\Controller\Result\Raw'
+        );
+    }
+
+    public function testSetContents()
+    {
+        $content = '<content>test</content>';
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Raw', $this->raw->setContents($content));
+    }
+
+    public function testRender()
+    {
+        $content = '<content>test</content>';
+        $this->raw->setContents($content);
+        $this->response->expects($this->once())->method('setBody')->with($content);
+        $this->assertSame($this->raw, $this->raw->renderResult($this->response));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RedirectTest.php b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RedirectTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..62237f15bfd593488666c9f799942dbe49a67407
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RedirectTest.php
@@ -0,0 +1,116 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+class RedirectTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Framework\Controller\Result\Redirect */
+    protected $redirect;
+
+    /** @var \Magento\Framework\App\Response\RedirectInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $redirectInterface;
+
+    /** @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $urlBuilder;
+
+    /** @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $urlInterface;
+
+    /** @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $response;
+
+    protected function setUp()
+    {
+        $this->redirectInterface = $this->getMock(
+            'Magento\Framework\App\Response\RedirectInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->urlBuilder = $this->getMock(
+            'Magento\Framework\UrlInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->urlInterface = $this->getMock(
+            'Magento\Framework\UrlInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->response = $this->getMock(
+            'Magento\Framework\App\ResponseInterface',
+            ['setRedirect', 'sendResponse'],
+            [],
+            '',
+            false
+        );
+        $this->redirect = new Redirect($this->redirectInterface, $this->urlInterface);
+    }
+
+    public function testSetRefererUrl()
+    {
+        $this->redirectInterface->expects($this->once())->method('getRefererUrl');
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->redirect->setRefererUrl());
+    }
+
+    public function testSetRefererOrBaseUrl()
+    {
+        $this->redirectInterface->expects($this->once())->method('getRedirectUrl');
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->redirect->setRefererOrBaseUrl());
+    }
+
+    public function testSetUrl()
+    {
+        $url = 'http://test.com';
+        $this->assertInstanceOf('Magento\Framework\Controller\Result\Redirect', $this->redirect->setUrl($url));
+    }
+
+    public function testSetPath()
+    {
+        $path = 'test/path';
+        $params = ['one' => 1, 'two' => 2];
+        $this->redirectInterface->expects($this->once())->method('updatePathParams')->with($params)->will(
+            $this->returnValue($params)
+        );
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Redirect',
+            $this->redirect->setPath($path, $params)
+        );
+    }
+
+    public function testRender()
+    {
+        $this->response->expects($this->once())->method('setRedirect');
+        $this->assertInstanceOf(
+            'Magento\Framework\Controller\Result\Redirect',
+            $this->redirect->renderResult($this->response)
+        );
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php b/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
index 88def1f34abd06e32f1fd262c5a9c4c71a97f635..d7ee416e3ab12f5644af6497915baf6d6f882fd1 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
@@ -172,7 +172,7 @@ class AbstractExtensibleModelTest extends \PHPUnit_Framework_TestCase
     /**
      * @param string[] $attributesAsArray
      * @param \Magento\Framework\Model\AbstractExtensibleModel $model
-     * @return \Magento\Framework\Api\AttributeInterface[]
+     * @return \Magento\Framework\Api\Data\AttributeInterface[]
      */
     protected function addCustomAttributesToModel($attributesAsArray, $model)
     {
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php
index 4046f9f351be2c6a33525c2facc487ed9deb282c..d57f001c1732a5861d6ee23b9041972691e51809 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Framework\Service\Code\Generator;
 
-use Magento\Framework\Api\ExtensibleDataInterface;
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
 
 /**
  * Interface for ExtensibleSample
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..58ae8cd85b1ee17bbb6ad3ebbe43ba2d56bb6853
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderFactoryTest.php
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class BuilderFactoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerHelper
+     */
+    protected $objectManagerHelper;
+
+    /**
+     * @var \Magento\Framework\ObjectManager|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $objectManagerMock;
+
+    /**
+     * @var \Magento\Framework\View\Layout\BuilderFactory
+     */
+    protected $buildFactory;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManager')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->buildFactory = $this->objectManagerHelper->getObject(
+            'Magento\Framework\View\Layout\BuilderFactory',
+            [
+                'objectManager' => $this->objectManagerMock,
+                'typeMap' => [
+                    [
+                        'type' => 'invalid_type',
+                        'class' => 'Magento\Framework\View\Layout\BuilderFactory'
+                    ]
+                ]
+            ]
+        );
+
+    }
+
+    /**
+     * @param string $type
+     * @param array $arguments
+     *
+     * @dataProvider createDataProvider
+     */
+    public function testCreate($type, $arguments, $layoutBuilderClass)
+    {
+        $layoutBuilderMock = $this->getMockBuilder('Magento\Framework\View\Layout\Builder')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->objectManagerMock->expects($this->once())
+            ->method('create')
+            ->with($layoutBuilderClass, $arguments)
+            ->willReturn($layoutBuilderMock);
+
+        $this->buildFactory->create($type, $arguments);
+    }
+
+    public function createDataProvider()
+    {
+        return [
+            'layout_type' => [
+                'type' => \Magento\Framework\View\Layout\BuilderFactory::TYPE_LAYOUT,
+                'arguments' => ['key' => 'val'],
+                'layoutBuilderClass' => 'Magento\Framework\View\Layout\Builder'
+            ]
+        ];
+    }
+
+    /**
+     * @expectedException \InvalidArgumentException
+     */
+    public function testCreateInvalidData()
+    {
+        $this->buildFactory->create('some_wrong_type', []);
+    }
+
+    /**
+     * @expectedException \InvalidArgumentException
+     */
+    public function testCreateWithNonBuilderClass()
+    {
+        $wrongClass = $this->getMockBuilder('Magento\Framework\View\Layout\BuilderFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->objectManagerMock->expects($this->once())
+            ->method('create')
+            ->willReturn($wrongClass);
+
+        $this->buildFactory->create('invalid_type', []);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..68077f54c9e977c874344e9a3463b3a1db6894a4
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout;
+
+use Magento\Framework;
+
+/**
+ * Class BuilderTest
+ * @covers \Magento\Framework\View\Layout\Builder
+ */
+class BuilderTest extends \PHPUnit_Framework_TestCase
+{
+    const CLASS_NAME = 'Magento\Framework\View\Layout\Builder';
+
+    /**
+     * @covers \Magento\Framework\View\Layout\Builder::build()
+     */
+    public function testBuild()
+    {
+        $fullActionName = 'route_controller_action';
+
+        /** @var Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject */
+        $request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+        $request->expects($this->exactly(3))->method('getFullActionName')->will($this->returnValue($fullActionName));
+
+        /** @var Framework\View\Layout\ProcessorInterface|\PHPUnit_Framework_MockObject_MockObject $processor */
+        $processor = $this->getMock('Magento\Framework\View\Layout\ProcessorInterface', [], [], '', false);
+        $processor->expects($this->once())->method('load');
+
+        /** @var Framework\View\Layout|\PHPUnit_Framework_MockObject_MockObject */
+        $layout = $this->getMock(
+            'Magento\Framework\View\Layout',
+            $this->getLayoutMockMethods(),
+            [],
+            '',
+            false
+        );
+        $layout->expects($this->atLeastOnce())->method('getUpdate')->will($this->returnValue($processor));
+        $layout->expects($this->atLeastOnce())->method('generateXml')->will($this->returnValue($processor));
+        $layout->expects($this->atLeastOnce())->method('generateElements')->will($this->returnValue($processor));
+
+        $data = ['full_action_name' => $fullActionName, 'layout' => $layout];
+        $prefix = 'controller_action_layout_';
+        /** @var Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject $eventManager */
+        $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false);
+        $eventManager->expects($this->at(0))->method('dispatch')->with($prefix . 'load_before', $data);
+        $eventManager->expects($this->at(1))->method('dispatch')->with($prefix . 'generate_blocks_before', $data);
+        $eventManager->expects($this->at(2))->method('dispatch')->with($prefix . 'generate_blocks_after', $data);
+        $builder = $this->getBuilder(['eventManager' => $eventManager, 'request' => $request, 'layout' => $layout]);
+        $builder->build();
+    }
+
+    /**
+     * @return array
+     */
+    protected function getLayoutMockMethods()
+    {
+        return ['setBuilder', 'getUpdate', 'generateXml', 'generateElements'];
+    }
+
+    /**
+     * @param array $arguments
+     * @return \Magento\Framework\View\Layout\Builder
+     */
+    protected function getBuilder($arguments)
+    {
+        return (new \Magento\TestFramework\Helper\ObjectManager($this))->getObject(static::CLASS_NAME, $arguments);
+    }
+} 
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/BlockTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/BlockTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..615aae195c6ee59488be75319c09657b3a2c8bf8
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/BlockTest.php
@@ -0,0 +1,180 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Generator;
+
+/**
+ * @covers Magento\Framework\View\Layout\Generator\Block
+ */
+class BlockTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @covers Magento\Framework\View\Layout\Generator\Block::process()
+     * @covers Magento\Framework\View\Layout\Generator\Block::createBlock()
+     * @param string $testGroup
+     * @param string $testTemplate
+     * @param string $testTtl
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $addToParentGroupCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setTemplateCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setTtlCount
+     * @dataProvider provider
+     */
+    public function testProcess(
+        $testGroup,
+        $testTemplate,
+        $testTtl,
+        $addToParentGroupCount,
+        $setTemplateCount,
+        $setTtlCount
+    ) {
+        $elementName = 'test_block';
+        $methodName = 'setTest';
+        $literal = 'block';
+        $argumentData = ['argument_data'];
+        $class = 'test_class';
+
+        $scheduleStructure = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
+        $scheduleStructure->expects($this->once())->method('getElements')->will(
+            $this->returnValue(
+                [
+                    $elementName => [
+                        $literal,
+                        [
+                            'actions' => [
+                                [
+                                    $methodName,
+                                    [
+                                        'test_argument' => $argumentData
+                                    ]
+                                ]
+                            ]
+                        ]
+                    ]
+                ]
+            )
+        );
+
+        $scheduleStructure->expects($this->once())->method('getElement')->with($elementName)->will(
+            $this->returnValue(
+                [
+                    '',
+                    [
+                        'attributes' => [
+                            'class' => $class,
+                            'template' => $testTemplate,
+                            'ttl' => $testTtl,
+                            'group' => $testGroup
+                        ],
+                        'arguments' => ['data' => $argumentData]
+                    ]
+                ]
+            )
+        );
+        $scheduleStructure->expects($this->once())->method('unsetElement')->with($elementName);
+
+        /**
+         * @var \Magento\Framework\View\Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject $readerContext
+         */
+        $readerContext = $this->getMock('Magento\Framework\View\Layout\Reader\Context', [], [], '', false);
+        $readerContext->expects($this->once())->method('getScheduledStructure')
+            ->will($this->returnValue($scheduleStructure));
+
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+
+        /**
+         * @var \Magento\Framework\View\Element\AbstractBlock|\PHPUnit_Framework_MockObject_MockObject $blockInstance
+         */
+        // explicitly set mocked methods for successful expectation of magic methods
+        $blockInstance = $this->getMock(
+            'Magento\Framework\View\Element\AbstractBlock',
+            ['setType', 'setTemplate', 'setTtl', $methodName, 'setNameInLayout', 'addData', 'setLayout'],
+            [],
+            '',
+            false
+        );
+        $blockInstance->expects($this->once())->method('setType')->with(get_class($blockInstance));
+        $blockInstance->expects($this->once())->method('setNameInLayout')->with($elementName);
+        $blockInstance->expects($this->once())->method('addData')->with(['data' => null]);
+        $blockInstance->expects($setTemplateCount)->method('setTemplate')->with($testTemplate);
+        $blockInstance->expects($setTtlCount)->method('setTtl')->with(0);
+        $blockInstance->expects($this->once())->method('setLayout')->with($layout);
+        $blockInstance->expects($this->once())->method($methodName)->with(null);
+
+        $layout->expects($this->once())->method('setBlock')->with($elementName, $blockInstance);
+
+        $structure = $this->getMock('Magento\Framework\View\Layout\Data\Structure', [], [], '', false);
+        $structure->expects($addToParentGroupCount)->method('addToParentGroup')->with($elementName, $testGroup);
+
+        /**
+         * @var \PHPUnit_Framework_MockObject_MockObject $generatorContext
+         */
+        $generatorContext = $this->getMock('Magento\Framework\View\Layout\Generator\Context', [], [], '', false);
+        $generatorContext->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+        $generatorContext->expects($this->once())->method('getStructure')->will($this->returnValue($structure));
+
+        /**
+         * @var \PHPUnit_Framework_MockObject_MockObject $argumentInterpreter
+         */
+        $argumentInterpreter = $this->getMock(
+            'Magento\Framework\Data\Argument\InterpreterInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $argumentInterpreter->expects($this->exactly(2))->method('evaluate')->with($argumentData);
+
+        /** @var \Magento\Framework\View\Element\BlockFactory|\PHPUnit_Framework_MockObject_MockObject $blockFactory */
+        $blockFactory = $this->getMock('Magento\Framework\View\Element\BlockFactory', [], [], '', false);
+        $blockFactory->expects($this->once())->method('createBlock')->with($class, ['data' => ['data' => null]])
+            ->will($this->returnValue($blockInstance));
+
+        /** @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject $eventManager */
+        $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false);
+        $eventManager->expects($this->once())->method('dispatch')
+            ->with('core_layout_block_create_after', [$literal => $blockInstance]);
+
+        /** @var \Magento\Framework\View\Layout\Generator\Block $block */
+        $block = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject(
+                'Magento\Framework\View\Layout\Generator\Block',
+                [
+                    'argumentInterpreter' => $argumentInterpreter,
+                    'blockFactory' => $blockFactory,
+                    'eventManager' => $eventManager
+                ]
+            );
+        $block->process($readerContext, $generatorContext);
+    }
+
+    /**
+     * @return array
+     */
+    public function provider()
+    {
+        return array(
+            array('test_group', '', 'testTtl', $this->once(), $this->never(), $this->once()),
+            array('', 'test_template', '', $this->never(), $this->once(), $this->never())
+        );
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/ContainerTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/ContainerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bac4e46fc88a6a4eda502eb28d835ca58d6f7f52
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/ContainerTest.php
@@ -0,0 +1,205 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+use Magento\Framework\View\Layout\ScheduledStructure;
+use Magento\Framework\View\Layout;
+
+class ContainerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerHelper
+     */
+    protected $objectManagerHelper;
+
+    /**
+     * @var Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerContextMock;
+
+    /**
+     * @var Layout\Generator\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $generatorContextMock;
+
+    /**
+     * @var Container|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $container;
+
+    /**
+     * @var ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scheduledStructureMock;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Data\Structure|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $structureMock;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->scheduledStructureMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->structureMock = $this->getMockBuilder('Magento\Framework\View\Layout\Data\Structure')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->generatorContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Context')
+            ->disableOriginalConstructor()->getMock();
+        $this->generatorContextMock->expects($this->any())
+            ->method('getStructure')
+            ->willReturn($this->structureMock);
+
+        $this->readerContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()->getMock();
+        $this->readerContextMock->expects($this->any())
+            ->method('getScheduledStructure')
+            ->willReturn($this->scheduledStructureMock);
+
+        $this->container = $this->objectManagerHelper->getObject('Magento\Framework\View\Layout\Generator\Container');
+    }
+
+    /**
+     * @param array $structureElements
+     * @param array $setAttributeData
+     * @param int $setAttributeCalls
+     *
+     * @dataProvider processDataProvider
+     */
+    public function testProcess($structureElements, $setAttributeData, $setAttributeCalls)
+    {
+        $this->scheduledStructureMock->expects($this->once())
+            ->method('getElements')
+            ->willReturn($structureElements);
+
+        $this->structureMock->expects($this->exactly($setAttributeCalls))
+            ->method('setAttribute')
+            ->will($this->returnValueMap($setAttributeData));
+
+        $this->container->process($this->readerContextMock, $this->generatorContextMock);
+    }
+
+    /**
+     * @return array
+     */
+    public function processDataProvider()
+    {
+        return [
+            'sample_data' => [
+                'structureElements' => [
+                    'first_container' => [
+                        'container',
+                        [
+                            'attributes' => [
+                                Layout\Element::CONTAINER_OPT_LABEL => 'dd_label',
+                                Container::CONTAINER_OPT_HTML_TAG   => 'dd',
+                                Container::CONTAINER_OPT_HTML_CLASS => 'dd_class',
+                                Container::CONTAINER_OPT_HTML_ID    => 'dd_id',
+                            ]
+                        ]
+                    ]
+                ],
+                'setAttributeData' => [
+                    ['first_container', Layout\Element::CONTAINER_OPT_LABEL, 'dd_label'],
+                    ['first_container', Container::CONTAINER_OPT_HTML_TAG, 'dd'],
+                    ['first_container', Container::CONTAINER_OPT_HTML_CLASS, 'dd_class'],
+                    ['first_container', Container::CONTAINER_OPT_HTML_ID, 'dd_id'],
+                ],
+                'setAttributeCalls' => 4,
+            ]
+        ];
+    }
+
+    /**
+     * @param array $structureElements
+     *
+     * @dataProvider processWithExceptionDataProvider
+     * @expectedException \Magento\Framework\Exception
+     */
+    public function testProcessWithException($structureElements)
+    {
+        $this->scheduledStructureMock->expects($this->once())
+            ->method('getElements')
+            ->willReturn($structureElements);
+
+        $this->structureMock->expects($this->once())
+            ->method('setAttribute')
+            ->willReturnSelf();
+
+        $this->container->process($this->readerContextMock, $this->generatorContextMock);
+    }
+
+    /**
+     * @return array
+     */
+    public function processWithExceptionDataProvider()
+    {
+        return [
+            'wrong_html_tag' => [
+                'structureElements' => [
+                    'first_container' => [
+                        'container',
+                        [
+                            'attributes' => [
+                                Container::CONTAINER_OPT_LABEL   => 'label',
+                                Layout\Element::CONTAINER_OPT_HTML_TAG => 'custom_tag'
+                            ]
+                        ]
+                    ]
+                ],
+            ],
+            'html_id_without_tag' => [
+                'structureElements' => [
+                    'second_container' => [
+                        'container',
+                        [
+                            'attributes' => [
+                                Container::CONTAINER_OPT_LABEL   => 'label',
+                                Layout\Element::CONTAINER_OPT_HTML_ID => 'html_id'
+                            ]
+                        ]
+                    ]
+                ],
+            ],
+            'html_class_without_tag' => [
+                'structureElements' => [
+                    'third_container' => [
+                        'container',
+                        [
+                            'attributes' => [
+                                Container::CONTAINER_OPT_LABEL   => 'label',
+                                Layout\Element::CONTAINER_OPT_HTML_CLASS => 'html_class'
+                            ]
+                        ]
+                    ]
+                ],
+            ],
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/UiComponentTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/UiComponentTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c896bba0e2aaf66778c7c641e8a526c663a7b76e
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/UiComponentTest.php
@@ -0,0 +1,170 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+use Magento\Framework\View\Layout\ScheduledStructure;
+use Magento\Framework\View\Layout;
+
+class UiComponentTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerHelper
+     */
+    protected $objectManagerHelper;
+
+    /**
+     * @var ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scheduledStructureMock;
+
+    /**
+     * @var Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerContextMock;
+
+    /**
+     * @var \Magento\Framework\View\Element\UiComponentFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $uiComponentFactoryMock;
+
+    /**
+     * @var \Magento\Framework\Data\Argument\InterpreterInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $argumentInterpreterMock;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Generator\UiComponent
+     */
+    protected $uiComponent;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+        $this->argumentInterpreterMock = $this->getMockBuilder('Magento\Framework\Data\Argument\InterpreterInterface')
+            ->disableOriginalConstructor()->getMockForAbstractClass();
+
+        $this->uiComponentFactoryMock = $this->getMockBuilder('Magento\Framework\View\Element\UiComponentFactory')
+            ->disableOriginalConstructor()->getMock();
+        $this->scheduledStructureMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->uiComponent = $this->objectManagerHelper->getObject(
+            'Magento\Framework\View\Layout\Generator\UiComponent',
+            [
+                'uiComponentFactory' => $this->uiComponentFactoryMock,
+                'argumentInterpreter' => $this->argumentInterpreterMock
+            ]
+        );
+    }
+
+    public function testProcess()
+    {
+        $this->prepareScheduledStructure();
+
+        $this->readerContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->readerContextMock->expects($this->any())
+            ->method('getScheduledStructure')
+            ->willReturn($this->scheduledStructureMock);
+
+        $generatorContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Context')
+            ->disableOriginalConstructor()->getMock();
+
+        $structureMock = $this->getMockBuilder('Magento\Framework\View\Layout\Data\Structure')
+            ->disableOriginalConstructor()->getMock();
+
+        $structureMock->expects($this->once())
+            ->method('addToParentGroup')
+            ->with(UiComponent::TYPE, 'new_group')
+            ->willReturnSelf();
+
+        $layoutMock = $this->getMockBuilder('Magento\Framework\View\LayoutInterface')->getMockForAbstractClass();
+
+        $generatorContextMock->expects($this->any())
+            ->method('getStructure')
+            ->willReturn($structureMock);
+        $generatorContextMock->expects($this->any())
+            ->method('getLayout')
+            ->willReturn($layoutMock);
+
+        $this->uiComponentFactoryMock->expects($this->any())
+            ->method('setLayout')
+            ->with($layoutMock)
+            ->willReturnSelf();
+
+        $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\AbstractBlock')
+            ->disableOriginalConstructor()->getMock();
+
+        $blockMock->expects($this->any())
+            ->method('setLayout')
+            ->with($layoutMock)
+            ->willReturnSelf();
+
+        $this->uiComponentFactoryMock->expects($this->any())
+            ->method('createUiComponent')
+            ->with(
+                'component_name',
+                UiComponent::TYPE,
+                ['attribute_1' => 'value_1', 'attribute_2' => 'value_2']
+            )->willReturn($blockMock);
+
+        $this->argumentInterpreterMock->expects($this->any())
+            ->method('evaluate')
+            ->will($this->returnValueMap([
+                [['key_1' => 'value_1'], 'value_1'],
+                [['key_2' => 'value_2'], 'value_2']
+            ]));
+
+        $layoutMock->expects($this->any())
+            ->method('setBlock')
+            ->with(UiComponent::TYPE, $blockMock)
+            ->willReturnSelf();
+
+        $this->uiComponent->process($this->readerContextMock, $generatorContextMock);
+    }
+
+    protected function prepareScheduledStructure()
+    {
+        $this->scheduledStructureMock->expects($this->any())
+            ->method('getElements')
+            ->willReturn([
+                UiComponent::TYPE => [
+                    UiComponent::TYPE,
+                    [
+                        'attributes' => [
+                            'group'   => 'new_group',
+                            'component' => 'component_name'
+                        ],
+                        'arguments'  => [
+                            'attribute_1' => ['key_1' => 'value_1'],
+                            'attribute_2' => ['key_2' => 'value_2'],
+                        ]
+                    ]
+                ]
+            ]);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/GeneratorPoolTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/GeneratorPoolTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..37a2c9b3b4ebea88bc829972e60dbac06900914a
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/GeneratorPoolTest.php
@@ -0,0 +1,169 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Layout\Element
+ */
+namespace Magento\Framework\View\Layout;
+
+class GeneratorPoolTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helperMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerContextMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $generatorContextMock;
+
+    /**
+     * @var ScheduledStructure
+     */
+    protected $scheduledStructure;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $structureMock;
+
+    /**
+     * @var GeneratorPool
+     */
+    protected $model;
+
+    protected function setUp()
+    {
+        // ScheduledStructure
+        $this->readerContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->scheduledStructure = new ScheduledStructure;
+        $this->readerContextMock->expects($this->any())->method('getScheduledStructure')
+            ->willReturn($this->scheduledStructure);
+
+        // Data\Structure
+        $this->generatorContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->structureMock = $this->getMockBuilder('Magento\Framework\View\Layout\Data\Structure')
+            ->disableOriginalConstructor()
+            ->setMethods(['reorderChildElement'])
+            ->getMock();
+        $this->generatorContextMock->expects($this->any())->method('getStructure')
+            ->willReturn($this->structureMock);
+
+        $this->helperMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure\Helper')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = new GeneratorPool($this->helperMock, $this->getGeneratorsMocks());
+    }
+
+    /**
+     * @return \PHPUnit_Framework_MockObject_MockObject[]
+     */
+    protected function getGeneratorsMocks()
+    {
+        $firstGenerator = $this->getMock('Magento\Framework\View\Layout\GeneratorInterface');
+        $firstGenerator->expects($this->any())->method('getType')->willReturn('first_generator');
+        $firstGenerator->expects($this->atLeastOnce())->method('process');
+
+        $secondGenerator = $this->getMock('Magento\Framework\View\Layout\GeneratorInterface');
+        $secondGenerator->expects($this->any())->method('getType')->willReturn('second_generator');
+        $secondGenerator->expects($this->atLeastOnce())->method('process');
+        return [$firstGenerator, $secondGenerator];
+    }
+
+    /**
+     * @dataProvider processDataProvider
+     */
+    public function testProcess($schedule, $expectedSchedule)
+    {
+        foreach ($schedule['structure'] as $structureElement) {
+            $this->scheduledStructure->setStructureElement($structureElement, []);
+        }
+
+        $moveMap = [];
+        foreach ($schedule['move'] as $elementName => $move) {
+            $this->scheduledStructure->setElementToMove($elementName, $move);
+            list ($destination, $sibling, $isAfter) = $move;
+            $moveMap[] = [$destination, $elementName, $sibling, $isAfter];
+        }
+        $invocation = $this->structureMock->expects($this->any())->method('reorderChildElement');
+        call_user_func_array([$invocation, 'withConsecutive'], $moveMap);
+
+        foreach ($schedule['remove'] as $remove) {
+            $this->scheduledStructure->setElementToRemoveList($remove);
+        }
+
+        $this->helperMock->expects($this->atLeastOnce())->method('scheduleElement')
+            ->with($this->scheduledStructure, $this->structureMock, $this->anything())
+            ->willReturnCallback(function ($scheduledStructure, $structure, $elementName) use ($schedule) {
+                /** @var $scheduledStructure ScheduledStructure */
+                /** @var $structure Data\Structure */
+                $this->assertContains($elementName, $schedule['structure']);
+                $scheduledStructure->unsetStructureElement($elementName);
+                $scheduledStructure->setElement($elementName, []);
+                $structure->createStructuralElement($elementName, 'block', 'someClass');
+            });
+
+        $this->model->process($this->readerContextMock, $this->generatorContextMock);
+        $this->assertEquals($expectedSchedule, $this->scheduledStructure->getElements());
+    }
+
+    /**
+     * Data provider fo testProcess
+     *
+     * @return array
+     */
+    public function processDataProvider()
+    {
+        return [
+            [
+                'schedule' => [
+                    'structure' => [
+                        'first.element',
+                        'second.element',
+                        'third.element',
+                        'remove.element'
+                    ],
+                    'move' => [
+                        'third.element' => ['second.element', 'sibling', false, 'alias']
+                    ],
+                    'remove' => ['remove.element']
+                ],
+                'expectedScheduledElements' => [
+                    'first.element' => [], 'second.element' => [], 'third.element' => []
+                ]
+            ],
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/BlockTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/BlockTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..a4e12a3fa7ca7796fc6cdf628be119635fc1a69d
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/BlockTest.php
@@ -0,0 +1,191 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Layout\Reader\Block
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+/**
+ * Class BlockTest
+ *
+ * @covers Magento\Framework\View\Layout\Reader\Block
+ */
+class BlockTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure|PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scheduledStructure;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Context|PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $context;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool|PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerPool;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Element
+     */
+    protected $currentElement;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Element
+     */
+    protected $parentElement;
+
+    /**
+     * @param string $xml
+     * @return \Magento\Framework\View\Layout\Element
+     */
+    protected function getElement($xml)
+    {
+        return new \Magento\Framework\View\Layout\Element($xml);
+    }
+
+    /**
+     * Prepare reader pool
+     *
+     * @param string $xml
+     */
+    protected function prepareReaderPool($xml)
+    {
+        $this->currentElement = $this->getElement($xml);
+        $this->readerPool->expects($this->once())->method('readStructure')->with($this->context, $this->currentElement);
+    }
+
+    /**
+     * Return testing instance of block
+     *
+     * @param array $arguments
+     * @return \Magento\Framework\View\Layout\Reader\Block
+     */
+    protected function getBlock(array $arguments)
+    {
+        return (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\Reader\Block', $arguments);
+    }
+
+    /**
+     * Sets up the fixture, for example, open a network connection.
+     * This method is called before a test is executed.
+     */
+    public function setUp()
+    {
+        $this->scheduledStructure = $this->getMock(
+            'Magento\Framework\View\Layout\ScheduledStructure',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->context = $this->getMock('Magento\Framework\View\Layout\Reader\Context', [], [], '', false);
+        $this->readerPool = $this->getMock('Magento\Framework\View\Layout\Reader\Pool', [], [], '', false);
+        $this->parentElement = $this->getElement('<' . \Magento\Framework\View\Layout\Reader\Block::TYPE_BLOCK . '/>');
+    }
+
+    /**
+     * @param string $literal
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setElementToRemoveListCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $isSetFlagCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $scheduleStructureCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $getScopeCount
+     * @covers Magento\Framework\View\Layout\Reader\Block::process()
+     * @dataProvider processDataProvider
+     */
+    public function testProcessBlock(
+        $literal,
+        $setElementToRemoveListCount,
+        $isSetFlagCount,
+        $scheduleStructureCount,
+        $getScopeCount
+    ) {
+        $this->context->expects($this->once())->method('getScheduledStructure')
+            ->will($this->returnValue($this->scheduledStructure));
+        $this->scheduledStructure->expects($setElementToRemoveListCount)
+            ->method('setElementToRemoveList')->with($literal);
+        $scope = $this->getMock('Magento\Framework\App\ScopeInterface', [], [], '', false);
+
+        $testValue = 'some_value';
+        $scopeConfig = $this->getMock('Magento\Framework\App\Config', [], [], '', false);
+        $scopeConfig->expects($isSetFlagCount)->method('isSetFlag')
+            ->with($testValue, null, $scope)
+            ->will($this->returnValue(false));
+
+        $helper = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure\Helper', [], [], '', false);
+        $helper->expects($scheduleStructureCount)->method('scheduleStructure')->will($this->returnValue($literal));
+
+        $scopeResolver = $this->getMock('Magento\Framework\App\ScopeResolverInterface', [], [], '', false);
+        $scopeResolver->expects($getScopeCount)->method('getScope')->will($this->returnValue($scope));
+
+        $this->prepareReaderPool('<' . $literal . ' ifconfig="' . $testValue . '"/>');
+
+        /** @var \Magento\Framework\View\Layout\Reader\Block $block */
+        $block = $this->getBlock(
+            [
+                'helper' => $helper,
+                'scopeConfig' => $scopeConfig,
+                'scopeResolver' => $scopeResolver,
+                'readerPool' => $this->readerPool
+            ]
+        );
+        $block->process($this->context, $this->currentElement, $this->parentElement);
+    }
+
+    /**
+     * @covers Magento\Framework\View\Layout\Reader\Block::process()
+     */
+    public function testProcessReference()
+    {
+        $testName = 'test_value';
+        $literal = 'referenceBlock';
+        $this->context->expects($this->once())->method('getScheduledStructure')
+            ->will($this->returnValue($this->scheduledStructure));
+        $this->scheduledStructure->expects($this->once())->method('getStructureElementData')->with($testName, [])
+            ->will($this->returnValue([]));
+        $this->scheduledStructure->expects($this->once())->method('setStructureElementData')
+            ->with($testName, ['actions' => [], 'arguments'=> []]);
+
+        $this->prepareReaderPool('<' . $literal . ' name="' . $testName . '"/>');
+
+        /** @var \Magento\Framework\View\Layout\Reader\Block $block */
+        $block = $this->getBlock(['readerPool' => $this->readerPool]);
+        $block->process($this->context, $this->currentElement, $this->parentElement);
+    }
+
+    /**
+     * @return array
+     */
+    public function processDataProvider()
+    {
+        return array(
+            array('block', $this->once(), $this->once(), $this->once(), $this->once()),
+            array('page', $this->never(), $this->never(), $this->never(), $this->never())
+        );
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/ContainerTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/ContainerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..376d44623b86c2286ade5ff929ba94220d389ff2
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/ContainerTest.php
@@ -0,0 +1,163 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+use Magento\Framework\View\Layout\ScheduledStructure;
+
+class ContainerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerHelper
+     */
+    protected $objectManagerHelper;
+
+    /**
+     * @var Container|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $container;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure\Helper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helperMock;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerPoolMock;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->helperMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure\Helper')
+            ->disableOriginalConstructor()->getMock();
+        $this->readerPoolMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Pool')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->container = $this->objectManagerHelper->getObject(
+            'Magento\Framework\View\Layout\Reader\Container',
+            [
+                'helper' => $this->helperMock,
+                'readerPool' => $this->readerPoolMock
+            ]
+        );
+    }
+
+    /**
+     * @param \Magento\Framework\View\Layout\Element $elementCurrent
+     * @param string $containerName
+     * @param \Magento\Framework\View\Layout\Element $elementParent
+     * @param array $structureElement
+     * @param array $expectedData
+     *
+     * @dataProvider processDataProvider
+     */
+    public function testProcess(
+        $elementCurrent,
+        $containerName,
+        $elementParent,
+        $structureElement,
+        $expectedData
+    ) {
+
+        /** @var ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructureMock */
+        $scheduledStructureMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure')
+            ->disableOriginalConstructor()->getMock();
+        $scheduledStructureMock->expects($this->once())
+            ->method('getStructureElementData')
+            ->with($containerName)
+            ->willReturn($structureElement);
+        $scheduledStructureMock->expects($this->once())
+            ->method('setStructureElementData')
+            ->with($containerName, $expectedData)
+            ->willReturnSelf();
+
+        /** @var Context|\PHPUnit_Framework_MockObject_MockObject $contextMock */
+        $contextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()->getMock();
+        $contextMock->expects($this->any())
+            ->method('getScheduledStructure')
+            ->willReturn($scheduledStructureMock);
+
+        $this->helperMock
+            ->method('scheduleStructure')
+            ->with($scheduledStructureMock, $elementCurrent, $elementParent);
+
+        $this->readerPoolMock->expects($this->once())
+            ->method('readStructure')
+            ->with($contextMock, $elementCurrent)
+            ->willReturnSelf();
+
+        $this->container->process($contextMock, $elementCurrent, $elementParent);
+    }
+
+    /**
+     * @return array
+     */
+    public function processDataProvider()
+    {
+        return [
+            'container' => [
+                'elementCurrent' => new \Magento\Framework\View\Layout\Element(
+                    '<container name="container" id="id_add" tag="body"/>'
+                ),
+                'containerName' => 'container',
+                'elementParent' => new \Magento\Framework\View\Layout\Element('<parent_element/>'),
+                'structureElement' => [
+                    'attributes' => [
+                        'id' => 'id_value',
+                        'tag' => 'tag_value',
+                        'unchanged' => 'unchanged_value',
+                    ]
+                ],
+                'expectedData' => [
+                    'attributes' => [
+                        'id' => 'id_add',
+                        'tag' => 'body',
+                        'unchanged' => 'unchanged_value',
+                    ]
+                ]
+            ],
+            'referenceContainer' => [
+                'elementCurrent' => new \Magento\Framework\View\Layout\Element(
+                    '<referenceContainer name="reference" htmlTag="span" htmlId="id_add" htmlClass="new" label="Add"/>'
+                ),
+                'containerName' => 'reference',
+                'elementParent' => new \Magento\Framework\View\Layout\Element('<parent_element/>'),
+                'structureElement' => [],
+                'expectedData' => [
+                    'attributes' => [
+                        Container::CONTAINER_OPT_HTML_TAG   => 'span',
+                        Container::CONTAINER_OPT_HTML_ID    => 'id_add',
+                        Container::CONTAINER_OPT_HTML_CLASS => 'new',
+                        Container::CONTAINER_OPT_LABEL      => 'Add',
+                    ]
+                ]
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/FactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/FactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..3786f460147b92d6504fc54f1067fb77b89ca607
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/FactoryTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Reader;
+
+
+class FactoryTest extends \PHPUnit_Framework_TestCase
+{
+    public function testCreateInvalidArgument()
+    {
+        $className = 'class_name';
+        $data = ['data'];
+
+        $object = (new \Magento\TestFramework\Helper\ObjectManager($this))->getObject('Magento\Framework\Object');
+
+        /** @var \Magento\Framework\ObjectManager|\PHPUnit_Framework_MockObject_MockObject $objectManager */
+        $objectManager = $this->getMock('Magento\Framework\ObjectManager', [], [], '', false);
+        $objectManager->expects($this->once())->method('create')->with($className, $data)
+            ->will($this->returnValue($object));
+
+        /** @var \Magento\Framework\View\Layout\ReaderFactory|\PHPUnit_Framework_MockObject_MockObject $factory */
+        $factory = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\ReaderFactory', ['objectManager' => $objectManager]);
+
+        $this->setExpectedException(
+            '\InvalidArgumentException',
+            $className . ' doesn\'t implement \Magento\Framework\View\Layout\ReaderInterface'
+        );
+        $factory->create($className, $data);
+    }
+
+    public function testCreateValidArgument()
+    {
+        $className = 'class_name';
+        $data = ['data'];
+
+        /** @var \Magento\Framework\View\Layout\ReaderInterface|\PHPUnit_Framework_MockObject_MockObject $object */
+        $object = $this->getMock('Magento\Framework\View\Layout\ReaderInterface', [], [], '', false);
+
+        /** @var \Magento\Framework\ObjectManager|\PHPUnit_Framework_MockObject_MockObject $objectManager */
+        $objectManager = $this->getMock('Magento\Framework\ObjectManager', [], [], '', false);
+        $objectManager->expects($this->once())->method('create')->with($className, $data)
+            ->will($this->returnValue($object));
+
+        /** @var \Magento\Framework\View\Layout\ReaderFactory|\PHPUnit_Framework_MockObject_MockObject $factory */
+        $factory = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\ReaderFactory', ['objectManager' => $objectManager]);
+
+        $this->assertSame($object, $factory->create($className, $data));
+    }
+} 
\ No newline at end of file
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/MoveTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/MoveTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8dd558217e7d1d25f956043ce79e8c3fbad1be9
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/MoveTest.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+use Magento\Framework\View\Layout\ScheduledStructure;
+
+class MoveTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerHelper
+     */
+    protected $objectManagerHelper;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Move
+     */
+    protected $move;
+
+    /**
+     * @var Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $contextMock;
+
+    /**
+     * @var ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scheduledStructureMock;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+
+        $this->scheduledStructureMock = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure')
+            ->disableOriginalConstructor()->getMock();
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->contextMock->expects($this->any())
+            ->method('getScheduledStructure')
+            ->willReturn($this->scheduledStructureMock);
+
+        $this->move = $this->objectManagerHelper->getObject('Magento\Framework\View\Layout\Reader\Move');
+    }
+
+    /**
+     * @param \Magento\Framework\View\Layout\Element $currentElement
+     * @param string $destination
+     * @param string $siblingName
+     * @param bool $isAfter
+     * @param string $alias
+     * @param \Magento\Framework\View\Layout\Element $parentElement
+     *
+     * @dataProvider processDataProvider
+     */
+    public function testProcess($currentElement, $destination, $siblingName, $isAfter, $alias, $parentElement)
+    {
+        $this->scheduledStructureMock->expects($this->any())
+            ->method('setElementToMove')
+            ->with(
+                (string)$currentElement->getAttribute('element'),
+                [$destination, $siblingName, $isAfter, $alias]
+            );
+        $this->move->process($this->contextMock, $currentElement, $parentElement);
+    }
+
+    /**
+     * @return array
+     */
+    public function processDataProvider()
+    {
+        return [
+            'move_before' => [
+                'element' => new \Magento\Framework\View\Layout\Element('
+                    <move element="product" destination="product.info" before="before.block" as="as.product.info"/>
+                '),
+                'destination' => 'product.info',
+                'siblingName' => 'before.block',
+                'isAfter' => false,
+                'alias' => 'as.product.info',
+                'parentElement' => new \Magento\Framework\View\Layout\Element('<element/>')
+            ],
+            'move_after' => [
+                'element' => new \Magento\Framework\View\Layout\Element('
+                    <move element="product" destination="product.info" after="after.block" as="as.product.info"/>
+                '),
+                'destination' => 'product.info',
+                'siblingName' => 'after.block',
+                'isAfter' => true,
+                'alias' => 'as.product.info',
+                'parentElement' => new \Magento\Framework\View\Layout\Element('<element/>')
+            ]
+        ];
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception
+     */
+    public function testProcessInvalidData()
+    {
+        $invalidElement = new \Magento\Framework\View\Layout\Element('<move element="product" into="product.info"/>');
+        $this->move->process($this->contextMock, $invalidElement, $invalidElement);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/PoolTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/PoolTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd366e9ef7de30447e516b97d87f0b8310ea0563
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/PoolTest.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class PoolTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var ObjectManagerHelper */
+    protected $objectManagerHelper;
+
+    /** @var \Magento\Framework\View\Layout\Reader\Pool */
+    protected $pool;
+
+    /** @var \Magento\Framework\View\Layout\ReaderFactory|\PHPUnit_Framework_MockObject_MockObject */
+    protected $readerFactoryMock;
+
+    protected function setUp()
+    {
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+        $this->readerFactoryMock = $this->getMockBuilder('Magento\Framework\View\Layout\ReaderFactory')
+            ->disableOriginalConstructor()->getMock();
+
+        $this->pool = $this->objectManagerHelper->getObject(
+            'Magento\Framework\View\Layout\Reader\Pool',
+            [
+                'readerFactory' => $this->readerFactoryMock,
+                'readers' => [
+                    'move' => 'Magento\Framework\View\Layout\Reader\Move',
+                    'remove' => 'Magento\Framework\View\Layout\Reader\Remove',
+                ]
+            ]
+        );
+    }
+
+    public function testReadStructure()
+    {
+        /** @var Context $contextMock */
+        $contextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()->getMock();
+
+        $currentElement = new \Magento\Framework\View\Layout\Element(
+            '<element><move name="block"/><remove name="container"/><ignored name="user"/></element>'
+        );
+
+        /**
+         * @var \Magento\Framework\View\Layout\Reader\Move|\PHPUnit_Framework_MockObject_MockObject $moveReaderMock
+         */
+        $moveReaderMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Move')
+            ->disableOriginalConstructor()->getMock();
+        $moveReaderMock->expects($this->once())->method('process')
+            ->willReturn($this->returnSelf());
+        $moveReaderMock->method('getSupportedNodes')
+            ->willReturn(['move']);
+
+        /**
+         * @var \Magento\Framework\View\Layout\Reader\Remove|\PHPUnit_Framework_MockObject_MockObject $removeReaderMock
+         */
+        $removeReaderMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Remove')
+            ->disableOriginalConstructor()->getMock();
+        $removeReaderMock->expects($this->once())->method('process')
+            ->with()
+            ->willReturn($this->returnSelf());
+        $removeReaderMock->method('getSupportedNodes')
+            ->willReturn(['remove']);
+
+        $this->readerFactoryMock->expects($this->any())
+            ->method('create')
+            ->will($this->returnValueMap(
+                [
+                    ['Magento\Framework\View\Layout\Reader\Move', [], $moveReaderMock],
+                    ['Magento\Framework\View\Layout\Reader\Remove', [], $removeReaderMock]
+                ]
+            ));
+
+        $this->pool->readStructure($contextMock, $currentElement);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/RemoveTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/RemoveTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..966e827e4b0d6488ee3dd9869ae3e19c924d386e
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/RemoveTest.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Layout\Reader\Remove
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+class RemoveTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Remove
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $context;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Element
+     */
+    protected $element;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scheduledStructure;
+
+    public function setUp()
+    {
+        $this->context = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->scheduledStructure = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure')
+            ->disableOriginalConstructor()->setMethods(['setElementToRemoveList', '__wakeup'])
+            ->getMock();
+        $this->model = new Remove;
+    }
+
+    public function testGetSupportedNodes()
+    {
+        $data[] = \Magento\Framework\View\Layout\Reader\Remove::TYPE_REMOVE;
+        $this->assertEquals($data, $this->model->getSupportedNodes());
+    }
+
+    /**
+     * @dataProvider processDataProvider
+     */
+    public function testProcess($xml)
+    {
+        $this->element = new \Magento\Framework\View\Layout\Element($xml);
+        $this->context->expects($this->any())
+            ->method('getScheduledStructure')
+            ->will($this->returnValue($this->scheduledStructure));
+        $this->scheduledStructure->expects($this->once())->method('setElementToRemoveList')->with('header');
+        $this->model->process($this->context, $this->element, $this->element);
+    }
+
+    public function processDataProvider()
+    {
+        return [
+            [
+                '<remove name="header"/>'
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/UiComponentTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/UiComponentTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bef885205b33997676d2ffd96a1edc9f00eafe9d
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/UiComponentTest.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Layout\Reader\UiComponent
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+class UiComponentTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\UiComponent
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure\Helper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helper;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var \Magento\Framework\App\ScopeResolverInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeResolver;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $context;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Element
+     */
+    protected $element;
+
+    public function setUp()
+    {
+        $this->helper = $this->getMockBuilder('Magento\Framework\View\Layout\ScheduledStructure\Helper')
+            ->setMethods(['scheduleStructure'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->scopeConfig = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')->getMock();
+        $this->scopeResolver = $this->getMockForAbstractClass(
+            'Magento\Framework\App\ScopeResolverInterface',
+            [],
+            '',
+            false
+        );
+        $this->context = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->setMethods(['getScheduledStructure'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model = new UiComponent($this->helper, $this->scopeConfig, $this->scopeResolver, null);
+    }
+
+    public function testGetSupportedNodes()
+    {
+        $data[] = \Magento\Framework\View\Layout\Reader\UiComponent::TYPE_UI_COMPONENT;
+        $this->assertEquals($data, $this->model->getSupportedNodes());
+    }
+
+    /**
+     * @dataProvider processDataProvider
+     */
+    public function testProcess($xml)
+    {
+        $scope = $this->getMock('Magento\Framework\App\ScopeInterface', [], [], '', false);
+        $this->scopeResolver->expects($this->any())->method('getScope')->will($this->returnValue($scope));
+        $this->scopeConfig->expects($this->once())->method('isSetFlag')
+            ->with('test', null, $scope)
+            ->will($this->returnValue(false));
+        $this->element = new \Magento\Framework\View\Layout\Element($xml);
+        $scheduleStructure = $this->getMock('\Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
+        $this->context->expects($this->any())->method('getScheduledStructure')->will(
+            $this->returnValue($scheduleStructure)
+        );
+        $this->helper->expects($this->any())->method('scheduleStructure')->with(
+            $scheduleStructure,
+            $this->element,
+            $this->element
+        )->willReturn($this->element->getAttribute('name'));
+
+        $this->helper->expects($this->any())->method('setStructureElementData')->with(
+            $this->element->getAttribute('name'),
+            ['attributes' => ['group' => '', 'component' => 'listing']]
+        );
+
+        $this->model->process($this->context, $this->element, $this->element);
+    }
+
+    public function processDataProvider()
+    {
+        return [
+            [
+                '<ui_component name="cms_block_listing" component="listing" ifconfig="test"/>'
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Layout/ScheduledStructure/HelperTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/ScheduledStructure/HelperTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bc2e863e22d5a268be5a00314288f353b78fdb45
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Layout/ScheduledStructure/HelperTest.php
@@ -0,0 +1,171 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Layout\ScheduledStructure;
+
+use Magento\Framework\View\Layout;
+
+/**
+ * Class HelperTest
+ * @covers Magento\Framework\View\Layout\ScheduledStructure\Helper
+ */
+class HelperTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @param string $currentNodeName
+     * @param string $actualNodeName
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $unsetPathElementCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $unsetStructureElementCount
+     * @dataProvider providerScheduleStructure
+     */
+    public function testScheduleStructure(
+        $currentNodeName,
+        $actualNodeName,
+        $unsetPathElementCount,
+        $unsetStructureElementCount
+    ) {
+        $parentNodeName = 'parent_node';
+        $currentNodeAs = 'currentNode';
+        $after = 'after';
+        $block = 'block';
+        $testPath = 'test_path';
+        $potentialChild = 'potential_child';
+
+        /** @var Layout\ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructure */
+        $scheduledStructure = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
+        $scheduledStructure->expects($this->once())->method('hasPath')
+            ->with($parentNodeName)
+            ->will($this->returnValue(true));
+        $scheduledStructure->expects($this->any())->method('hasStructureElement')
+            ->with($actualNodeName)
+            ->will($this->returnValue(true));
+        $scheduledStructure->expects($this->once())->method('setPathElement')
+            ->with($actualNodeName, $testPath . '/' . $actualNodeName)
+            ->will($this->returnValue(true));
+        $scheduledStructure->expects($this->once())->method('setStructureElement')
+            ->with($actualNodeName, [$block, $currentNodeAs, $parentNodeName, $after, true]);
+        $scheduledStructure->expects($this->once())->method('getPath')
+            ->with($parentNodeName)
+            ->will($this->returnValue('test_path'));
+        $scheduledStructure->expects($this->once())->method('getPaths')
+            ->will($this->returnValue([$potentialChild => $testPath . '/' . $currentNodeName . '/']));
+        $scheduledStructure->expects($unsetPathElementCount)->method('unsetPathElement')
+            ->with($potentialChild);
+        $scheduledStructure->expects($unsetStructureElementCount)->method('unsetStructureElement')
+            ->with($potentialChild);
+
+        $currentNode = new \Magento\Framework\View\Layout\Element(
+            '<' . $block . ' name="' . $currentNodeName . '" as="' . $currentNodeAs . '" after="' . $after . '"/>'
+        );
+        $parentNode = new \Magento\Framework\View\Layout\Element('<' . $block . ' name="' . $parentNodeName . '"/>');
+
+        /** @var Layout\ScheduledStructure\Helper $helper */
+        $helper = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\ScheduledStructure\Helper');
+        $result = $helper->scheduleStructure($scheduledStructure, $currentNode, $parentNode);
+        $this->assertEquals($actualNodeName, $result);
+    }
+
+    /**
+     * @return array
+     */
+    public function providerScheduleStructure()
+    {
+        return array(
+            array('current_node', 'current_node', $this->once(), $this->once()),
+            array('', 'parent_node_schedule_block0', $this->never(), $this->never())
+        );
+    }
+
+    public function testScheduleNonExistentElement()
+    {
+        $key = 'key';
+
+        /** @var Layout\ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructure */
+        $scheduledStructure = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
+        $scheduledStructure->expects($this->once())->method('getStructureElement')->with($key)
+            ->willReturn([]);
+        $scheduledStructure->expects($this->once())->method('unsetPathElement')->with($key);
+        $scheduledStructure->expects($this->once())->method('unsetStructureElement')->with($key);
+
+        /** @var Layout\Data\Structure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructure */
+        $dataStructure = $this->getMock('Magento\Framework\View\Layout\Data\Structure', [], [], '', false);
+
+        /** @var Layout\ScheduledStructure\Helper $helper */
+        $helper = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\ScheduledStructure\Helper');
+        $helper->scheduleElement($scheduledStructure, $dataStructure, $key);
+    }
+
+    public function testScheduleElement()
+    {
+        $key = 'key';
+        $parentName = 'parent';
+        $siblingName = 'sibling';
+        $alias = 'alias';
+        $block = 'block';
+        $data = ['data'];
+
+        /** @var Layout\ScheduledStructure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructure */
+        $scheduledStructure = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
+        $scheduledStructure->expects($this->any())->method('getStructureElement')->will(
+            $this->returnValueMap(
+                [
+                    [
+                        $key,
+                        null,
+                        [
+                            Layout\ScheduledStructure\Helper::SCHEDULED_STRUCTURE_INDEX_TYPE => $block,
+                            Layout\ScheduledStructure\Helper::SCHEDULED_STRUCTURE_INDEX_ALIAS => $alias,
+                            Layout\ScheduledStructure\Helper::SCHEDULED_STRUCTURE_INDEX_PARENT_NAME => $parentName,
+                            Layout\ScheduledStructure\Helper::SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME => $siblingName,
+                            Layout\ScheduledStructure\Helper::SCHEDULED_STRUCTURE_INDEX_IS_AFTER => true,
+                        ]
+                    ],
+                    [$parentName, null, []]
+                ]
+            )
+        );
+        $scheduledStructure->expects($this->any())->method('getStructureElementData')->will(
+            $this->returnValueMap([
+                [$key, null, $data],
+                [$parentName, null, $data]
+            ])
+        );
+        $scheduledStructure->expects($this->any())->method('hasStructureElement')->will($this->returnValue(true));
+        $scheduledStructure->expects($this->once())->method('setElement')->with($key, [$block, $data]);
+
+        /** @var Layout\Data\Structure|\PHPUnit_Framework_MockObject_MockObject $scheduledStructure */
+        $dataStructure = $this->getMock('Magento\Framework\View\Layout\Data\Structure', [], [], '', false);
+        $dataStructure->expects($this->once())->method('createElement')->with($key, ['type' => $block]);
+        $dataStructure->expects($this->once())->method('hasElement')->with($parentName)->will($this->returnValue(true));
+        $dataStructure->expects($this->once())->method('setAsChild')->with($key, $parentName, $alias)
+            ->will($this->returnValue(true));
+
+        /** @var Layout\ScheduledStructure\Helper $helper */
+        $helper = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Layout\ScheduledStructure\Helper');
+        $helper->scheduleElement($scheduledStructure, $dataStructure, $key);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/LayoutTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/LayoutTest.php
index 260008d98e0258c4728f8db00067ccb3ac1bbfc7..5bbc9c1aaf9ead90c8e5cb9f9d459f346d530280 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/View/LayoutTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/LayoutTest.php
@@ -38,11 +38,6 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
      */
     protected $structureMock;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $blockFactoryMock;
-
     /**
      * @var \Magento\Framework\View\Layout\ProcessorFactory|\PHPUnit_Framework_MockObject_MockObject
      */
@@ -73,13 +68,19 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
      */
     protected $schStructureMock;
 
+    /**
+     * @var \Magento\Framework\View\Layout\Generator\Block|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $generatorBlockMock;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Generator\Container|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $generatorContainerMock;
+
     protected function setUp()
     {
-        $this->structureMock = $this->getMockBuilder('Magento\Framework\Data\Structure')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->blockFactoryMock = $this->getMockBuilder('Magento\Framework\View\Element\BlockFactory')
-            ->setMethods(['createBlock'])
+        $this->structureMock = $this->getMockBuilder('Magento\Framework\View\Layout\Data\Structure')
             ->disableOriginalConstructor()
             ->getMock();
         $this->processorFactoryMock = $this->getMock(
@@ -96,36 +97,47 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         $this->processorMock = $this->getMock('Magento\Core\Model\Layout\Merge', [], [], '', false);
         $this->schStructureMock = $this->getMock('Magento\Framework\View\Layout\ScheduledStructure', [], [], '', false);
         $this->eventManagerMock = $this->getMock('Magento\Framework\Event\ManagerInterface');
+        $this->generatorBlockMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Block')
+            ->disableOriginalConstructor()->getMock();
+        $this->generatorContainerMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Container')
+            ->disableOriginalConstructor()->getMock();
+
+        $generatorPoolMock = $this->getMockBuilder('Magento\Framework\View\Layout\GeneratorPool')
+            ->disableOriginalConstructor()->getMock();
+        $generatorPoolMock->expects($this->any())
+            ->method('getGenerator')
+            ->will(
+                $this->returnValueMap([
+                    [\Magento\Framework\View\Layout\Generator\Block::TYPE, $this->generatorBlockMock],
+                    [\Magento\Framework\View\Layout\Generator\Container::TYPE, $this->generatorContainerMock]
+                ])
+            );
 
         $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
         $this->model = $objectManagerHelper->getObject(
             'Magento\Framework\View\Layout',
             array(
                 'structure' => $this->structureMock,
-                'blockFactory' => $this->blockFactoryMock,
                 'themeResolver' => $this->themeResolverMock,
                 'processorFactory' => $this->processorFactoryMock,
                 'appState' => $this->appStateMock,
                 'eventManager' => $this->eventManagerMock,
-                'scheduledStructure' => $this->schStructureMock
+                'scheduledStructure' => $this->schStructureMock,
+                'generatorPool' => $generatorPoolMock
             )
         );
     }
 
-    /**
-     * @expectedException \Magento\Framework\Model\Exception
-     */
-    public function testCreateBlockException()
-    {
-        $this->model->createBlock('type', 'blockname', array());
-    }
-
     public function testCreateBlockSuccess()
     {
         $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\AbstractBlock')
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
-        $this->blockFactoryMock->expects($this->once())->method('createBlock')->will($this->returnValue($blockMock));
+        $this->structureMock->expects($this->once())
+            ->method('createStructuralElement')
+            ->with('blockname', \Magento\Framework\View\Layout\Element::TYPE_BLOCK, 'type')
+            ->willReturn('blockname');
+        $this->generatorBlockMock->expects($this->once())->method('createBlock')->will($this->returnValue($blockMock));
 
         $this->model->createBlock('type', 'blockname', array());
         $this->assertInstanceOf('Magento\Framework\View\Element\AbstractBlock', $this->model->getBlock('blockname'));
@@ -177,112 +189,45 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         $this->assertSame('<some_update>123</some_update>', $this->model->getNode('some_update')->asXml());
     }
 
-    /**
-     * @param string $parentName
-     * @param string $alias
-     * @param string $name
-     * @param bool $isBlock
-     * @dataProvider getChildBlockDataProvider
-     */
-    public function testGetChildBlock($parentName, $alias, $name, $isBlock)
+    public function testGetChildBlock()
     {
+        $customBlockName = 'custom_block';
+        $customBlockParentName = 'custom_block_parent';
+        $customBlockAlias = 'custom_block_alias';
+
+        $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\Template')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $this->structureMock->expects($this->once())
             ->method('getChildId')
-            ->with($this->equalTo($parentName), $this->equalTo($alias))
-            ->will($this->returnValue($name));
+            ->with($customBlockParentName, $customBlockAlias)
+            ->willReturn($customBlockName);
+
         $this->structureMock->expects($this->once())
             ->method('hasElement')
-            ->with($this->equalTo($name))
-            ->will($this->returnValue($isBlock));
-        if ($isBlock) {
-            $this->schStructureMock->expects($this->once())
-                ->method('hasElement')
-                ->with($this->equalTo($name))
-                ->will($this->returnValue($isBlock));
-            $this->structureMock->expects($this->once())
-                ->method('getAttribute')
-                ->with($this->equalTo($name), $this->equalTo('type'))
-                ->will($this->returnValue(\Magento\Framework\View\Layout\Element::TYPE_BLOCK));
-            $this->prepareGenerateBlock($name);
-            $this->assertInstanceOf(
-                'Magento\Framework\View\Element\AbstractBlock',
-                $this->model->getChildBlock($parentName, $alias)
-            );
-        } else {
-            $this->assertFalse($this->model->getChildBlock($parentName, $alias));
-        }
-    }
+            ->with($customBlockName)
+            ->willReturn(true);
 
-    /**
-     * @return array
-     */
-    public function getChildBlockDataProvider()
-    {
-        return [
-            ['parent_name', 'alias', 'block_name', true],
-            ['parent_name', 'alias', 'block_name', false]
-        ];
+        $this->structureMock->expects($this->once())
+            ->method('getAttribute')
+            ->with($customBlockName, 'type')
+            ->willReturn(\Magento\Framework\View\Layout\Element::TYPE_BLOCK);
+
+        $this->model->setBlock($customBlockName, $blockMock);
+        $this->assertInstanceOf(
+            'Magento\Framework\View\Element\AbstractBlock',
+            $this->model->getChildBlock($customBlockParentName, $customBlockAlias)
+        );
     }
 
-    /**
-     * @param string $name
-     */
-    protected function prepareGenerateBlock($name)
+    public function testGetChildNonExistBlock()
     {
-        $blockClass = 'Magento\Framework\View\Element\Template';
-        $template = 'file.phtml';
-        $ttl = 100;
-        $xmlString = '<?xml version="1.0"?><block class="' . $blockClass . '" template="' . $template
-            . '" ttl="' . $ttl . '"></block>';
-        $xml = simplexml_load_string($xmlString, 'Magento\Framework\View\Layout\Element');
-        $elementData = [\Magento\Framework\View\Layout\Element::TYPE_BLOCK, $xml, [], []];
-        $this->schStructureMock->expects($this->once())
-            ->method('getElement')
-            ->with($this->equalTo($name))
-            ->will($this->returnValue($elementData));
-        $this->schStructureMock->expects($this->once())
-            ->method('unsetElement')
-            ->with($this->equalTo($name))
-            ->will($this->returnSelf());
-        $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\Template')
-            ->setMethods(['setType', 'setNameInLayout', 'addData', 'setLayout', 'setTemplate', 'setTtl'])
-            ->disableOriginalConstructor()
-            ->getMock();
-        $blockMock->expects($this->once())
-            ->method('setTemplate')
-            ->with($this->equalTo($template))
-            ->will($this->returnSelf());
-        $blockMock->expects($this->once())
-            ->method('setTtl')
-            ->with($this->equalTo($ttl))
-            ->will($this->returnSelf());
-        $blockMock->expects($this->once())
-            ->method('setType')
-            ->with($this->equalTo(get_class($blockMock)))
-            ->will($this->returnSelf());
-        $blockMock->expects($this->once())
-            ->method('setNameInLayout')
-            ->with($this->equalTo($name))
-            ->will($this->returnSelf());
-        $blockMock->expects($this->once())
-            ->method('addData')
-            ->with($this->equalTo([]))
-            ->will($this->returnSelf());
-        $blockMock->expects($this->once())
-            ->method('setLayout')
-            ->with($this->equalTo($this->model))
-            ->will($this->returnSelf());
-        $this->blockFactoryMock->expects($this->once())
-            ->method('createBlock')
-            ->with($this->equalTo('Magento\Framework\View\Element\Template'), $this->equalTo(['data' => []]))
-            ->will($this->returnValue($blockMock));
-        $this->eventManagerMock->expects($this->once())
-            ->method('dispatch')
-            ->with(
-                $this->equalTo('core_layout_block_create_after'),
-                $this->equalTo(['block' => $blockMock])
-            )
-            ->will($this->returnSelf());
+        $this->structureMock->expects($this->once())
+            ->method('getChildId')
+            ->with('non_exist_parent', 'non_exist_alias')
+            ->willReturn(false);
+        $this->assertFalse($this->model->getChildBlock('non_exist_parent', 'non_exist_alias'));
     }
 
     public function testSetChild()
@@ -331,7 +276,12 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\AbstractBlock')
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
-        $this->blockFactoryMock->expects($this->once())->method('createBlock')->will($this->returnValue($blockMock));
+        $this->structureMock->expects($this->once())
+            ->method('createStructuralElement')
+            ->with('block_name', \Magento\Framework\View\Layout\Element::TYPE_BLOCK, 'type')
+            ->willReturn('block_name');
+        $this->generatorBlockMock->expects($this->once())->method('createBlock')->will($this->returnValue($blockMock));
+
         $this->assertSame($blockMock, $this->model->createBlock('type', 'block_name', []));
         $this->assertSame(['value1' => $blockMock], $this->model->getChildBlocks($parentName));
     }
@@ -538,11 +488,6 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         $this->assertSame($this->model, $this->model->removeOutputElement('name'));
     }
 
-    public function testGetBlockFactory()
-    {
-        $this->assertSame($this->blockFactoryMock, $this->model->getBlockFactory());
-    }
-
     public function testIsPrivate()
     {
         $this->assertFalse($this->model->isPrivate());
@@ -550,15 +495,6 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
         $this->assertTrue($this->model->isPrivate());
     }
 
-    /**
-     * @expectedException \Magento\Framework\Model\Exception
-     * @expectedExceptionMessage Invalid block type
-     */
-    public function testGetBlockSingletonException()
-    {
-        $this->model->getBlockSingleton(false);
-    }
-
     /**
      * @param array $type
      * @param array $blockInstance
@@ -567,12 +503,10 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
     public function testGetBlockSingleton($type, $blockInstance, $isAbstract)
     {
         $blockMock = $this->getMock($blockInstance, [], [], '', false);
-        $this->blockFactoryMock->expects($this->once())
-            ->method('createBlock')
-            ->with($this->equalTo($type))
-            ->will($this->returnValue($blockMock));
+        $this->generatorBlockMock->expects($this->once())->method('createBlock')->will($this->returnValue($blockMock));
+
         if ($isAbstract) {
-            $blockMock->expects($this->once())
+            $blockMock->expects($this->any())
                 ->method('setLayout')
                 ->with($this->equalTo($this->model))
                 ->will($this->returnSelf());
@@ -593,11 +527,6 @@ class LayoutTest extends \PHPUnit_Framework_TestCase
                 'Magento\Framework\View\Element\Template',
                 true,
             ],
-            [
-                'other_type',
-                'stdClass',
-                false,
-            ],
         ];
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/BuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/BuilderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..489c51deb1d034646a6f983294097c9ea811d11f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/BuilderTest.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Page;
+
+use Magento\Framework;
+
+/**
+ * Class BuilderTest
+ * @covers \Magento\Framework\View\Page\Builder
+ */
+class BuilderTest extends \Magento\Framework\View\Layout\BuilderTest
+{
+    const CLASS_NAME = 'Magento\Framework\View\Page\Builder';
+
+    /**
+     * @param array $arguments
+     * @return \Magento\Framework\View\Page\Builder
+     */
+    protected function getBuilder($arguments)
+    {
+        $arguments['pageConfig'] = $this->getMock('Magento\Framework\View\Page\Config', [], [], '', false);
+        $arguments['pageConfig']->expects($this->once())->method('setBuilder');
+        $arguments['pageConfig']->expects($this->once())->method('getPageLayout')
+            ->will($this->returnValue('test_layout'));
+
+        $readerContext = $this->getMock('Magento\Framework\View\Layout\Reader\Context', [], [], '', false);
+
+        /** @var \PHPUnit_Framework_MockObject_MockObject $layout */
+        $layout =& $arguments['layout'];
+        $layout->expects($this->once())->method('getReaderContext')->will($this->returnValue($readerContext));
+
+        $arguments['pageLayoutReader'] = $this->getMock('Magento\Framework\View\Page\Layout\Reader', [], [], '', false);
+        $arguments['pageLayoutReader']->expects($this->once())->method('read')->with($readerContext, 'test_layout');
+
+        return parent::getBuilder($arguments);
+    }
+
+    /**
+     * @return array
+     */
+    protected function getLayoutMockMethods()
+    {
+        $result = parent::getLayoutMockMethods();
+        $result[] = 'getReaderContext';
+        return $result;
+    }
+} 
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/BodyTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/BodyTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6478848d6c1369061e60a2f6259a14d25c999458
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/BodyTest.php
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Page\Config\Generator;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+/**
+ * Test for page config generator model
+ */
+class BodyTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Body
+     */
+    protected $bodyGenerator;
+
+    /**
+     * @var \Magento\Framework\View\Page\Config|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $pageConfigMock;
+
+    protected function setUp()
+    {
+        $this->pageConfigMock = $this->getMockBuilder('Magento\Framework\View\Page\Config')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $objectManagerHelper = new ObjectManagerHelper($this);
+        $this->bodyGenerator = $objectManagerHelper->getObject(
+            'Magento\Framework\View\Page\Config\Generator\Body',
+            [
+                'pageConfig' => $this->pageConfigMock,
+            ]
+        );
+    }
+
+    public function testProcess()
+    {
+        $generatorContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $structureMock = $this->getMockBuilder('Magento\Framework\View\Page\Config\Structure')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $readerContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $readerContextMock->expects($this->any())
+            ->method('getPageConfigStructure')
+            ->willReturn($structureMock);
+
+        $bodyClasses = ['class_1', 'class_2'];
+        $structureMock->expects($this->once())
+            ->method('getBodyClasses')
+            ->will($this->returnValue($bodyClasses));
+        $this->pageConfigMock->expects($this->exactly(2))
+            ->method('addBodyClass')
+            ->withConsecutive(['class_1'], ['class_2']);
+
+        $this->assertEquals(
+            $this->bodyGenerator,
+            $this->bodyGenerator->process($readerContextMock, $generatorContextMock)
+        );
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/GeneratorTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/HeadTest.php
similarity index 71%
rename from dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/GeneratorTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/HeadTest.php
index 6a25bef81a5808e0e88fe5487932447977ae1ebf..51410a3d333440a054cc91894a62b88c72438188 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/GeneratorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/HeadTest.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\View\Page\Config;
+namespace Magento\Framework\View\Page\Config\Generator;
 
 use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
 use Magento\Framework\View\Page\Config as PageConfig;
@@ -30,17 +30,12 @@ use Magento\Framework\View\Page\Config as PageConfig;
 /**
  * Test for page config generator model
  */
-class GeneratorTest extends \PHPUnit_Framework_TestCase
+class HeadTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var Generator
+     * @var Head
      */
-    protected $generator;
-
-    /**
-     * @var \Magento\Framework\View\Page\Config\Structure|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $structureMock;
+    protected $headGenerator;
 
     /**
      * @var \Magento\Framework\View\Page\Config|\PHPUnit_Framework_MockObject_MockObject
@@ -49,18 +44,14 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->structureMock = $this->getMockBuilder('Magento\Framework\View\Page\Config\Structure')
-            ->disableOriginalConstructor()
-            ->getMock();
         $this->pageConfigMock = $this->getMockBuilder('Magento\Framework\View\Page\Config')
             ->disableOriginalConstructor()
             ->getMock();
 
         $objectManagerHelper = new ObjectManagerHelper($this);
-        $this->generator = $objectManagerHelper->getObject(
-            'Magento\Framework\View\Page\Config\Generator',
+        $this->headGenerator = $objectManagerHelper->getObject(
+            'Magento\Framework\View\Page\Config\Generator\Head',
             [
-                'structure' => $this->structureMock,
                 'pageConfig' => $this->pageConfigMock,
             ]
         );
@@ -68,8 +59,23 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testProcess()
     {
-        $this->structureMock->expects($this->once())->method('processRemoveAssets');
-        $this->structureMock->expects($this->once())->method('processRemoveElementAttributes');
+        $generatorContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Generator\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $structureMock = $this->getMockBuilder('Magento\Framework\View\Page\Config\Structure')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $readerContextMock = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $readerContextMock->expects($this->any())
+            ->method('getPageConfigStructure')
+            ->willReturn($structureMock);
+
+        $structureMock->expects($this->once())->method('processRemoveAssets');
+        $structureMock->expects($this->once())->method('processRemoveElementAttributes');
 
         $assets = [
             'remoteName' => ['src' => 'file-url', 'src_type' => 'url', 'media'=> "all"],
@@ -77,16 +83,16 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
         ];
         $this->pageConfigMock->expects($this->once())
             ->method('addRemotePageAsset')
-            ->with('remoteName', Generator::VIRTUAL_CONTENT_TYPE_LINK, ['attributes' => ['media'=> 'all']]);
+            ->with('remoteName', Head::VIRTUAL_CONTENT_TYPE_LINK, ['attributes' => ['media'=> 'all']]);
         $this->pageConfigMock->expects($this->once())
             ->method('addPageAsset')
             ->with('name', ['attributes' => ['media'=> 'print'], 'ie_condition' => 'lt IE 7']);
-        $this->structureMock->expects($this->once())
+        $structureMock->expects($this->once())
             ->method('getAssets')
             ->will($this->returnValue($assets));
 
         $title = 'Page title';
-        $this->structureMock->expects($this->once())
+        $structureMock->expects($this->once())
             ->method('getTitle')
             ->will($this->returnValue($title));
         $this->pageConfigMock->expects($this->once())
@@ -94,7 +100,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
             ->with($title);
 
         $metadata = ['name1' => 'content1', 'name2' => 'content2'];
-        $this->structureMock->expects($this->once())
+        $structureMock->expects($this->once())
             ->method('getMetadata')
             ->will($this->returnValue($metadata));
         $this->pageConfigMock->expects($this->exactly(2))
@@ -110,7 +116,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
                 'html_attr_1' => 'html_attr_1',
             ]
         ];
-        $this->structureMock->expects($this->once())
+        $structureMock->expects($this->once())
             ->method('getElementAttributes')
             ->will($this->returnValue($elementAttributes));
         $this->pageConfigMock->expects($this->exactly(3))
@@ -121,14 +127,9 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
                 [PageConfig::ELEMENT_TYPE_HTML, 'html_attr_1', 'html_attr_1']
             );
 
-        $bodyClasses = ['class_1', 'class_2'];
-        $this->structureMock->expects($this->once())
-            ->method('getBodyClasses')
-            ->will($this->returnValue($bodyClasses));
-        $this->pageConfigMock->expects($this->exactly(2))
-            ->method('addBodyClass')
-            ->withConsecutive(['class_1'], ['class_2']);
-
-        $this->assertEquals($this->generator, $this->generator->process());
+        $this->assertEquals(
+            $this->headGenerator,
+            $this->headGenerator->process($readerContextMock, $generatorContextMock)
+        );
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/ReaderTest.php
deleted file mode 100644
index a68bf44fdaf5cdcc8a130bee1a75576d9990cd77..0000000000000000000000000000000000000000
--- a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/ReaderTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Framework\View\Page\Config;
-
-use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
-use Magento\Framework\View\Layout\Element as LayoutElement;
-use Magento\Framework\View\Page\Config as PageConfig;
-
-/**
- * Test for page config reader model
- */
-class ReaderTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var Reader
-     */
-    protected $reader;
-
-    /**
-     * @var \Magento\Framework\View\Page\Config\Structure|\PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $structureMock;
-
-    /** @var ObjectManagerHelper */
-    protected $objectManagerHelper;
-
-    protected function setUp()
-    {
-        $this->structureMock = $this->getMockBuilder('Magento\Framework\View\Page\Config\Structure')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->objectManagerHelper = new ObjectManagerHelper($this);
-        $this->reader = $this->objectManagerHelper->getObject(
-            'Magento\Framework\View\Page\Config\Reader',
-            [
-                'structure' => $this->structureMock
-            ]
-        );
-    }
-
-    public function testReadHead()
-    {
-        $this->structureMock->expects($this->once())
-            ->method('setTitle')
-            ->with('Test title');
-
-        $this->structureMock->expects($this->once())
-            ->method('setMetaData')
-            ->with('meta_name', 'meta_content');
-
-        $this->structureMock->expects($this->exactly(3))
-            ->method('addAssets')
-            ->withConsecutive(
-                array('path/file.css', ['src' => 'path/file.css', "media" => "all"]),
-                array(
-                    'mage/jquery-no-conflict.js',
-                    ['src' => 'mage/jquery-no-conflict.js', "ie_condition" => "lt IE 7"]
-                ),
-                array('path/file.js', ['src' => 'path/file.js', "defer" => "defer"])
-            );
-
-        $this->structureMock->expects($this->once())
-            ->method('removeAssets')
-            ->with('path/remove/file.css');
-
-        $this->structureMock->expects($this->once())
-            ->method('setElementAttribute')
-            ->with(PageConfig::ELEMENT_TYPE_HEAD, 'head_attribute_name', 'head_attribute_value');
-
-        $xmlElement = new LayoutElement(file_get_contents(__DIR__ . '/_files/template_head.xml'));
-        $this->assertEquals($this->reader, $this->reader->readHead(current($xmlElement->children())));
-    }
-
-    public function testReadHtml()
-    {
-        $this->structureMock->expects($this->once())
-            ->method('setElementAttribute')
-            ->with(PageConfig::ELEMENT_TYPE_HTML, 'html_attribute_name', 'html_attribute_value');
-
-        $xmlElement = new LayoutElement(file_get_contents(__DIR__ . '/_files/template_html.xml'));
-        $this->assertEquals($this->reader, $this->reader->readHtml(current($xmlElement->children())));
-    }
-
-    public function testReadBody()
-    {
-        $this->structureMock->expects($this->once())
-            ->method('setElementAttribute')
-            ->with(PageConfig::ELEMENT_TYPE_BODY, 'body_attribute_name', 'body_attribute_value');
-
-        $xmlElement = new LayoutElement(file_get_contents(__DIR__ . '/_files/template_body.xml'));
-        $this->assertEquals($this->reader, $this->reader->readBody(current($xmlElement->children())));
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/RendererTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/RendererTest.php
index 8f2938da13b44b6518e20def041bca98cafe5340..fdb5d9277fcfb80fbba9a3e77f1f3eba9344f073 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/RendererTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/RendererTest.php
@@ -246,13 +246,13 @@ class RendererTest extends \PHPUnit_Framework_TestCase
             ->withConsecutive(
                 [
                     $filePath,
-                    Generator::VIRTUAL_CONTENT_TYPE_LINK,
+                    Generator\Head::VIRTUAL_CONTENT_TYPE_LINK,
                     ['attributes' => ['rel' => 'icon', 'type' => 'image/x-icon']],
                     'icon'
                 ],
                 [
                     $filePath,
-                    Generator::VIRTUAL_CONTENT_TYPE_LINK,
+                    Generator\Head::VIRTUAL_CONTENT_TYPE_LINK,
                     ['attributes' => ['rel' => 'shortcut icon', 'type' => 'image/x-icon']],
                     'shortcut-icon'
                 ]
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/ConfigTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/ConfigTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..95461132ea5af1472d024702962f5ed5f4bdef24
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/ConfigTest.php
@@ -0,0 +1,557 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Page\Config
+ */
+namespace Magento\Framework\View\Page;
+
+class ConfigTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\View\Page\Config
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\View\Asset\Repository|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $assetRepo;
+
+    /**
+     * @var \Magento\Framework\View\Asset\GroupedCollection|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $pageAssets;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var \Magento\Framework\View\Page\FaviconInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $favicon;
+
+    /**
+     * @var \Magento\Framework\View\Layout\BuilderInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $builder;
+
+    /**
+     * @var \Magento\Framework\View\Asset\File|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $asset;
+
+    /**
+     * @var \Magento\Framework\View\Asset\Remote|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $remoteAsset;
+
+    public function setUp()
+    {
+        $this->assetRepo = $this->getMock('Magento\Framework\View\Asset\Repository', [], [], '', false);
+        $this->pageAssets = $this->getMock('Magento\Framework\View\Asset\GroupedCollection', [], [], '', false);
+        $this->scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface', [], [], '', false);
+        $this->favicon = $this->getMock('Magento\Framework\View\Page\FaviconInterface', [], [], '', false);
+        $this->builder = $this->getMock('Magento\Framework\View\Layout\BuilderInterface', [], [], '', false);
+        $this->asset = $this->getMock('Magento\Framework\View\Asset\File', [], [], '', false);
+        $this->remoteAsset = $this->getMock('\Magento\Framework\View\Asset\Remote', [], [], '', false);
+        $this->model = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject(
+                'Magento\Framework\View\Page\Config',
+                [
+                    'assetRepo' => $this->assetRepo,
+                    'pageAssets' => $this->pageAssets,
+                    'scopeConfig' => $this->scopeConfig,
+                    'favicon' => $this->favicon
+                ]
+            );
+    }
+
+    public function testSetBuilder()
+    {
+        $this->assertInstanceOf(
+            'Magento\Framework\View\Page\Config',
+            $this->model->setBuilder($this->builder)
+        );
+    }
+
+    public function testBuild()
+    {
+        $this->model->setBuilder($this->builder);
+        $this->builder->expects($this->once())->method('build')->will(
+            $this->returnValue('Magento\Framework\View\LayoutInterface')
+        );
+        $this->model->publicBuild();
+    }
+
+    /**
+     * @param string|[] $title
+     * @param string $expected
+     * @dataProvider setTitleDataProvider
+     */
+    public function testSetTitle($title, $expected)
+    {
+        $this->scopeConfig->expects($this->at(0))->method('getValue')->with('design/head/title_prefix', 'store');
+        $this->scopeConfig->expects($this->at(1))->method('getValue')->with('design/head/title_suffix', 'store');
+        $this->assertInstanceOf('Magento\Framework\View\Page\Config', $this->model->setTitle($title));
+        $this->assertEquals($expected, $this->model->getTitle());
+    }
+
+    public function setTitleDataProvider()
+    {
+        return [
+            [
+                'test_title',
+                'test_title'
+            ],
+            [
+                [
+                    'test',
+                    '_',
+                    'title'
+                ],
+                'test / _ / title'
+            ]
+        ];
+    }
+
+    /**
+     * @param string $title
+     * @param string $expected
+     *
+     * @dataProvider getTitleDataProvider
+     */
+    public function testGetTitle($title, $expected)
+    {
+        $this->model->setTitle($title);
+        $this->assertEquals($expected, $this->model->getTitle());
+    }
+
+    public function getTitleDataProvider()
+    {
+        return [
+            [
+                'test_title',
+                'test_title'
+            ],
+            [
+                '<title>test</title>',
+                '&lt;title&gt;test&lt;/title&gt;'
+            ]
+        ];
+    }
+
+    public function testGetTitleEmpty()
+    {
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/default_title', 'store')
+            ->will($this->returnValue('default_title'));
+        $this->assertEquals('default_title', $this->model->getTitle());
+    }
+
+    /**
+     * @param string|[] $title
+     * @param string $expected
+     *
+     * @dataProvider getShortTitleDataProvider
+     */
+    public function testGetShortTitle($title, $expected)
+    {
+        $this->model->setTitle($title);
+        $this->assertEquals($expected, $this->model->getShortTitle());
+    }
+
+    public function getShortTitleDataProvider()
+    {
+        return [
+            [
+                [
+                    'test',
+                    'title'
+                ],
+                'test'
+            ],
+            [
+                'test_title',
+                'test_title'
+            ]
+        ];
+    }
+
+    public function testMetadata()
+    {
+        $expectedMetadata = [
+            'charset' => null,
+            'media_type' => null,
+            'content_type' => null,
+            'description' => null,
+            'keywords' => null,
+            'robots' => null,
+            'name' => 'test_value'
+        ];
+        $this->model->setMetadata('name', 'test_value');
+        $this->assertEquals($expectedMetadata, $this->model->getMetadata());
+    }
+
+    public function testContentType()
+    {
+        $contentType = 'test_content_type';
+        $this->model->setContentType($contentType);
+        $this->assertEquals($contentType, $this->model->getContentType());
+    }
+
+    public function testContentTypeEmpty()
+    {
+        $expectedData = 'default_media_type; charset=default_charset';
+        $this->scopeConfig->expects($this->at(0))->method('getValue')->with('design/head/default_media_type', 'store')
+            ->will($this->returnValue('default_media_type'));
+        $this->scopeConfig->expects($this->at(1))->method('getValue')->with('design/head/default_charset', 'store')
+            ->will($this->returnValue('default_charset'));
+        $this->assertEquals($expectedData, $this->model->getContentType());
+    }
+
+    public function testMediaType()
+    {
+        $mediaType = 'test_media_type';
+        $this->model->setMediaType($mediaType);
+        $this->assertEquals($mediaType, $this->model->getMediaType());
+    }
+
+    public function testMediaTypeEmpty()
+    {
+        $expectedData = 'default_media_type';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/default_media_type', 'store')
+            ->will($this->returnValue('default_media_type'));
+        $this->assertEquals($expectedData, $this->model->getMediaType());
+    }
+
+    public function testCharset()
+    {
+        $charset = 'test_charset';
+        $this->model->setCharset($charset);
+        $this->assertEquals($charset, $this->model->getCharset());
+    }
+
+    public function testCharsetEmpty()
+    {
+        $expectedData = 'default_charset';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/default_charset', 'store')
+            ->will($this->returnValue('default_charset'));
+        $this->assertEquals($expectedData, $this->model->getCharset());
+    }
+
+    public function testDescription()
+    {
+        $description = 'test_description';
+        $this->model->setDescription($description);
+        $this->assertEquals($description, $this->model->getDescription());
+    }
+
+    public function testDescriptionEmpty()
+    {
+        $expectedData = 'default_description';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/default_description', 'store')
+            ->will($this->returnValue('default_description'));
+        $this->assertEquals($expectedData, $this->model->getDescription());
+    }
+
+    public function testKeywords()
+    {
+        $keywords = 'test_keywords';
+        $this->model->setKeywords($keywords);
+        $this->assertEquals($keywords, $this->model->getKeywords());
+    }
+
+    public function testKeywordsEmpty()
+    {
+        $expectedData = 'default_keywords';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/default_keywords', 'store')
+            ->will($this->returnValue('default_keywords'));
+        $this->assertEquals($expectedData, $this->model->getKeywords());
+    }
+
+    public function testRobots()
+    {
+        $robots = 'test_robots';
+        $this->model->setRobots($robots);
+        $this->assertEquals($robots, $this->model->getRobots());
+    }
+
+    public function testRobotsEmpty()
+    {
+        $expectedData = 'default_robots';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with(
+            'design/search_engine_robots/default_robots',
+            'store'
+        )
+            ->will($this->returnValue('default_robots'));
+        $this->assertEquals($expectedData, $this->model->getRobots());
+    }
+
+    public function testGetAssetCollection()
+    {
+        $this->assertInstanceOf('Magento\Framework\View\Asset\GroupedCollection', $this->model->getAssetCollection());
+    }
+
+    /**
+     * @param string $file
+     * @param array $properties
+     * @param string|null $name
+     * @param string $expectedName
+     *
+     * @dataProvider pageAssetDataProvider
+     */
+    public function testAddPageAsset($file, $properties, $name, $expectedName)
+    {
+        $this->assetRepo->expects($this->once())->method('createAsset')->with($file)->will(
+            $this->returnValue($this->asset)
+        );
+        $this->pageAssets->expects($this->once())->method('add')->with($expectedName, $this->asset, $properties);
+        $this->assertInstanceOf(
+            'Magento\Framework\View\Page\Config',
+            $this->model->addPageAsset($file, $properties, $name)
+        );
+    }
+
+    public function pageAssetDataProvider()
+    {
+        return [
+            [
+                'test.php',
+                ['one', 'two', 3],
+                'test_name',
+                'test_name'
+            ],
+            [
+                'filename',
+                [],
+                null,
+                'filename'
+            ]
+        ];
+    }
+
+    /**
+     * @param string $url
+     * @param string $contentType
+     * @param array $properties
+     * @param string|null $name
+     * @param string $expectedName
+     *
+     * @dataProvider remotePageAssetDataProvider
+     */
+    public function testAddRemotePageAsset($url, $contentType, $properties, $name, $expectedName)
+    {
+        $this->assetRepo->expects($this->once())->method('createRemoteAsset')->with($url, $contentType)->will(
+            $this->returnValue($this->remoteAsset)
+        );
+        $this->pageAssets->expects($this->once())->method('add')->with($expectedName, $this->remoteAsset, $properties);
+        $this->assertInstanceOf(
+            'Magento\Framework\View\Page\Config',
+            $this->model->addRemotePageAsset($url, $contentType, $properties, $name)
+        );
+    }
+
+    public function remotePageAssetDataProvider()
+    {
+        return [
+            [
+                'http://test.com',
+                '<body><context>some content</context></body>',
+                ['one', 'two', 3],
+                'test_name',
+                'test_name'
+            ],
+            [
+                'http://test.com',
+                '',
+                [],
+                null,
+                'http://test.com'
+            ]
+        ];
+    }
+
+    public function testAddRss()
+    {
+        $title = 'test title';
+        $href = 'http://test.com';
+        $expected = ['attributes' => 'rel="alternate" type="application/rss+xml" title="test title"'];
+        $this->assetRepo->expects($this->once())->method('createRemoteAsset')->with($href, 'unknown')->will(
+            $this->returnValue($this->remoteAsset)
+        );
+        $this->pageAssets->expects($this->once())->method('add')->with(
+            'link/http://test.com',
+            $this->remoteAsset,
+            $expected
+        );
+        $this->assertInstanceOf('Magento\Framework\View\Page\Config', $this->model->addRss($title, $href));
+    }
+
+    public function testAddBodyClass()
+    {
+        $className = 'test class';
+        $this->assertInstanceOf('Magento\Framework\View\Page\Config', $this->model->addBodyClass($className));
+        $this->assertEquals('test-class', $this->model->getElementAttribute('body', 'class'));
+    }
+
+    /**
+     * @param string $elementType
+     * @param string $attribute
+     * @param string $value
+     *
+     * @dataProvider elementAttributeDataProvider
+     */
+    public function testElementAttribute($elementType, $attribute, $value)
+    {
+        $this->model->setElementAttribute($elementType, $attribute, $value);
+        $this->assertEquals($value, $this->model->getElementAttribute($elementType, $attribute));
+    }
+
+    public function elementAttributeDataProvider()
+    {
+        return [
+            [
+                'head',
+                'class',
+                'test'
+            ],
+            [
+                'html',
+                'context',
+                'value'
+            ],
+            [
+                'body',
+                'class',
+                'value'
+            ]
+        ];
+    }
+
+    /**
+     * @param string $elementType
+     * @param string $attribute
+     * @param string $value
+     *
+     * @dataProvider elementAttributeExceptionDataProvider
+     */
+    public function testElementAttributeException($elementType, $attribute, $value)
+    {
+        $this->setExpectedException('\Magento\Framework\Exception', $elementType . " isn't allowed");
+        $this->model->setElementAttribute($elementType, $attribute, $value);
+    }
+
+    public function elementAttributeExceptionDataProvider()
+    {
+        return [
+            [
+                'test',
+                'class',
+                'test'
+            ],
+            [
+                '',
+                '',
+                ''
+            ],
+            [
+                null,
+                null,
+                null
+            ]
+        ];
+    }
+
+    /**
+     * @param string $elementType
+     * @param string $attribute
+     * @param string $value
+     *
+     * @dataProvider elementAttributeDataProvider
+     */
+    public function testElementAttributes($elementType, $attribute, $value)
+    {
+        $this->model->setElementAttribute($elementType, $attribute, $value);
+        $this->assertEquals([$attribute => $value], $this->model->getElementAttributes($elementType));
+    }
+
+    /**
+     * @param string $handle
+     *
+     * @dataProvider pageLayoutDataProvider
+     */
+    public function testPageLayout($handle)
+    {
+        $this->model->setPageLayout($handle);
+        $this->assertEquals($handle, $this->model->getPageLayout());
+    }
+
+    public function pageLayoutDataProvider()
+    {
+        return [
+            [
+                'test'
+            ],
+            [
+                ''
+            ],
+            [
+                null
+            ],
+            [
+                [
+                    'test'
+                ]
+            ]
+        ];
+    }
+
+    public function testGetFaviconFile()
+    {
+        $expected = 'test';
+        $this->favicon->expects($this->once())->method('getFaviconFile')->will($this->returnValue($expected));
+        $this->assertEquals($expected, $this->model->getFaviconFile());
+    }
+
+    public function testGetDefaultFavicon()
+    {
+        $this->favicon->expects($this->once())->method('getDefaultFavicon');
+        $this->model->getDefaultFavicon();
+    }
+
+    public function testGetIncludes()
+    {
+        $xml = '
+            <script type="text/javascript">
+                Fieldset.addToPrefix(1);
+            </script>
+            ';
+        $this->scopeConfig->expects($this->once())->method('getValue')->with('design/head/includes', 'store')->will(
+            $this->returnValue($xml)
+        );
+        $this->assertEquals($xml, $this->model->getIncludes());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Layout/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Layout/ReaderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e5b3b94f91321ffc1f3b4478a1d175ca1c2c6233
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Layout/ReaderTest.php
@@ -0,0 +1,141 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test class for \Magento\Framework\View\Page\Layout\Reader
+ */
+namespace Magento\Framework\View\Page\Layout;
+
+class ReaderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\View\Page\Layout\Reader
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\View\Design\Theme\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $themeResolver;
+
+    /**
+     * @var \Magento\Framework\View\Design\ThemeInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $themeInterface;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ProcessorFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $processorFactory;
+
+    /**
+     * @var \Magento\Framework\View\File\CollectorInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $pageLayoutFileSource;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerContext;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $readerPool;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $processorInterface;
+
+    public function setUp()
+    {
+        $this->processorInterface = $this->getMock(
+            'Magento\Framework\View\Layout\ProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->themeInterface = $this->getMock('Magento\Framework\View\Design\ThemeInterface', [], [], '', false);
+        $this->processorFactory = $this->getMock(
+            'Magento\Framework\View\Layout\ProcessorFactory',
+            ['create'],
+            [],
+            '',
+            false
+        );
+        $this->themeResolver = $this->getMock(
+            'Magento\Framework\View\Design\Theme\ResolverInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->pageLayoutFileSource = $this->getMockBuilder('Magento\Framework\View\File\CollectorInterface')
+            ->getMock();
+        $this->readerPool = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Pool')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->readerContext = $this->getMockBuilder('Magento\Framework\View\Layout\Reader\Context')
+            ->setMethods(['getScheduledStructure'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject(
+                'Magento\Framework\View\Page\Layout\Reader',
+                [
+                    'themeResolver' => $this->themeResolver,
+                    'processorFactory' => $this->processorFactory,
+                    'pageLayoutFileSource' => $this->pageLayoutFileSource,
+                    'reader' => $this->readerPool
+                ]
+            );
+    }
+
+    public function testRead()
+    {
+        $data = 'test_string';
+        $xml = '<body>
+                    <attribute name="body_attribute_name" value="body_attribute_value" />
+                </body>';
+        $this->processorInterface->expects($this->any())->method('load')->with($data)->will(
+            $this->returnValue($this->processorInterface)
+        );
+        $this->themeResolver->expects($this->atLeastOnce())->method('get')->will(
+            $this->returnValue($this->themeInterface)
+        );
+        $createData = [
+            'theme' => $this->themeInterface,
+            'fileSource' => $this->pageLayoutFileSource,
+            'cacheSuffix' => 'page_layout'
+        ];
+        $this->processorFactory->expects($this->once())->method('create')
+            ->with($createData)->will($this->returnValue($this->processorInterface));
+        $element = new \Magento\Framework\View\Layout\Element($xml);
+        $this->processorInterface->expects($this->once())->method('asSimplexml')->will($this->returnValue($element));
+        $this->readerPool->expects($this->once())->method('readStructure')->with($this->readerContext, $element);
+        $this->model->read($this->readerContext, $data);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Result/LayoutTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Result/LayoutTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..16c0813eba0ccded4b53278b88aa81b9f74b3b69
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Result/LayoutTest.php
@@ -0,0 +1,202 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Result;
+
+/**
+ * Class LayoutTest
+ * @covers \Magento\Framework\View\Result\Layout
+ */
+class LayoutTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @covers \Magento\Framework\View\Result\Layout::getLayout()
+     */
+    public function testGetLayout()
+    {
+        /** @var \Magento\Framework\View\LayoutInterface $layout */
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $this->assertSame($layout, $resultLayout->getLayout());
+    }
+
+    /**
+     * @covers \Magento\Framework\View\Result\Layout::initLayout()
+     */
+    public function testInitLayout()
+    {
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout');
+        $this->assertSame($resultLayout, $resultLayout->initLayout());
+    }
+
+    public function testGetDefaultLayoutHandle()
+    {
+        /** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject $request */
+        $request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+        $request->expects($this->once())->method('getFullActionName')
+            ->will($this->returnValue('Module_Controller_Action'));
+
+        /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject $request */
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getRequest')->will($this->returnValue($request));
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $this->assertEquals('module_controller_action', $resultLayout->getDefaultLayoutHandle());
+    }
+
+    public function testAddHandle()
+    {
+        $processor = $this->getMock('Magento\Framework\View\Layout\ProcessorInterface', [], [], '', false);
+        $processor->expects($this->once())->method('addHandle')->with('module_controller_action');
+
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $layout */
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+        $layout->expects($this->once())->method('getUpdate')->will($this->returnValue($processor));
+
+        /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject $request */
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $this->assertSame($resultLayout, $resultLayout->addHandle('module_controller_action'));
+    }
+
+    public function testAddUpdate()
+    {
+        $processor = $this->getMock('Magento\Framework\View\Layout\ProcessorInterface', [], [], '', false);
+        $processor->expects($this->once())->method('addUpdate')->with('handle_name');
+
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $layout */
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+        $layout->expects($this->once())->method('getUpdate')->will($this->returnValue($processor));
+
+        /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject $request */
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $resultLayout->addUpdate('handle_name');
+    }
+
+    /**
+     * @param int|string $httpCode
+     * @param string $headerName
+     * @param string $headerValue
+     * @param bool $replaceHeader
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setHttpResponseCodeCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $setHeaderCount
+     * @dataProvider providerRenderResult
+     */
+    public function testRenderResult(
+        $httpCode, $headerName, $headerValue, $replaceHeader, $setHttpResponseCodeCount, $setHeaderCount
+    ) {
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $layout */
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+        $layout->expects($this->once())->method('getOutput')->will($this->returnValue('output'));
+
+        /** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject $request */
+        $request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+        $request->expects($this->once())->method('getFullActionName')
+            ->will($this->returnValue('Module_Controller_Action'));
+
+        $eventManager = $this->getMock('Magento\Framework\Event\ManagerInterface', [], [], '', false);
+        $eventManager->expects($this->exactly(2))->method('dispatch')->withConsecutive(
+            ['controller_action_layout_render_before'],
+            ['controller_action_layout_render_before_Module_Controller_Action']
+        );
+
+        /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject $request */
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+        $context->expects($this->once())->method('getRequest')->will($this->returnValue($request));
+        $context->expects($this->once())->method('getEventManager')->will($this->returnValue($eventManager));
+
+        /** @var \Magento\Framework\App\Response\Http|\PHPUnit_Framework_MockObject_MockObject $response */
+        $response = $this->getMock('Magento\Framework\App\Response\Http', [], [], '', false);
+        $response->expects($setHttpResponseCodeCount)->method('setHttpResponseCode')->with($httpCode);
+        $response->expects($setHeaderCount)->method('setHeader')->with($headerName, $headerValue, $replaceHeader);
+        $response->expects($this->once())->method('appendBody')->with('output');
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $resultLayout->setHttpResponseCode($httpCode);
+
+        if ($headerName && $headerValue) {
+            $resultLayout->setHeader($headerName, $headerValue, $replaceHeader);
+        }
+
+        $resultLayout->renderResult($response);
+    }
+
+    /**
+     * @return array
+     */
+    public function providerRenderResult()
+    {
+        return [
+            [200, 'content-type', 'text/html', true, $this->once(), $this->once()],
+            [0, '', '', false, $this->never(), $this->never()]
+        ];
+    }
+
+    public function testAddDefaultHandle()
+    {
+        $processor = $this->getMock('Magento\Framework\View\Layout\ProcessorInterface', [], [], '', false);
+        $processor->expects($this->once())->method('addHandle')->with('module_controller_action');
+
+        /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject $layout */
+        $layout = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+        $layout->expects($this->once())->method('getUpdate')->will($this->returnValue($processor));
+
+        /** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject $request */
+        $request = $this->getMock('Magento\Framework\App\Request\Http', [], [], '', false);
+        $request->expects($this->once())->method('getFullActionName')
+            ->will($this->returnValue('Module_Controller_Action'));
+
+        /** @var \Magento\Framework\View\Element\Template\Context|\PHPUnit_Framework_MockObject_MockObject $request */
+        $context = $this->getMock('Magento\Framework\View\Element\Template\Context', [], [], '', false);
+        $context->expects($this->once())->method('getRequest')->will($this->returnValue($request));
+        $context->expects($this->once())->method('getLayout')->will($this->returnValue($layout));
+
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = (new \Magento\TestFramework\Helper\ObjectManager($this))
+            ->getObject('Magento\Framework\View\Result\Layout', ['context' => $context]);
+        $this->assertSame($resultLayout, $resultLayout->addDefaultHandle());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..45ca1f17ab3fa8721fa2c0a9452c7fd5a0e2b6f7
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageFactoryTest.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Result;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class PageFactoryTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Framework\View\Result\PageFactory */
+    protected $pageFactory;
+
+    /** @var \Magento\Framework\View\Result\Page|\PHPUnit_Framework_MockObject_MockObject */
+    protected $page;
+
+    /** @var ObjectManagerHelper */
+    protected $objectManagerHelper;
+
+    /** @var \Magento\Framework\ObjectManager|\PHPUnit_Framework_MockObject_MockObject */
+    protected $objectManagerMock;
+
+    protected function setUp()
+    {
+        $this->objectManagerMock = $this->getMock('Magento\Framework\ObjectManager', [], [], '', false);
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+        $this->pageFactory = $this->objectManagerHelper->getObject(
+            'Magento\Framework\View\Result\PageFactory',
+            [
+                'objectManager' => $this->objectManagerMock
+            ]
+        );
+        $this->page = $this->getMockBuilder('Magento\Framework\View\Result\Page')
+            ->disableOriginalConstructor()
+            ->getMock();
+    }
+
+    public function testCreate()
+    {
+        $this->objectManagerMock->expects($this->once())->method('create')->with('Magento\Framework\View\Result\Page')
+            ->will($this->returnValue($this->page));
+        $this->assertSame($this->page, $this->pageFactory->create());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageTest.php b/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageTest.php
index aa61951f563a3c68768371f17e4ce0cecbc44c8e..1e1ce470845d6ef6d32824e4b753c3ee89c14b32 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/View/Result/PageTest.php
@@ -70,12 +70,27 @@ class PageTest extends \PHPUnit_Framework_TestCase
      */
     protected $pageConfigRenderer;
 
+    /**
+     * @var \Magento\Framework\View\FileSystem|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $viewFileSystem;
+
+    /**
+     * @var \Magento\Framework\View\LayoutFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $layoutFactory;
+
     protected function setUp()
     {
         $this->layout = $this->getMockBuilder('Magento\Framework\View\Layout')
+            ->setMethods(['addHandle', 'getUpdate', 'isLayoutDefined'])
             ->disableOriginalConstructor()
             ->getMock();
 
+        $this->layoutFactory = $this->getMockBuilder('Magento\Framework\View\LayoutFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->layoutFactory->expects($this->any())->method('create')->will($this->returnValue($this->layout));
         $this->layoutMerge = $this->getMockBuilder('Magento\Core\Model\Layout\Merge')
             ->disableOriginalConstructor()
             ->getMock();
@@ -92,27 +107,42 @@ class PageTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
+        $this->viewFileSystem = $this->getMockBuilder('Magento\Framework\View\FileSystem')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
         $this->context = $objectManagerHelper->getObject('Magento\Framework\View\Element\Template\Context', [
             'layout' => $this->layout,
             'request' => $this->request,
+            'viewFileSystem' => $this->viewFileSystem,
             'pageConfig' => $this->pageConfig
         ]);
 
-
         $this->translateInline = $this->getMock('Magento\Framework\Translate\InlineInterface');
 
         $this->pageConfigRenderer = $this->getMockBuilder('Magento\Framework\View\Page\Config\Renderer')
             ->disableOriginalConstructor()
             ->getMock();
 
+        $pageConfigRendererFactory = $this->getMockBuilder('Magento\Framework\View\Page\Config\RendererFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $pageConfigRendererFactory->expects($this->once())
+            ->method('create')
+            ->with(['pageConfig' => $this->pageConfig])
+            ->willReturn($this->pageConfigRenderer);
+
         $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
         $this->page = $objectManagerHelper->getObject(
             'Magento\Framework\View\Result\Page',
             [
+                'isIsolated' => true,
+                'layoutFactory' =>$this->layoutFactory,
                 'context' => $this->context,
                 'translateInline' => $this->translateInline,
-                'pageConfigRenderer' => $this->pageConfigRenderer
+                'pageConfigRendererFactory' => $pageConfigRendererFactory,
             ]
         );
     }
@@ -206,7 +236,7 @@ class PageTest extends \PHPUnit_Framework_TestCase
             ->with($expected)
             ->willReturnSelf();
 
-        $this->assertEquals($this->layoutMerge, $this->page->addPageLayoutHandles($parameters, $defaultHandle));
+        $this->page->addPageLayoutHandles($parameters, $defaultHandle);
     }
 
     public function testAddPageLayoutHandlesWithDefaultHandle()
@@ -229,66 +259,6 @@ class PageTest extends \PHPUnit_Framework_TestCase
             ->with($expected)
             ->willReturnSelf();
 
-        $this->assertEquals($this->layoutMerge, $this->page->addPageLayoutHandles($parameters, $defaultHandle));
-    }
-
-    public function testRenderResult()
-    {
-        $pageLayout  = 'page_layout';
-        $fullActionName = 'full_action_aame';
-        $requireJs = 'require_js';
-        $layoutOutput = 'layout_output';
-        $headContent =  'head_content';
-        $attributesHtml =  'attributes_html';
-        $attributesHead =  'attributes_head';
-        $attributesBody =  'attributes_body';
-
-        $response = $this->getMock('Magento\Framework\App\ResponseInterface', ['sendResponse', 'appendBody']);
-        $response->expects($this->once())
-            ->method('appendBody');
-
-        $this->request->expects($this->atLeastOnce())
-            ->method('getFullActionName')
-            ->with('-')
-            ->willReturn($fullActionName);
-
-        $this->pageConfig->expects($this->any())
-            ->method('getPageLayout')
-            ->willReturn($pageLayout);
-        $this->pageConfig->expects($this->any())
-            ->method('addBodyClass')
-            ->withConsecutive([$fullActionName], ['page-layout-' . $pageLayout]);
-
-        $requireJsBlock = $this->getMock('Magento\Framework\View\Element\BlockInterface');
-        $requireJsBlock->expects($this->once())
-            ->method('toHtml')
-            ->willReturn($requireJs);
-
-        $this->layout->expects($this->any())
-            ->method('getBlock')
-            ->with('require.js')
-            ->willReturn($requireJsBlock);
-
-        $this->layout->expects($this->once())
-            ->method('getOutput')
-            ->willReturn($layoutOutput);
-
-        $this->translateInline->expects($this->once())
-            ->method('processResponseBody')
-            ->with($layoutOutput);
-
-        $this->pageConfigRenderer->expects($this->any())
-            ->method('renderElementAttributes')
-            ->willReturnMap([
-                [PageConfig::ELEMENT_TYPE_HTML, $attributesHtml],
-                [PageConfig::ELEMENT_TYPE_HEAD, $attributesHead],
-                [PageConfig::ELEMENT_TYPE_BODY, $attributesBody]
-            ]);
-
-        $this->pageConfigRenderer->expects($this->any())
-            ->method('renderHeadContent')
-            ->willReturn($headContent);
-
-        $this->page->renderResult($response);
+        $this->page->addPageLayoutHandles($parameters, $defaultHandle);
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/PageCache/Helper/DataTest.php b/dev/tests/unit/testsuite/Magento/PageCache/Helper/DataTest.php
index 3f4ad518e2e53346b5e334317b92070472820b8a..685accf07603eacf9469889265a94edee4374ba4 100644
--- a/dev/tests/unit/testsuite/Magento/PageCache/Helper/DataTest.php
+++ b/dev/tests/unit/testsuite/Magento/PageCache/Helper/DataTest.php
@@ -59,57 +59,4 @@ class DataTest extends \PHPUnit_Framework_TestCase
         $age = 365 * 24 * 60 * 60;
         $this->assertEquals($age, \Magento\PageCache\Helper\Data::PRIVATE_MAX_AGE_CACHE);
     }
-
-    /**
-     * test for getActualHandles function
-     */
-    public function testGetActualHandles()
-    {
-        $this->prepareMocks();
-        $layoutHandles = [
-            'handle1',
-            'config_layout_handle1',
-            'handle2'
-        ];
-
-        $this->updateLayoutMock->expects($this->once())
-            ->method('getHandles')
-            ->will($this->returnValue($layoutHandles));
-
-        $this->assertEquals($layoutHandles, $this->helper->getActualHandles());
-    }
-
-    protected function prepareMocks()
-    {
-        $this->contextMock = $this->getMock('Magento\Framework\App\Helper\Context', [], [], '', false);
-        $this->viewMock =
-            $this->getMock('Magento\Framework\App\View', ['getLayout'], ['getPageLayoutHandles'], '', false);
-        $layoutMock = $this->getMockForAbstractClass(
-            'Magento\Framework\View\LayoutInterface',
-            array(),
-            '',
-            false,
-            true,
-            true,
-            array('getUpdate')
-        );
-        $this->updateLayoutMock = $this->getMockForAbstractClass(
-            'Magento\Framework\View\Layout\ProcessorInterface',
-            array(),
-            '',
-            false,
-            true,
-            true,
-            array()
-        );
-
-        $this->viewMock->expects($this->once())
-            ->method('getLayout')
-            ->will($this->returnValue($layoutMock));
-        $layoutMock->expects($this->once())
-            ->method('getUpdate')
-            ->will($this->returnValue($this->updateLayoutMock));
-
-        $this->helper = new Data($this->contextMock, $this->viewMock);
-    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/ProcessLayoutRenderElementTest.php b/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/ProcessLayoutRenderElementTest.php
index b34e1ac22a3b7da3bee57cfe80528b33ec1e5635..e44ecdf3efc07de0bcbb49bdc7508178b4b0ae87 100644
--- a/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/ProcessLayoutRenderElementTest.php
+++ b/dev/tests/unit/testsuite/Magento/PageCache/Model/Observer/ProcessLayoutRenderElementTest.php
@@ -59,12 +59,8 @@ class ProcessLayoutRenderElementTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->_helperMock = $this->getMock('Magento\PageCache\Helper\Data', array(), array(), '', false);
 
-        $this->_model = new \Magento\PageCache\Model\Observer\ProcessLayoutRenderElement(
-            $this->_configMock,
-            $this->_helperMock
-        );
+        $this->_model = new \Magento\PageCache\Model\Observer\ProcessLayoutRenderElement($this->_configMock);
         $this->_observerMock = $this->getMock(
             'Magento\Framework\Event\Observer',
             array('getEvent'),
diff --git a/dev/tests/unit/testsuite/Magento/Payment/Helper/DataTest.php b/dev/tests/unit/testsuite/Magento/Payment/Helper/DataTest.php
index 49f7da2a14f3d135e704aad185c489d8ec10bb3f..385d65d832a8a939284424cfb03e75c6ae12d456 100644
--- a/dev/tests/unit/testsuite/Magento/Payment/Helper/DataTest.php
+++ b/dev/tests/unit/testsuite/Magento/Payment/Helper/DataTest.php
@@ -55,6 +55,10 @@ class DataTest extends \PHPUnit_Framework_TestCase
         $context = $this->getMock('Magento\Framework\App\Helper\Context', [], [], '', false);
         $this->scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface', [], [], '', false);
         $this->layoutMock = $this->getMock('Magento\Framework\View\LayoutInterface', [], [], '', false);
+        $layoutFactoryMock = $this->getMockBuilder('Magento\Framework\View\LayoutFactory')
+            ->disableOriginalConstructor()->getMock();
+        $layoutFactoryMock->expects($this->once())->method('create')->willReturn($this->layoutMock);
+
         $this->methodFactory = $this->getMock('Magento\Payment\Model\Method\Factory', [], [], '', false);
         $this->appEmulation = $this->getMock('Magento\Core\Model\App\Emulation', [], [], '', false);
         $paymentConfig = $this->getMock('Magento\Payment\Model\Config', [], [], '', false);
@@ -63,7 +67,7 @@ class DataTest extends \PHPUnit_Framework_TestCase
         $this->helper = new \Magento\Payment\Helper\Data(
             $context,
             $this->scopeConfig,
-            $this->layoutMock,
+            $layoutFactoryMock,
             $this->methodFactory,
             $this->appEmulation,
             $paymentConfig,
diff --git a/dev/tests/unit/testsuite/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/RecurringTest.php b/dev/tests/unit/testsuite/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/RecurringTest.php
index 4838a92e14c9f7c5f98eb4c0707aff3c65df071b..919f3ad28bac5ecee38fc92a06d4a67e3b965930 100644
--- a/dev/tests/unit/testsuite/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/RecurringTest.php
+++ b/dev/tests/unit/testsuite/Magento/RecurringPayment/Block/Adminhtml/Product/Edit/Tab/Price/RecurringTest.php
@@ -25,11 +25,6 @@ namespace Magento\RecurringPayment\Block\Adminhtml\Product\Edit\Tab\Price;
 
 class RecurringTest extends \PHPUnit_Framework_TestCase
 {
-    /**
-     * @var \Magento\Framework\View\Element\BlockFactory
-     */
-    protected $_blockFactory;
-
     /**
      * @var \Magento\Framework\Registry
      */
@@ -55,30 +50,32 @@ class RecurringTest extends \PHPUnit_Framework_TestCase
      */
     protected $_scopeConfig;
 
+    /**
+     * @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $layoutMock;
+
     protected function setUp()
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
 
-        $this->_blockFactory = $this->getMock(
-            'Magento\Framework\View\Element\BlockFactory',
-            array('createBlock'),
-            array(),
-            '',
-            false
-        );
-
         $this->_registry = $this->getMock('Magento\Framework\Registry', array(), array(), '', false);
 
         $this->_eventManager = $this->getMock('Magento\Framework\Event\Manager', array(), array(), '', false);
         $this->_scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
+        $this->layoutMock = $this->getMockBuilder('Magento\Framework\View\LayoutInterface')->getMock();
         $this->_context = $helper->getObject(
             'Magento\Backend\Block\Template\Context',
-            array('eventManager' => $this->_eventManager, 'scopeConfig' => $this->_scopeConfig)
+            array(
+                'eventManager' => $this->_eventManager,
+                'scopeConfig' => $this->_scopeConfig,
+                'layout' => $this->layoutMock
+            )
         );
 
         $this->_testModel = $helper->getObject(
             'Magento\RecurringPayment\Block\Adminhtml\Product\Edit\Tab\Price\Recurring',
-            array('blockFactory' => $this->_blockFactory, 'registry' => $this->_registry, 'context' => $this->_context)
+            array('registry' => $this->_registry, 'context' => $this->_context)
         );
     }
 
@@ -96,10 +93,19 @@ class RecurringTest extends \PHPUnit_Framework_TestCase
                 'addConfigOptions'
             )
         );
-        $map = array(
-            array('Magento\RecurringPayment\Block\Adminhtml\Payment\Edit\Form', array(), $blockMock),
-            array('Magento\Backend\Block\Widget\Form\Element\Dependence', array(), $blockMock)
-        );
+        $map = [
+            [
+                'Magento\RecurringPayment\Block\Adminhtml\Payment\Edit\Form',
+                'adminhtml_recurring_payment_edit_form',
+                array(),
+                $blockMock],
+            [
+                'Magento\Backend\Block\Widget\Form\Element\Dependence',
+                'adminhtml_recurring_payment_edit_form_dependence',
+                array(),
+                $blockMock
+            ]
+        ];
         $paymentElement = $this->getMock(
             'Magento\Framework\Data\Form\Element\AbstractElement',
             array(),
@@ -113,8 +119,9 @@ class RecurringTest extends \PHPUnit_Framework_TestCase
 
         $product = $this->getMock('Magento\Catalog\Model\Product', array(), array(), '', false);
         $this->_registry->expects($this->once())->method('registry')->will($this->returnValue($product));
-
-        $this->_blockFactory->expects($this->any())->method('createBlock')->will($this->returnValueMap($map));
+        $this->layoutMock->expects($this->any())
+            ->method('createBlock')
+            ->will($this->returnValueMap($map));
 
         $blockMock->expects($this->any())->method('setNameInLayout');
         $blockMock->expects($this->once())->method('setProductEntity')->with($product);
diff --git a/dev/tests/unit/testsuite/Magento/Test/Tools/Di/_files/app/etc/di/config.xml b/dev/tests/unit/testsuite/Magento/Test/Tools/Di/_files/app/etc/di/config.xml
index 5bbeed1e44312edbf7e950a058de204338ac9575..cfcfb31d9708ba3b88bcdf0811497d7666feda80 100644
--- a/dev/tests/unit/testsuite/Magento/Test/Tools/Di/_files/app/etc/di/config.xml
+++ b/dev/tests/unit/testsuite/Magento/Test/Tools/Di/_files/app/etc/di/config.xml
@@ -36,5 +36,5 @@
         <plugin name="first" type="Magento\Core\Model\Action\Plugin" />
     </type>
     <virtualType name="customStoreManagerProxy" type="Magento\Store\Model\StoreManager\Proxy" />
-    <virtualType name="customLayoutFactory" type="Magento\Framework\View\Layout\Factory" />
+    <virtualType name="customLayoutFactory" type="Magento\Framework\View\LayoutFactory" />
 </config>
diff --git a/lib/internal/Magento/Framework/Api/AttributeInterface.php b/lib/internal/Magento/Framework/Api/Data/AttributeInterface.php
similarity index 96%
rename from lib/internal/Magento/Framework/Api/AttributeInterface.php
rename to lib/internal/Magento/Framework/Api/Data/AttributeInterface.php
index 277417ab28422c601e5dcf5f7558985861cb298b..bf74aaaf7308f76dcd73d2947ae4a283348fd895 100644
--- a/lib/internal/Magento/Framework/Api/AttributeInterface.php
+++ b/lib/internal/Magento/Framework/Api/Data/AttributeInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api;
+namespace Magento\Framework\Api\Data;
 
 /**
  * Interface for custom attribute value.
diff --git a/lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php b/lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php
similarity index 83%
rename from lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php
rename to lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php
index 981fbadac50973416d7021161e2b03d1d0d9cda7..59dc098f81e745554d4ea50a67d406e11822cf86 100644
--- a/lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php
+++ b/lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php
@@ -22,20 +22,20 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api;
+namespace Magento\Framework\Api\Data;
 
 /**
- * Base builder interface for \Magento\Framework\Api\ExtensibleDataInterface types.
+ * Base builder interface for \Magento\Framework\Api\Data\ExtensibleDataInterface types.
  */
 interface ExtensibleDataBuilderInterface
 {
     /**
      * Set custom attribute value.
      *
-     * @param \Magento\Framework\Api\AttributeInterface $attribute
+     * @param \Magento\Framework\Api\Data\AttributeInterface $attribute
      * @return $this
      */
-    public function setCustomAttribute(\Magento\Framework\Api\AttributeInterface $attribute);
+    public function setCustomAttribute(\Magento\Framework\Api\Data\AttributeInterface $attribute);
 
     /**
      * Set array of custom attributes
diff --git a/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php b/lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php
similarity index 88%
rename from lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php
rename to lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php
index f9c6d5f88c76b4683507e8fb7938b4f10ecf4c09..5c5964b8ff2304a263b5103ebfaa4c587f9d9483 100644
--- a/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php
+++ b/lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api;
+namespace Magento\Framework\Api\Data;
 
 /**
  * Interface for entities which can be extended with custom attributes.
@@ -33,14 +33,14 @@ interface ExtensibleDataInterface
      * Get an attribute value.
      *
      * @param string $attributeCode
-     * @return \Magento\Framework\Service\Data\AttributeValue|null null if the attribute has not been set
+     * @return \Magento\Framework\Api\Data\AttributeInterface|null null if the attribute has not been set
      */
     public function getCustomAttribute($attributeCode);
 
     /**
      * Retrieve custom attributes values.
      *
-     * @return \Magento\Framework\Service\Data\AttributeValue[]|null
+     * @return \Magento\Framework\Api\Data\AttributeInterface[]
      */
     public function getCustomAttributes();
 }
diff --git a/lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php b/lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..68feed1c06457d14ad42230688436106f97b5ee7
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Api\Data;
+
+/**
+ * Search criteria interface.
+ */
+interface SearchCriteriaInterface
+{
+    const SORT_ASC = 1;
+    const SORT_DESC = -1;
+
+    /**
+     * Get a list of filter groups.
+     *
+     * @return \Magento\Framework\Service\V1\Data\Search\FilterGroup[]
+     */
+    public function getFilterGroups();
+
+    /**
+     * Get sort order.
+     *
+     * @return \Magento\Framework\Service\V1\Data\SortOrder[]|null
+     */
+    public function getSortOrders();
+
+    /**
+     * Get page size.
+     *
+     * @return int|null
+     */
+    public function getPageSize();
+
+    /**
+     * Get current page.
+     *
+     * @return int|null
+     */
+    public function getCurrentPage();
+}
diff --git a/lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php b/lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..a53a97f5f324b6f0624b2d627b6798bbce0f8680
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Api\Data;
+
+/**
+ * Search results interface.
+ */
+interface SearchResultsInterface
+{
+    /**
+     * Get items list.
+     *
+     * @return \Magento\Framework\Api\Data\ExtensibleDataInterface[]
+     */
+    public function getItems();
+
+    /**
+     * Get search criteria.
+     *
+     * @return \Magento\Framework\Api\Data\SearchCriteriaInterface
+     */
+    public function getSearchCriteria();
+
+    /**
+     * Get total count.
+     *
+     * @return int
+     */
+    public function getTotalCount();
+}
diff --git a/lib/internal/Magento/Framework/App/Action/Action.php b/lib/internal/Magento/Framework/App/Action/Action.php
index 2cb090f6264f359159d9f0666988c8b2b0ac0e08..6dc3b2649dc2adb61f94961b654fdba5be0dbda7 100644
--- a/lib/internal/Magento/Framework/App/Action/Action.php
+++ b/lib/internal/Magento/Framework/App/Action/Action.php
@@ -62,6 +62,7 @@ class Action extends AbstractAction
     protected $_redirect;
 
     /**
+     * @deprecated
      * @var \Magento\Framework\App\ViewInterface
      */
     protected $_view;
@@ -111,9 +112,10 @@ class Action extends AbstractAction
         );
         \Magento\Framework\Profiler::start($profilerKey);
 
+        $result = null;
         if ($request->isDispatched() && !$this->_actionFlag->get('', self::FLAG_NO_DISPATCH)) {
             \Magento\Framework\Profiler::start('action_body');
-            $this->execute();
+            $result = $this->execute();
             \Magento\Framework\Profiler::start('postdispatch');
             if (!$this->_actionFlag->get('', self::FLAG_NO_POST_DISPATCH)) {
                 $this->_eventManager->dispatch(
@@ -130,7 +132,7 @@ class Action extends AbstractAction
             \Magento\Framework\Profiler::stop('action_body');
         }
         \Magento\Framework\Profiler::stop($profilerKey);
-        return $this->_response;
+        return $result ?: $this->_response;
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/App/ActionInterface.php b/lib/internal/Magento/Framework/App/ActionInterface.php
index 172442c286d8955f5c1c5177b38ab9cff3f691af..c88a2ef8ceda49ac71e17c2a9e87932d7b5a661c 100644
--- a/lib/internal/Magento/Framework/App/ActionInterface.php
+++ b/lib/internal/Magento/Framework/App/ActionInterface.php
@@ -41,7 +41,7 @@ interface ActionInterface
      * Dispatch request
      *
      * @param RequestInterface $request
-     * @return ResponseInterface
+     * @return \Magento\Framework\Controller\ResultInterface|ResponseInterface
      * @throws Action\NotFoundException
      */
     public function dispatch(RequestInterface $request);
diff --git a/lib/internal/Magento/Framework/App/FrontController.php b/lib/internal/Magento/Framework/App/FrontController.php
index 6c5b9f4e619286d1b8b6db506245b159813db9d5..6016012462a2c463c482b8f9c87e58870396a7af 100644
--- a/lib/internal/Magento/Framework/App/FrontController.php
+++ b/lib/internal/Magento/Framework/App/FrontController.php
@@ -44,22 +44,23 @@ class FrontController implements FrontControllerInterface
      * Perform action and generate response
      *
      * @param RequestInterface $request
-     * @return ResponseInterface
+     * @return ResponseInterface|\Magento\Framework\Controller\ResultInterface
      * @throws \LogicException
      */
     public function dispatch(RequestInterface $request)
     {
         \Magento\Framework\Profiler::start('routers_match');
         $routingCycleCounter = 0;
-        $response = null;
+        $result = null;
         while (!$request->isDispatched() && $routingCycleCounter++ < 100) {
+            /** @var \Magento\Framework\App\RouterInterface $router */
             foreach ($this->_routerList as $router) {
                 try {
                     $actionInstance = $router->match($request);
                     if ($actionInstance) {
                         $request->setDispatched(true);
                         $actionInstance->getResponse()->setNoCacheHeaders();
-                        $response = $actionInstance->dispatch($request);
+                        $result = $actionInstance->dispatch($request);
                         break;
                     }
                 } catch (Action\NotFoundException $e) {
@@ -74,6 +75,6 @@ class FrontController implements FrontControllerInterface
         if ($routingCycleCounter > 100) {
             throw new \LogicException('Front controller reached 100 router match iterations');
         }
-        return $response;
+        return $result;
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Http.php b/lib/internal/Magento/Framework/App/Http.php
index e1dedf7043de24b4108a7c2f8244dfd7324531ae..f3c04a4dd39cfcba956859de5113583bddb3559f 100644
--- a/lib/internal/Magento/Framework/App/Http.php
+++ b/lib/internal/Magento/Framework/App/Http.php
@@ -31,6 +31,8 @@ use Magento\Framework\App\ObjectManager\ConfigLoader;
 use Magento\Framework\App\Request\Http as RequestHttp;
 use Magento\Framework\App\Response\Http as ResponseHttp;
 use Magento\Framework\Event;
+use Magento\Framework\Controller\ResultInterface;
+use Magento\Framework\App\Response\HttpInterface;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -118,6 +120,7 @@ class Http implements \Magento\Framework\AppInterface
     /**
      * Run application
      *
+     * @throws \InvalidArgumentException
      * @return ResponseInterface
      */
     public function launch()
@@ -125,8 +128,17 @@ class Http implements \Magento\Framework\AppInterface
         $areaCode = $this->_areaList->getCodeByFrontName($this->_request->getFrontName());
         $this->_state->setAreaCode($areaCode);
         $this->_objectManager->configure($this->_configLoader->load($areaCode));
-        $this->_response = $this->_objectManager->get('Magento\Framework\App\FrontControllerInterface')
-            ->dispatch($this->_request);
+        /** @var \Magento\Framework\App\FrontControllerInterface $frontController */
+        $frontController = $this->_objectManager->get('Magento\Framework\App\FrontControllerInterface');
+        $result = $frontController->dispatch($this->_request);
+        // TODO: Temporary solution till all controllers are returned not ResultInterface (MAGETWO-28359)
+        if ($result instanceof ResultInterface) {
+            $result->renderResult($this->_response);
+        } elseif ($result instanceof HttpInterface) {
+            $this->_response = $result;
+        } else {
+            throw new \InvalidArgumentException('Invalid return type');
+        }
         // This event gives possibility to launch something before sending output (allow cookie setting)
         $eventParams = array('request' => $this->_request, 'response' => $this->_response);
         $this->_eventManager->dispatch('controller_front_send_response_before', $eventParams);
diff --git a/lib/internal/Magento/Framework/App/Response/RedirectInterface.php b/lib/internal/Magento/Framework/App/Response/RedirectInterface.php
index 2470accf90059ed5cfe0c48867b15d2e5690ff7a..7c0b0e4acba4b9f1803d9fd2b69eb08d70ee824a 100644
--- a/lib/internal/Magento/Framework/App/Response/RedirectInterface.php
+++ b/lib/internal/Magento/Framework/App/Response/RedirectInterface.php
@@ -64,6 +64,14 @@ interface RedirectInterface
      */
     public function success($defaultUrl);
 
+    /**
+     * Update path params for url builder
+     *
+     * @param array $arguments
+     * @return array
+     */
+    public function updatePathParams(array $arguments);
+
     /**
      * Set redirect into response
      *
diff --git a/lib/internal/Magento/Framework/App/RouterList.php b/lib/internal/Magento/Framework/App/RouterList.php
index f4d47688bb9564cae0a9fce064f74ec5b8685e17..3a0ff4d1ffb923304452feca2a8780c6cc672c47 100644
--- a/lib/internal/Magento/Framework/App/RouterList.php
+++ b/lib/internal/Magento/Framework/App/RouterList.php
@@ -36,7 +36,7 @@ class RouterList implements RouterListInterface
     /**
      * List of routers
      *
-     * @var array
+     * @var RouterInterface[]
      */
     protected $routerList;
 
diff --git a/lib/internal/Magento/Framework/App/View.php b/lib/internal/Magento/Framework/App/View.php
index 7aa31f6ab1eb49185513b0eff00c22249220f2d3..25b10bd6452922d572412c961d7e195b65dcc9b0 100644
--- a/lib/internal/Magento/Framework/App/View.php
+++ b/lib/internal/Magento/Framework/App/View.php
@@ -89,7 +89,7 @@ class View implements ViewInterface
         $this->_configScope = $configScope;
         $this->_eventManager = $eventManager;
         $this->_actionFlag = $actionFlag;
-        $this->page = $pageFactory->create();
+        $this->page = $pageFactory->create(true);
     }
 
     /**
@@ -185,19 +185,7 @@ class View implements ViewInterface
      */
     public function loadLayoutUpdates()
     {
-        \Magento\Framework\Profiler::start('LAYOUT');
-        // dispatch event for adding handles to layout update
-        $this->_eventManager->dispatch(
-            'controller_action_layout_load_before',
-            array('full_action_name' => $this->_request->getFullActionName(), 'layout' => $this->getLayout())
-        );
-
-        // load layout updates by specified handles
-        \Magento\Framework\Profiler::start('layout_load');
-        $this->getLayout()->getUpdate()->load();
-        \Magento\Framework\Profiler::stop('layout_load');
-
-        \Magento\Framework\Profiler::stop('LAYOUT');
+        $this->page->getConfig()->publicBuild();
         return $this;
     }
 
@@ -208,13 +196,7 @@ class View implements ViewInterface
      */
     public function generateLayoutXml()
     {
-        \Magento\Framework\Profiler::start('LAYOUT');
-        // generate xml from collected text updates
-        \Magento\Framework\Profiler::start('layout_generate_xml');
-        $this->getLayout()->generateXml();
-        \Magento\Framework\Profiler::stop('layout_generate_xml');
-
-        \Magento\Framework\Profiler::stop('LAYOUT');
+        $this->page->getConfig()->publicBuild();
         return $this;
     }
 
@@ -225,29 +207,7 @@ class View implements ViewInterface
      */
     public function generateLayoutBlocks()
     {
-        \Magento\Framework\Profiler::start('LAYOUT');
-
-        // dispatch event for adding xml layout elements
-        if (!$this->_actionFlag->get('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH_BLOCK_EVENT)) {
-            $this->_eventManager->dispatch(
-                'controller_action_layout_generate_blocks_before',
-                array('full_action_name' => $this->_request->getFullActionName(), 'layout' => $this->getLayout())
-            );
-        }
-
-        // generate blocks from xml layout
-        \Magento\Framework\Profiler::start('layout_generate_blocks');
-        $this->getLayout()->generateElements();
-        \Magento\Framework\Profiler::stop('layout_generate_blocks');
-
-        if (!$this->_actionFlag->get('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH_BLOCK_EVENT)) {
-            $this->_eventManager->dispatch(
-                'controller_action_layout_generate_blocks_after',
-                array('full_action_name' => $this->_request->getFullActionName(), 'layout' => $this->getLayout())
-            );
-        }
-
-        \Magento\Framework\Profiler::stop('LAYOUT');
+        $this->page->getConfig()->publicBuild();
         return $this;
     }
 
diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php
index 887e9b7b820a62ed9a46ad9214d1f4c493f92560..839d0af959c0235909c6da7642b557307358e864 100644
--- a/lib/internal/Magento/Framework/AppInterface.php
+++ b/lib/internal/Magento/Framework/AppInterface.php
@@ -35,7 +35,7 @@ interface AppInterface
     /**
      * Magento version
      */
-    const VERSION = '0.1.0-alpha101';
+    const VERSION = '0.1.0-alpha102';
 
     /**
      * Launch application
diff --git a/lib/internal/Magento/Framework/Controller/AbstractResult.php b/lib/internal/Magento/Framework/Controller/AbstractResult.php
new file mode 100644
index 0000000000000000000000000000000000000000..079fbc04a867ea1fd43262d328bab06c98ae62e9
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/AbstractResult.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller;
+
+use Magento\Framework\App\ResponseInterface;
+
+abstract class AbstractResult implements ResultInterface
+{
+    /**
+     * @var int
+     */
+    protected $httpResponseCode;
+
+    /**
+     * @var array
+     */
+    protected $headers = [];
+
+    /**
+     * Set response code to result
+     *
+     * @param int $httpCode
+     * @return $this
+     */
+    public function setHttpResponseCode($httpCode)
+    {
+        $this->httpResponseCode = $httpCode;
+        return $this;
+    }
+
+    /**
+     * Set a header
+     *
+     * If $replace is true, replaces any headers already defined with that
+     * $name.
+     *
+     * @param string $name
+     * @param string $value
+     * @param boolean $replace
+     * @return $this
+     */
+    public function setHeader($name, $value, $replace = false)
+    {
+        $this->headers[] = [
+            'name'    => $name,
+            'value'   => $value,
+            'replace' => $replace
+        ];
+        return $this;
+    }
+
+    /**
+     * @param ResponseInterface $response
+     * @return $this
+     */
+    protected function applyHttpHeaders(ResponseInterface $response)
+    {
+        if (!empty($this->httpResponseCode)) {
+            $response->setHttpResponseCode($this->httpResponseCode);
+        }
+
+        if (!empty($this->headers)) {
+            foreach ($this->headers as $headerData) {
+                $response->setHeader($headerData['name'], $headerData['value'], $headerData['replace']);
+            }
+        }
+        return $this;
+    }
+
+    /**
+     * @param ResponseInterface $response
+     * @return $this
+     */
+    abstract protected function render(ResponseInterface $response);
+
+    /**
+     * Render content
+     *
+     * @param ResponseInterface $response
+     * @return $this
+     */
+    public function renderResult(ResponseInterface $response)
+    {
+        $this->applyHttpHeaders($response);
+        return $this->render($response);
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/Result/Forward.php b/lib/internal/Magento/Framework/Controller/Result/Forward.php
new file mode 100644
index 0000000000000000000000000000000000000000..ad401d14327fa5d80eed46eaa4c16885366d5dfd
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/Result/Forward.php
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\Framework\Controller\AbstractResult;
+use Magento\Framework\App\ResponseInterface;
+use Magento\Framework\App\RequestInterface;
+
+class Forward extends AbstractResult
+{
+    /**
+     * @var \Magento\Framework\App\RequestInterface
+     */
+    protected $request;
+
+    /**
+     * @var string
+     */
+    protected $module;
+
+    /**
+     * @var string
+     */
+    protected $controller;
+
+    /**
+     * @var array
+     */
+    protected $params = [];
+
+    /**
+     * @param RequestInterface $request
+     */
+    public function __construct(RequestInterface $request)
+    {
+        $this->request = $request;
+    }
+
+    /**
+     * @param string $module
+     * @return $this
+     */
+    public function setModule($module)
+    {
+        $this->module = $module;
+        return $this;
+    }
+
+    /**
+     * @param string $controller
+     * @return $this
+     */
+    public function setController($controller)
+    {
+        $this->controller = $controller;
+        return $this;
+    }
+
+    /**
+     * @param array $params
+     * @return $this
+     */
+    public function setParams(array $params)
+    {
+        $this->params = $params;
+        return $this;
+    }
+
+    /**
+     * @param string $action
+     * @return $this
+     */
+    public function forward($action)
+    {
+        $this->request->initForward();
+
+        if (!empty($this->params)) {
+            $this->request->setParams($this->params);
+        }
+
+        if (!empty($this->controller)) {
+            $this->request->setControllerName($this->controller);
+
+            // Module should only be reset if controller has been specified
+            if (!empty($this->module)) {
+                $this->request->setModuleName($this->module);
+            }
+        }
+
+        $this->request->setActionName($action);
+        $this->request->setDispatched(false);
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function render(ResponseInterface $response)
+    {
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/Result/JSON.php b/lib/internal/Magento/Framework/Controller/Result/JSON.php
new file mode 100644
index 0000000000000000000000000000000000000000..89dc0c1323847ab865745f85664eef9166e4e23d
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/Result/JSON.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\Framework\Controller\AbstractResult;
+use Magento\Framework\App\ResponseInterface;
+use Magento\Framework\Translate\InlineInterface;
+
+/**
+ * A possible implementation of JSON response type (instead of hardcoding json_encode() all over the place)
+ * Actual for controller actions that serve ajax requests
+ */
+class JSON extends AbstractResult
+{
+    /**
+     * @var \Magento\Framework\Translate\InlineInterface
+     */
+    protected $translateInline;
+
+    /**
+     * @var string
+     */
+    protected $json;
+
+    /**
+     * @param \Magento\Framework\Translate\InlineInterface $translateInline
+     */
+    public function __construct(InlineInterface $translateInline)
+    {
+        $this->translateInline = $translateInline;
+    }
+
+    /**
+     * Set json data
+     *
+     * @param mixed $data
+     * @param boolean $cycleCheck Optional; whether or not to check for object recursion; off by default
+     * @param array $options Additional options used during encoding
+     * @return $this
+     */
+    public function setData($data, $cycleCheck = false, $options = array())
+    {
+        $this->json = \Zend_Json::encode($data, $cycleCheck, $options);
+        return $this;
+    }
+
+    /**
+     * @param string $jsonData
+     * @return $this
+     */
+    public function setJsonData($jsonData)
+    {
+        $this->json = (string)$jsonData;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function render(ResponseInterface $response)
+    {
+        $this->translateInline->processResponseBody($this->json, true);
+        $response->representJson($this->json);
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/Result/Raw.php b/lib/internal/Magento/Framework/Controller/Result/Raw.php
new file mode 100644
index 0000000000000000000000000000000000000000..d87510ca02971872ff718c401f59ecd696ce1239
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/Result/Raw.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\Framework\Controller\AbstractResult;
+use Magento\Framework\App\ResponseInterface;
+
+/**
+ * A result that contains raw response - may be good for passing through files,
+ * returning result of downloads or some other binary contents
+ */
+class Raw extends AbstractResult
+{
+    /**
+     * @var string
+     */
+    protected $contents;
+
+    /**
+     * @param string $contents
+     * @return $this
+     */
+    public function setContents($contents)
+    {
+        $this->contents = $contents;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function render(ResponseInterface $response)
+    {
+        $response->setBody($this->contents);
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/Result/Redirect.php b/lib/internal/Magento/Framework/Controller/Result/Redirect.php
new file mode 100644
index 0000000000000000000000000000000000000000..c65cac6074c157a21d02c5c923ffdf3c3a4f08ba
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/Result/Redirect.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller\Result;
+
+use Magento\Framework\Controller\AbstractResult;
+use Magento\Framework\App;
+
+/**
+ * In many cases controller actions may result in a redirect
+ * so this is a result object that implements all necessary properties of a HTTP redirect
+ */
+class Redirect extends AbstractResult
+{
+    /**
+     * @var \Magento\Framework\App\Response\RedirectInterface
+     */
+    protected $redirect;
+
+    /**
+     * @var \Magento\Framework\UrlInterface
+     */
+    protected $urlBuilder;
+
+    /**
+     * @var string
+     */
+    protected $url;
+
+    /**
+     * Constructor
+     *
+     * @param App\Response\RedirectInterface $redirect
+     * @param \Magento\Framework\UrlInterface $urlBuilder
+     */
+    public function __construct(
+        App\Response\RedirectInterface $redirect,
+        \Magento\Framework\UrlInterface $urlBuilder
+    ) {
+        $this->redirect = $redirect;
+        $this->urlBuilder = $urlBuilder;
+    }
+
+    /**
+     * Set url from referer
+     *
+     * @return $this
+     */
+    public function setRefererUrl()
+    {
+        $this->url = $this->redirect->getRefererUrl();
+        return $this;
+    }
+
+    /**
+     * Set referer url or base if referer is not exist
+     *
+     * @return $this
+     */
+    public function setRefererOrBaseUrl()
+    {
+        $this->url = $this->redirect->getRedirectUrl();
+        return $this;
+    }
+
+    /**
+     * @param string $url
+     * @return $this
+     */
+    public function setUrl($url)
+    {
+        $this->url = $url;
+        return $this;
+    }
+
+    /**
+     * Set url by path
+     *
+     * @param string $path
+     * @param array $params
+     * @return $this
+     */
+    public function setPath($path, array $params = [])
+    {
+        $this->url = $this->urlBuilder->getUrl($path, $this->redirect->updatePathParams($params));
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function render(App\ResponseInterface $response)
+    {
+        $response->setRedirect($this->url);
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/ResultFactory.php b/lib/internal/Magento/Framework/Controller/ResultFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..2583a7c879f7bfb2681339607273471e47688909
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/ResultFactory.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller;
+
+use Magento\Framework\ObjectManager;
+
+/**
+ * Result Factory
+ */
+class ResultFactory
+{
+    /**#@+
+     * Allowed result types
+     */
+    const TYPE_JSON     = 'json';
+    const TYPE_RAW      = 'raw';
+    const TYPE_REDIRECT = 'redirect';
+    const TYPE_FORWARD  = 'forward';
+    const TYPE_LAYOUT   = 'layout';
+    const TYPE_PAGE     = 'page';
+    /**#@-*/
+
+    /**
+     * Map of types which are references to classes
+     *
+     * @var array
+     */
+    protected $typeMap = [
+        self::TYPE_JSON     => 'Magento\Framework\Controller\Result\JSON',
+        self::TYPE_RAW      => 'Magento\Framework\Controller\Result\Raw',
+        self::TYPE_REDIRECT => 'Magento\Framework\Controller\Result\Redirect',
+        self::TYPE_FORWARD  => 'Magento\Framework\Controller\Result\Forward',
+        self::TYPE_LAYOUT   => 'Magento\Framework\View\Result\Layout',
+        self::TYPE_PAGE     => 'Magento\Framework\View\Result\Page',
+    ];
+
+    /**
+     * @var ObjectManager
+     */
+    private $objectManager;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManager $objectManager
+     * @param array $typeMap
+     */
+    public function __construct(
+        ObjectManager $objectManager,
+        array $typeMap = []
+    ) {
+        $this->objectManager = $objectManager;
+        $this->mergeTypes($typeMap);
+    }
+
+    /**
+     * Add or override result types
+     *
+     * @param array $typeMap
+     * @return void
+     */
+    protected function mergeTypes(array $typeMap)
+    {
+        foreach ($typeMap as $typeInfo) {
+            if (isset($typeInfo['type']) && isset($typeInfo['class'])) {
+                $this->typeMap[$typeInfo['type']] = $typeInfo['class'];
+            }
+        }
+    }
+
+    /**
+     * Create new page regarding its type
+     *
+     * @param string $type
+     * @param array $arguments
+     * @throws \InvalidArgumentException
+     * @return ResultInterface
+     */
+    public function create($type, array $arguments = [])
+    {
+        if (empty($this->typeMap[$type])) {
+            throw new \InvalidArgumentException('"' . $type . ': isn\'t allowed');
+        }
+
+        $resultInstance = $this->objectManager->create($this->typeMap[$type], $arguments);
+        if (!$resultInstance instanceof ResultInterface) {
+            throw new \InvalidArgumentException(get_class($resultInstance) . ' isn\'t instance of ResultInterface');
+        }
+
+        /**
+         * TODO: Temporary solution, must be removed after full refactoring to the new result rendering system
+         *
+         * Used for knowledge how result page was created, page was created through result factory or it's default page
+         * in App\View created in constructor
+         */
+        if ($resultInstance instanceof \Magento\Framework\View\Result\Layout) {
+            // Initialization has to be in constructor of ResultPage
+            $resultInstance->addDefaultHandle();
+        }
+
+        return $resultInstance;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Controller/ResultInterface.php b/lib/internal/Magento/Framework/Controller/ResultInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..8bf35beb2fcb670b8124de56bd605e69d309bbf4
--- /dev/null
+++ b/lib/internal/Magento/Framework/Controller/ResultInterface.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Controller;
+
+use Magento\Framework\App\ResponseInterface;
+
+/**
+ * An abstraction of result that controller actions must return
+ * The point of this kind of object is to encapsulate all information/objects relevant to the result
+ * and be able to set it to the HTTP response
+ */
+interface ResultInterface
+{
+    /**
+     * @param int $httpCode
+     * @return $this
+     */
+    public function setHttpResponseCode($httpCode);
+
+    /**
+     * Set a header
+     *
+     * If $replace is true, replaces any headers already defined with that
+     * $name.
+     *
+     * @param string $name
+     * @param string $value
+     * @param boolean $replace
+     * @return $this
+     */
+    public function setHeader($name, $value, $replace = false);
+
+    /**
+     * Render result and set to response
+     *
+     * @param ResponseInterface $response
+     * @return $this
+     */
+    public function renderResult(ResponseInterface $response);
+}
diff --git a/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php b/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
index e426c624796a8bc599524221e6b6e7922dc87617..daa95701751114014e0a09181e781262a60e6a39 100644
--- a/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
+++ b/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
@@ -25,6 +25,7 @@
 namespace Magento\Framework\Model;
 
 use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
 
 /**
  * Abstract model with custom attributes support.
@@ -32,7 +33,7 @@ use Magento\Framework\Service\Data\MetadataServiceInterface;
  * This class defines basic data structure of how custom attributes are stored in an ExtensibleModel.
  * Implementations may choose to process custom attributes as their persistence requires them to.
  */
-abstract class AbstractExtensibleModel extends AbstractModel implements \Magento\Framework\Api\ExtensibleDataInterface
+abstract class AbstractExtensibleModel extends AbstractModel implements ExtensibleDataInterface
 {
     const CUSTOM_ATTRIBUTES_KEY = 'custom_attributes';
 
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php b/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
index fd49284c1ae1d2f05e9a110059d179303f791549..95fa50a573a92d562be037131b73f0d81c0c6318 100644
--- a/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
+++ b/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
@@ -112,7 +112,7 @@ class DataBuilder extends EntityAbstract
         $isSuitableMethodType = !($method->isConstructor() || $method->isFinal()
             || $method->isStatic() || $method->isDestructor());
         $isExcludedFromGeneration = in_array($method->getName(), array('__sleep', '__wakeup', '__clone'));
-        $isSuitableClass = $method->class !== 'Magento\Framework\Api\ExtensibleDataInterface';
+        $isSuitableClass = $method->class !== 'Magento\Framework\Api\Data\ExtensibleDataInterface';
         return $isGetter && $isSuitableMethodType && !$isExcludedFromGeneration && $isSuitableClass;
     }
 
diff --git a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php b/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php
index d73065cb9d78c303eac0b36197e30351f20cc8da..558985f867ad7d136f429e6d9dfc57efc5055569 100644
--- a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php
+++ b/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Framework\Service\Data;
 
-use Magento\Framework\Api\ExtensibleDataInterface;
+use Magento\Framework\Api\Data\ExtensibleDataInterface;
 
 /**
  * Base Class for extensible data Objects
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeValue.php b/lib/internal/Magento/Framework/Service/Data/AttributeValue.php
index ec5d17fe0a115895cb517bf5e2514dd40ec985b2..e8c0670e580d0dacd3e55bd143a0e9317e1a2461 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeValue.php
+++ b/lib/internal/Magento/Framework/Service/Data/AttributeValue.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Framework\Service\Data;
 
-use Magento\Framework\Api\AttributeInterface;
+use Magento\Framework\Api\Data\AttributeInterface;
 
 /**
  * Custom Attribute Data object
diff --git a/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php b/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
index b665e1ac2ab70563b25bbf17120cb4d1115a4f51..b5f3228f7ba3cb6942254f65d597379eb9bfff08 100644
--- a/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
+++ b/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
@@ -24,12 +24,12 @@
 
 namespace Magento\Framework\Service\Data;
 
-use Magento\Framework\Api\ExtensibleDataBuilderInterface;
+use Magento\Framework\Api\Data\ExtensibleDataBuilderInterface;
 use Magento\Framework\Model\AbstractExtensibleModel;
 use Magento\Framework\ObjectManager;
 
 /**
- * Implementation for \Magento\Framework\Api\ExtensibleDataBuilderInterface.
+ * Implementation for \Magento\Framework\Api\Data\ExtensibleDataBuilderInterface.
  */
 class ExtensibleDataBuilder implements ExtensibleDataBuilderInterface
 {
@@ -63,7 +63,7 @@ class ExtensibleDataBuilder implements ExtensibleDataBuilderInterface
     /**
      * {@inheritdoc}
      */
-    public function setCustomAttribute(\Magento\Framework\Api\AttributeInterface $attribute)
+    public function setCustomAttribute(\Magento\Framework\Api\Data\AttributeInterface $attribute)
     {
         // Store as an associative array for easier lookup and processing
         $this->data[AbstractExtensibleModel::CUSTOM_ATTRIBUTES_KEY][$attribute->getAttributeCode()]
diff --git a/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php b/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php
index c3e0c01aa8a5518ffa6d5c46ecf41a97f045a507..623f1f87a6e1c91b11783504c192b8f14d0903fc 100644
--- a/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php
+++ b/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php
@@ -144,6 +144,17 @@ class SimpleDataObjectConverter
         return str_replace(' ', '', ucwords(str_replace('_', ' ', $input)));
     }
 
+    /**
+     * Converts an input string from snake_case to camelCase.
+     *
+     * @param string $input
+     * @return string
+     */
+    public static function snakeCaseToCamelCase($input)
+    {
+        return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $input))));
+    }
+
     /**
      * Convert a CamelCase string read from method into field key in snake_case
      *
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php b/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php
index 07ce3101438644810cccfcf7c47bc1485eb2f7e3..962bcb3be60fdb91ebcf88bfa1bf48b13985bad2 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php
+++ b/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php
@@ -25,15 +25,13 @@
 namespace Magento\Framework\Service\V1\Data;
 
 use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\Data\SearchCriteriaInterface;
 
 /**
  * Data Object for SearchCriteria
  */
-class SearchCriteria extends AbstractExtensibleObject
+class SearchCriteria extends AbstractExtensibleObject implements SearchCriteriaInterface
 {
-    const SORT_ASC = 1;
-    const SORT_DESC = -1;
-
     /**#@+
      * Constants for Data Object keys
      */
@@ -43,7 +41,7 @@ class SearchCriteria extends AbstractExtensibleObject
     const CURRENT_PAGE = 'current_page';
 
     /**
-     * Returns a list of filter groups
+     * Get a list of filter groups.
      *
      * @return \Magento\Framework\Service\V1\Data\Search\FilterGroup[]
      */
@@ -53,7 +51,7 @@ class SearchCriteria extends AbstractExtensibleObject
     }
 
     /**
-     * Get sort order
+     * Get sort order.
      *
      * @return \Magento\Framework\Service\V1\Data\SortOrder[]|null
      */
@@ -63,7 +61,7 @@ class SearchCriteria extends AbstractExtensibleObject
     }
 
     /**
-     * Get page size
+     * Get page size.
      *
      * @return int|null
      */
@@ -73,7 +71,7 @@ class SearchCriteria extends AbstractExtensibleObject
     }
 
     /**
-     * Get current page
+     * Get current page.
      *
      * @return int|null
      */
diff --git a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
index 6ad49625459841d131a8c6ecf2bb983ad4c90bf4..1eb8915cdd2663aa632dc9628e8bfac5abb0f59e 100644
--- a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
+++ b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
@@ -278,9 +278,13 @@ abstract class AbstractBlock extends \Magento\Framework\Object implements BlockI
      * Retrieve layout object
      *
      * @return \Magento\Framework\View\LayoutInterface
+     * @throws \Magento\Framework\Exception
      */
     public function getLayout()
     {
+        if (!$this->_layout) {
+            throw new \Magento\Framework\Exception('Layout must be initialized');
+        }
         return $this->_layout;
     }
 
@@ -292,12 +296,11 @@ abstract class AbstractBlock extends \Magento\Framework\Object implements BlockI
      */
     public function setNameInLayout($name)
     {
-        $layout = $this->getLayout();
-        if (!empty($this->_nameInLayout) && $layout) {
+        if (!empty($this->_nameInLayout) && $this->_layout) {
             if ($name === $this->_nameInLayout) {
                 return $this;
             }
-            $layout->renameElement($this->_nameInLayout, $name);
+            $this->_layout->renameElement($this->_nameInLayout, $name);
         }
         $this->_nameInLayout = $name;
         return $this;
diff --git a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
index a34bd55eeddfa6cc6db5f7e1d895824942682b0a..f45544c2306754eb8ce5f4aaa4f7d7da4dabb831 100644
--- a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
+++ b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php
@@ -23,7 +23,6 @@
  */
 namespace Magento\Framework\View\Element;
 
-
 use Magento\Framework\Object;
 use Magento\Framework\View\LayoutFactory;
 use Magento\Framework\View\LayoutInterface;
diff --git a/lib/internal/Magento/Framework/View/Layout.php b/lib/internal/Magento/Framework/View/Layout.php
index faaf5153434da247d6fb7333c8603ed2923783f4..298c97d2cd3673c21ffa36b59f57742322e35f42 100644
--- a/lib/internal/Magento/Framework/View/Layout.php
+++ b/lib/internal/Magento/Framework/View/Layout.php
@@ -24,6 +24,9 @@
 namespace Magento\Framework\View;
 
 use Magento\Framework\View\Layout\Element;
+use Magento\Framework\View\Layout\ScheduledStructure;
+use Magento\Framework\Event\ManagerInterface;
+use Magento\Framework\Message\ManagerInterface as MessageManagerInterface;
 
 /**
  * Layout model
@@ -37,41 +40,6 @@ use Magento\Framework\View\Layout\Element;
  */
 class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Framework\View\LayoutInterface
 {
-    /**
-     * Scheduled structure array index for name
-     */
-    const SCHEDULED_STRUCTURE_INDEX_NAME = 0;
-
-    /**
-     * Scheduled structure array index for alias
-     */
-    const SCHEDULED_STRUCTURE_INDEX_ALIAS = 1;
-
-    /**
-     * Scheduled structure array index for parent element name
-     */
-    const SCHEDULED_STRUCTURE_INDEX_PARENT_NAME = 2;
-
-    /**
-     * Scheduled structure array index for sibling element name
-     */
-    const SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME = 3;
-
-    /**
-     * Scheduled structure array index for is after parameter
-     */
-    const SCHEDULED_STRUCTURE_INDEX_IS_AFTER = 4;
-
-    /**
-     * Scheduled structure array index for layout element object
-     */
-    const SCHEDULED_STRUCTURE_INDEX_LAYOUT_ELEMENT = 5;
-
-    /**
-     * @var \Magento\Framework\View\DesignInterface
-     */
-    protected $_design;
-
     /**
      * Layout Update module
      *
@@ -79,36 +47,26 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     protected $_update;
 
-    /**
-     * @var \Magento\Framework\View\Element\UiComponentFactory
-     */
-    protected $_uiComponentFactory;
-
-    /**
-     * @var \Magento\Framework\View\Element\BlockFactory
-     */
-    protected $_blockFactory;
-
     /**
      * Blocks registry
      *
      * @var array
      */
-    protected $_blocks = array();
+    protected $_blocks = [];
 
     /**
      * Cache of elements to output during rendering
      *
      * @var array
      */
-    protected $_output = array();
+    protected $_output = [];
 
     /**
      * Helper blocks cache for this layout
      *
      * @var array
      */
-    protected $_helpers = array();
+    protected $sharedBlocks = [];
 
     /**
      * A variable for transporting output into observer during rendering
@@ -127,31 +85,14 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
     /**
      * Layout structure model
      *
-     * @var \Magento\Framework\Data\Structure
+     * @var Layout\Data\Structure
      */
-    protected $_structure;
-
-    /**
-     * An increment to generate names
-     *
-     * @var int
-     */
-    protected $_nameIncrement = array();
-
-    /**
-     * @var \Magento\Framework\View\Layout\Argument\Parser
-     */
-    protected $argumentParser;
-
-    /**
-     * @var \Magento\Framework\Data\Argument\InterpreterInterface
-     */
-    protected $argumentInterpreter;
+    protected $structure;
 
     /**
      * @var \Magento\Framework\View\Layout\ScheduledStructure
      */
-    protected $_scheduledStructure;
+    protected $scheduledStructure;
 
     /**
      * Renderers registered for particular name
@@ -167,28 +108,11 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     protected $_eventManager;
 
-    /**
-     * Application configuration
-     *
-     * @var \Magento\Framework\App\Config\ScopeConfigInterface
-     */
-    protected $_scopeConfig;
-
-    /**
-     * @var \Magento\Framework\Logger $logger
-     */
-    protected $_logger;
-
     /**
      * @var \Magento\Framework\View\Layout\ProcessorFactory
      */
     protected $_processorFactory;
 
-    /**
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
     /**
      * @var \Magento\Framework\Message\ManagerInterface
      */
@@ -199,20 +123,15 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     protected $isPrivate = false;
 
-    /**
-     * @var string
-     */
-    protected $scopeType;
-
     /**
      * @var \Magento\Framework\View\Design\Theme\ResolverInterface
      */
     protected $themeResolver;
 
     /**
-     * @var \Magento\Framework\App\ScopeResolverInterface
+     * @var Layout\Reader\Pool
      */
-    protected $scopeResolver;
+    protected $reader;
 
     /**
      * @var bool
@@ -220,77 +139,95 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
     protected $cacheable;
 
     /**
-     * @var \Magento\Framework\View\Page\Config\Reader
+     * @var \Magento\Framework\View\Page\Config\Structure
      */
-    protected $pageConfigReader;
+    protected $pageConfigStructure;
 
     /**
-     * @var \Magento\Framework\View\Page\Config\Generator
+     * @var \Magento\Framework\View\Layout\GeneratorPool
      */
-    protected $pageConfigGenerator;
+    protected $generatorPool;
 
     /**
-     * @param \Magento\Framework\View\Layout\ProcessorFactory $processorFactory
-     * @param \Magento\Framework\Logger $logger
+     * @var \Magento\Framework\View\Layout\BuilderInterface
+     */
+    protected $layoutBuilder;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\ProcessorFactory $processorFactory
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
-     * @param \Magento\Framework\View\Element\UiComponentFactory $uiElementFactory,
-     * @param \Magento\Framework\View\Element\BlockFactory $blockFactory
-     * @param \Magento\Framework\Data\Structure $structure
-     * @param \Magento\Framework\View\Layout\Argument\Parser $argumentParser
-     * @param \Magento\Framework\Data\Argument\InterpreterInterface $argumentInterpreter
-     * @param \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure
-     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
-     * @param \Magento\Framework\App\State $appState
+     * @param Layout\Data\Structure $structure
+     * @param ScheduledStructure $scheduledStructure
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     * @param \Magento\Framework\View\Design\Theme\ResolverInterface $themeResolver
-     * @param \Magento\Framework\App\ScopeResolverInterface $scopeResolver
-     * @param Page\Config\Reader $pageConfigReader
-     * @param Page\Config\Generator $pageConfigGenerator
-     * @param string $scopeType
+     * @param Design\Theme\ResolverInterface $themeResolver
+     * @param Page\Config\Structure $pageConfigStructure
+     * @param Layout\Reader\Pool $reader
+     * @param Layout\GeneratorPool $generatorPool
      * @param bool $cacheable
      */
     public function __construct(
-        \Magento\Framework\View\Layout\ProcessorFactory $processorFactory,
-        \Magento\Framework\Logger $logger,
-        \Magento\Framework\Event\ManagerInterface $eventManager,
-        \Magento\Framework\View\Element\UiComponentFactory $uiComponentFactory,
-        \Magento\Framework\View\Element\BlockFactory $blockFactory,
-        \Magento\Framework\Data\Structure $structure,
-        \Magento\Framework\View\Layout\Argument\Parser $argumentParser,
-        \Magento\Framework\Data\Argument\InterpreterInterface $argumentInterpreter,
-        \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Framework\App\State $appState,
-        \Magento\Framework\Message\ManagerInterface $messageManager,
-        \Magento\Framework\View\Design\Theme\ResolverInterface $themeResolver,
-        \Magento\Framework\App\ScopeResolverInterface $scopeResolver,
-        \Magento\Framework\View\Page\Config\Reader $pageConfigReader,
-        \Magento\Framework\View\Page\Config\Generator $pageConfigGenerator,
-        $scopeType,
+        Layout\ProcessorFactory $processorFactory,
+        ManagerInterface $eventManager,
+        Layout\Data\Structure $structure,
+        Layout\ScheduledStructure $scheduledStructure,
+        MessageManagerInterface $messageManager,
+        Design\Theme\ResolverInterface $themeResolver,
+        Page\Config\Structure $pageConfigStructure,
+        Layout\Reader\Pool $reader,
+        Layout\GeneratorPool $generatorPool,
         $cacheable = true
     ) {
-        $this->_eventManager = $eventManager;
-        $this->_scopeConfig = $scopeConfig;
-        $this->_uiComponentFactory = $uiComponentFactory;
-        $this->_uiComponentFactory->setLayout($this);
-        $this->_blockFactory = $blockFactory;
-        $this->_appState = $appState;
-        $this->_structure = $structure;
-        $this->argumentParser = $argumentParser;
-        $this->argumentInterpreter = $argumentInterpreter;
         $this->_elementClass = 'Magento\Framework\View\Layout\Element';
         $this->setXml(simplexml_load_string('<layout/>', $this->_elementClass));
         $this->_renderingOutput = new \Magento\Framework\Object;
-        $this->_scheduledStructure = $scheduledStructure;
+
         $this->_processorFactory = $processorFactory;
-        $this->_logger = $logger;
+        $this->_eventManager = $eventManager;
+        $this->structure = $structure;
+        $this->scheduledStructure = $scheduledStructure;
         $this->messageManager = $messageManager;
-        $this->scopeType = $scopeType;
         $this->themeResolver = $themeResolver;
-        $this->scopeResolver = $scopeResolver;
+        $this->pageConfigStructure = $pageConfigStructure;
+        $this->reader = $reader;
+        $this->generatorPool = $generatorPool;
         $this->cacheable = $cacheable;
-        $this->pageConfigReader = $pageConfigReader;
-        $this->pageConfigGenerator = $pageConfigGenerator;
+
+        $this->readerContext = new Layout\Reader\Context($this->scheduledStructure, $this->pageConfigStructure);
+        $this->generatorContext = new Layout\Generator\Context($this->structure, $this);
+    }
+
+    /**
+     * @param Layout\BuilderInterface $layoutBuilder
+     * @return $this
+     */
+    public function setBuilder(Layout\BuilderInterface $layoutBuilder)
+    {
+        $this->layoutBuilder = $layoutBuilder;
+        return $this;
+    }
+
+    /**
+     * Build layout blocks from generic layouts and/or page configurations
+     * @return void
+     */
+    protected function build()
+    {
+        if (!empty($this->layoutBuilder)) {
+            $this->layoutBuilder->build();
+        }
+    }
+
+    /**
+     * TODO Will be eliminated in MAGETWO-28359
+     *
+     * @deprecated
+     * @return void
+     */
+    public function publicBuild()
+    {
+        $this->build();
     }
 
     /**
@@ -332,699 +269,53 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
     {
         $xml = $this->getUpdate()->asSimplexml();
         $this->setXml($xml);
-        $this->_structure->importElements(array());
+        $this->structure->importElements(array());
         return $this;
     }
 
+    /**
+     * @return Layout\Reader\Context
+     */
+    public function getReaderContext()
+    {
+        return $this->readerContext;
+    }
+
     /**
      * Create structure of elements from the loaded XML configuration
      *
+     * @throws \Magento\Framework\Exception
      * @return void
-     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
      */
     public function generateElements()
     {
         \Magento\Framework\Profiler::start(__CLASS__ . '::' . __METHOD__);
         \Magento\Framework\Profiler::start('build_structure');
-
-        $this->_scheduledStructure->flushScheduledStructure();
-
-        $this->_readStructure($this->getNode());
-        $this->_addToOutputRootContainers($this->getNode());
-
-        while (false === $this->_scheduledStructure->isStructureEmpty()) {
-            $this->_scheduleElement(key($this->_scheduledStructure->getStructure()));
-        }
-        $this->_scheduledStructure->flushPaths();
-
-        foreach ($this->_scheduledStructure->getListToMove() as $elementToMove) {
-            $this->_moveElementInStructure($elementToMove);
-        }
-
-        foreach ($this->_scheduledStructure->getListToRemove() as $elementToRemove) {
-            $this->_removeElement($elementToRemove);
-        }
-
+        $this->reader->readStructure($this->readerContext, $this->getNode());
         \Magento\Framework\Profiler::stop('build_structure');
 
         \Magento\Framework\Profiler::start('generate_elements');
-
-        $this->pageConfigGenerator->process();
-
-        while (false === $this->_scheduledStructure->isElementsEmpty()) {
-            list($type, $node, $actions, $args, $attributes) = current($this->_scheduledStructure->getElements());
-            $elementName = key($this->_scheduledStructure->getElements());
-
-            if ($type == Element::TYPE_UI_COMPONENT) {
-                $this->_generateUiComponent($elementName);
-            } else if ($type == Element::TYPE_BLOCK) {
-                $this->_generateBlock($elementName);
-            } else {
-                $this->_generateContainer($elementName, (string)$node[Element::CONTAINER_OPT_LABEL], $attributes);
-                $this->_scheduledStructure->unsetElement($elementName);
-            }
-        }
+        $this->generatorPool->process($this->readerContext, $this->generatorContext);
         \Magento\Framework\Profiler::stop('generate_elements');
+        $this->addToOutputRootContainers();
         \Magento\Framework\Profiler::stop(__CLASS__ . '::' . __METHOD__);
     }
 
     /**
      * Add parent containers to output
      *
-     * @param Element $nodeList
      * @return $this
      */
-    protected function _addToOutputRootContainers(Element $nodeList)
-    {
-        /** @var $node Element */
-        foreach ($nodeList as $node) {
-            if ($node->getName() === Element::TYPE_CONTAINER) {
-                $this->addOutputElement($node->getElementName());
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * Remove scheduled element
-     *
-     * @param string $elementName
-     * @param bool $isChild
-     * @return $this
-     */
-    protected function _removeElement($elementName, $isChild = false)
-    {
-        $elementsToRemove = array_keys($this->_structure->getChildren($elementName));
-        $this->_scheduledStructure->unsetElement($elementName);
-
-        foreach ($elementsToRemove as $element) {
-            $this->_removeElement($element, true);
-        }
-
-        if (!$isChild) {
-            $this->_structure->unsetElement($elementName);
-            $this->_scheduledStructure->unsetElementFromListToRemove($elementName);
-        }
-        return $this;
-    }
-
-    /**
-     * Move element in scheduled structure
-     *
-     * @param string $element
-     * @return $this
-     */
-    protected function _moveElementInStructure($element)
-    {
-        list($destination, $siblingName, $isAfter, $alias) = $this->_scheduledStructure->getElementToMove($element);
-        if (!$alias && false === $this->_structure->getChildId($destination, $this->getElementAlias($element))) {
-            $alias = $this->getElementAlias($element);
-        }
-        $this->_structure->unsetChild($element, $alias)->setAsChild($element, $destination, $alias);
-        $this->reorderChild($destination, $element, $siblingName, $isAfter);
-        return $this;
-    }
-
-    /**
-     * Traverse through all elements of specified XML-node and schedule structural elements of it
-     *
-     * @param \Magento\Framework\View\Layout\Element $parent
-     * @return void
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
-     */
-    protected function _readStructure($parent)
-    {
-        foreach ($parent as $node) {
-            /** @var $node \Magento\Framework\View\Layout\Element */
-            switch ($node->getName()) {
-                case Element::TYPE_CONTAINER:
-                    $this->_scheduleStructure($node, $parent);
-                    $this->_mergeContainerAttributes($node);
-                    $this->_readStructure($node);
-                    break;
-
-                case Element::TYPE_BLOCK:
-                    $this->_scheduleStructure($node, $parent);
-                    $this->_readStructure($node);
-                    break;
-
-                case Element::TYPE_UI_COMPONENT:
-                    $this->_scheduleStructure($node, $parent);
-                    break;
-
-                case Element::TYPE_REFERENCE_CONTAINER:
-                    $this->_mergeContainerAttributes($node);
-                    $this->_readStructure($node);
-                    break;
-
-                case Element::TYPE_REFERENCE_BLOCK:
-                    $this->_readStructure($node);
-                    break;
-
-                case Element::TYPE_ACTION:
-                    $referenceName = $parent->getAttribute('name');
-                    $element = $this->_scheduledStructure->getStructureElement($referenceName, array());
-                    $element['actions'][] = array($node, $parent);
-                    $this->_scheduledStructure->setStructureElement($referenceName, $element);
-                    break;
-
-                case Element::TYPE_ARGUMENTS:
-                    $referenceName = $parent->getAttribute('name');
-                    $element = $this->_scheduledStructure->getStructureElement($referenceName, array());
-                    $args = $this->_parseArguments($node);
-                    $element['arguments'] = $this->_mergeArguments($element, $args);
-
-                    $this->_scheduledStructure->setStructureElement($referenceName, $element);
-                    break;
-
-                case Element::TYPE_MOVE:
-                    $this->_scheduleMove($node);
-                    break;
-
-                case Element::TYPE_REMOVE:
-                    $this->_scheduledStructure->setElementToRemoveList((string)$node->getAttribute('name'));
-                    break;
-
-                case Page\Config::ELEMENT_TYPE_HTML:
-                    $this->pageConfigReader->readHtml($node);
-                    break;
-
-                case Page\Config::ELEMENT_TYPE_HEAD:
-                    $this->pageConfigReader->readHead($node);
-                    break;
-
-                case Page\Config::ELEMENT_TYPE_BODY:
-                    $this->pageConfigReader->readBody($node);
-                    break;
-
-                default:
-                    break;
-            }
-        }
-    }
-
-    /**
-     * Merge Container attributes
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @return void
-     */
-    protected function _mergeContainerAttributes(\Magento\Framework\View\Layout\Element $node)
-    {
-        $containerName = $node->getAttribute('name');
-        $element = $this->_scheduledStructure->getStructureElement($containerName, array());
-
-        if (isset($element['attributes'])) {
-            $keys = array_keys($element['attributes']);
-            foreach ($keys as $key) {
-                if (isset($node[$key])) {
-                    $element['attributes'][$key] = (string)$node[$key];
-                }
-            }
-        } else {
-            $element['attributes'] = array(
-                Element::CONTAINER_OPT_HTML_TAG => (string)$node[Element::CONTAINER_OPT_HTML_TAG],
-                Element::CONTAINER_OPT_HTML_ID => (string)$node[Element::CONTAINER_OPT_HTML_ID],
-                Element::CONTAINER_OPT_HTML_CLASS => (string)$node[Element::CONTAINER_OPT_HTML_CLASS],
-                Element::CONTAINER_OPT_LABEL => (string)$node[Element::CONTAINER_OPT_LABEL]
-            );
-        }
-        $this->_scheduledStructure->setStructureElement($containerName, $element);
-    }
-
-    /**
-     * Merge element arguments
-     *
-     * @param array $element
-     * @param array $arguments
-     * @return array
-     */
-    protected function _mergeArguments(array $element, array $arguments)
+    protected function addToOutputRootContainers()
     {
-        $output = $arguments;
-        if (isset($element['arguments'])) {
-            $output = array_replace_recursive($element['arguments'], $arguments);
-        }
-        return $output;
-    }
-
-    /**
-     * Parse argument nodes and return their array representation
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @return array
-     */
-    protected function _parseArguments(\Magento\Framework\View\Layout\Element $node)
-    {
-        $nodeDom = dom_import_simplexml($node);
-        $result = array();
-        foreach ($nodeDom->childNodes as $argumentNode) {
-            if ($argumentNode instanceof \DOMElement && $argumentNode->nodeName == 'argument') {
-                $argumentName = $argumentNode->getAttribute('name');
-                $result[$argumentName] = $this->argumentParser->parse($argumentNode);
+        foreach ($this->structure->exportElements() as $name => $element) {
+            if ($element['type'] === Element::TYPE_CONTAINER && empty($element['parent'])) {
+                $this->addOutputElement($name);
             }
         }
-        return $result;
-    }
-
-    /**
-     * Compute and return argument values
-     *
-     * @param array $arguments
-     * @return array
-     */
-    protected function _evaluateArguments(array $arguments)
-    {
-        $result = array();
-        foreach ($arguments as $argumentName => $argumentData) {
-            $result[$argumentName] = $this->argumentInterpreter->evaluate($argumentData);
-        }
-        return $result;
-    }
-
-    /**
-     * Schedule structural changes for move directive
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @throws \Magento\Framework\Exception
-     * @return $this
-     */
-    protected function _scheduleMove($node)
-    {
-        $elementName = (string)$node->getAttribute('element');
-        $destination = (string)$node->getAttribute('destination');
-        $alias = (string)$node->getAttribute('as') ?: '';
-        if ($elementName && $destination) {
-            list($siblingName, $isAfter) = $this->_beforeAfterToSibling($node);
-            $this->_scheduledStructure->setElementToMove(
-                $elementName,
-                array($destination, $siblingName, $isAfter, $alias)
-            );
-        } else {
-            throw new \Magento\Framework\Exception('Element name and destination must be specified.');
-        }
         return $this;
     }
 
-    /**
-     * Populate queue for generating structural elements
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @param \Magento\Framework\View\Layout\Element $parent
-     * @return void
-     * @see _scheduleElement() where the _scheduledStructure is used
-     */
-    protected function _scheduleStructure($node, $parent)
-    {
-        if ((string)$node->getAttribute('name')) {
-            $name = (string)$node->getAttribute('name');
-        } else {
-            $name = $this->_generateAnonymousName($parent->getElementName() . '_schedule_block');
-            $node->addAttribute('name', $name);
-        }
-        $path = $name;
-
-        // type, alias, parentName, siblingName, isAfter, node
-        $row = array(
-            self::SCHEDULED_STRUCTURE_INDEX_NAME => $node->getName(),
-            self::SCHEDULED_STRUCTURE_INDEX_ALIAS => '',
-            self::SCHEDULED_STRUCTURE_INDEX_PARENT_NAME => '',
-            self::SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME => null,
-            self::SCHEDULED_STRUCTURE_INDEX_IS_AFTER => true,
-            self::SCHEDULED_STRUCTURE_INDEX_LAYOUT_ELEMENT => $node
-        );
-
-        $parentName = $parent->getElementName();
-        if ($parentName) {
-            $row[self::SCHEDULED_STRUCTURE_INDEX_ALIAS] = (string)$node->getAttribute('as');
-            $row[self::SCHEDULED_STRUCTURE_INDEX_PARENT_NAME] = $parentName;
-
-            list($row[self::SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME],
-                $row[self::SCHEDULED_STRUCTURE_INDEX_IS_AFTER]) = $this->_beforeAfterToSibling(
-                    $node
-                );
-
-            // materialized path for referencing nodes in the plain array of _scheduledStructure
-            if ($this->_scheduledStructure->hasPath($parentName)) {
-                $path = $this->_scheduledStructure->getPath($parentName) . '/' . $path;
-            }
-        }
-
-        $this->_overrideElementWorkaround($name, $path);
-        $this->_scheduledStructure->setPathElement($name, $path);
-        if ($this->_scheduledStructure->hasStructureElement($name)) {
-            // union of arrays
-            $this->_scheduledStructure->setStructureElement(
-                $name,
-                $row + $this->_scheduledStructure->getStructureElement($name)
-            );
-        } else {
-            $this->_scheduledStructure->setStructureElement($name, $row);
-        }
-    }
-
-    /**
-     * Analyze "before" and "after" information in the node and return sibling name and whether "after" or "before"
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @return array
-     */
-    protected function _beforeAfterToSibling($node)
-    {
-        $result = array(null, true);
-        if (isset($node['after'])) {
-            $result[0] = (string)$node['after'];
-        } elseif (isset($node['before'])) {
-            $result[0] = (string)$node['before'];
-            $result[1] = false;
-        }
-        return $result;
-    }
-
-    /**
-     * Destroy previous element with same name and all its children, if new element overrides it
-     *
-     * This is a workaround to handle situation, when an element emerges with name of element that already exists.
-     * In this case we destroy entire structure of the former element and replace with the new one.
-     *
-     * @param string $name
-     * @param string $path
-     * @return void
-     */
-    protected function _overrideElementWorkaround($name, $path)
-    {
-        if ($this->_scheduledStructure->hasStructureElement($name)) {
-            foreach ($this->_scheduledStructure->getPaths() as $potentialChild => $childPath) {
-                if (0 === strpos($childPath, "{$path}/")) {
-                    $this->_scheduledStructure->unsetPathElement($potentialChild);
-                    $this->_scheduledStructure->unsetStructureElement($potentialChild);
-                }
-            }
-        }
-    }
-
-    /**
-     * Process queue of structural elements and actually add them to structure, and schedule elements for generation
-     *
-     * The catch is to populate parents first, if they are not in the structure yet.
-     * Since layout updates could come in arbitrary order, a case is possible where an element is declared in reference,
-     * while referenced element itself is not declared yet.
-     *
-     * @param string $key in _scheduledStructure represent element name
-     * @return void
-     * @SuppressWarnings(PHPMD.NPathComplexity)
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
-     */
-    protected function _scheduleElement($key)
-    {
-        $row = $this->_scheduledStructure->getStructureElement($key);
-
-        if (!isset($row[self::SCHEDULED_STRUCTURE_INDEX_LAYOUT_ELEMENT])) {
-            $this->_logger->log("Broken reference: missing declaration of the element '{$key}'.", \Zend_Log::CRIT);
-            $this->_scheduledStructure->unsetPathElement($key);
-            $this->_scheduledStructure->unsetStructureElement($key);
-            return;
-        }
-        list($type, $alias, $parentName, $siblingName, $isAfter, $node) = $row;
-        $name = $this->_createStructuralElement($key, $type, $parentName . $alias);
-        if ($parentName) {
-            // recursively populate parent first
-            if ($this->_scheduledStructure->hasStructureElement($parentName)) {
-                $this->_scheduleElement($parentName, $this->_scheduledStructure->getStructureElement($parentName));
-            }
-            if ($this->_structure->hasElement($parentName)) {
-                try {
-                    $this->_structure->setAsChild($name, $parentName, $alias);
-                } catch (\Exception $e) {
-                    $this->_logger->log($e->getMessage());
-                }
-            } else {
-                $this->_logger->log(
-                    "Broken reference: the '{$name}' element cannot be added as child to '{$parentName}', " .
-                    'because the latter doesn\'t exist',
-                    \Zend_Log::CRIT
-                );
-            }
-        }
-        $this->_scheduledStructure->unsetStructureElement($key);
-        $data = array(
-            $type,
-            $node,
-            isset($row['actions']) ? $row['actions'] : array(),
-            isset($row['arguments']) ? $row['arguments'] : array(),
-            isset($row['attributes']) ? $row['attributes'] : array()
-        );
-        $this->_scheduledStructure->setElement($name, $data);
-
-        /**
-         * Some elements provide info "after" or "before" which sibling they are supposed to go
-         * Make sure to populate these siblings as well and order them correctly
-         */
-        if ($siblingName) {
-            if ($this->_scheduledStructure->hasStructureElement($siblingName)) {
-                $this->_scheduleElement($siblingName);
-            }
-            $this->reorderChild($parentName, $name, $siblingName, $isAfter);
-        }
-    }
-
-    /**
-     * Register an element in structure
-     *
-     * Will assign an "anonymous" name to the element, if provided with an empty name
-     *
-     * @param string $name
-     * @param string $type
-     * @param string $class
-     * @return string
-     */
-    protected function _createStructuralElement($name, $type, $class)
-    {
-        if (empty($name)) {
-            $name = $this->_generateAnonymousName($class);
-        }
-        $this->_structure->createElement($name, array('type' => $type));
-        return $name;
-    }
-
-    /**
-     * Generate anonymous element name for structure
-     *
-     * @param string $class
-     * @return string
-     */
-    protected function _generateAnonymousName($class)
-    {
-        $position = strpos($class, '\\Block\\');
-        $key = $position !== false ? substr($class, $position + 7) : $class;
-        $key = strtolower(trim($key, '_'));
-
-        if (!isset($this->_nameIncrement[$key])) {
-            $this->_nameIncrement[$key] = 0;
-        }
-
-        if ($this->_nameIncrement[$key] == 0 && !$this->_structure->hasElement($key)) {
-            $this->_nameIncrement[$key]++;
-            return $key;
-        }
-
-        do {
-            $name = $key . '_' . $this->_nameIncrement[$key]++;
-        } while ($this->_structure->hasElement($name));
-
-        return $name;
-    }
-
-    /**
-     * Creates block object based on xml node data and add it to the layout
-     *
-     * @param string $elementName
-     * @return \Magento\Framework\View\Element\AbstractBlock|void
-     * @throws \Magento\Framework\Exception
-     */
-    protected function _generateBlock($elementName)
-    {
-        list($type, $node, $actions, $args) = $this->_scheduledStructure->getElement($elementName);
-        if ($type !== Element::TYPE_BLOCK) {
-            throw new \Magento\Framework\Exception("Unexpected element type specified for generating block: {$type}.");
-        }
-
-
-        $configPath = (string)$node->getAttribute('ifconfig');
-        if (!empty($configPath)
-            && !$this->_scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
-        ) {
-            $this->_scheduledStructure->unsetElement($elementName);
-            return;
-        }
-
-        $group = (string)$node->getAttribute('group');
-        if (!empty($group)) {
-            $this->_structure->addToParentGroup($elementName, $group);
-        }
-
-        // create block
-        $className = (string)$node['class'];
-
-        $arguments = $this->_evaluateArguments($args);
-
-        $block = $this->_createBlock($className, $elementName, array('data' => $arguments));
-
-        if (!empty($node['template'])) {
-            $templateFileName = (string)$node['template'];
-            $block->setTemplate($templateFileName);
-        }
-
-        if (!empty($node['ttl'])) {
-            $ttl = (int)$node['ttl'];
-            $block->setTtl($ttl);
-        }
-
-        $this->_scheduledStructure->unsetElement($elementName);
-
-        // execute block methods
-        foreach ($actions as $action) {
-            list($actionNode, $parent) = $action;
-            $this->_generateAction($actionNode, $parent);
-        }
-
-        return $block;
-    }
-
-    /**
-     * Creates UI Component object based on xml node data and add it to the layout
-     *
-     * @param string $elementName
-     * @return \Magento\Framework\View\Element\AbstractBlock|void
-     * @throws \Magento\Framework\Exception
-     *
-     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
-     */
-    protected function _generateUiComponent($elementName)
-    {
-        list($type, $node, $actions, $args) = $this->_scheduledStructure->getElement($elementName);
-        if ($type !== Element::TYPE_UI_COMPONENT) {
-            throw new \Magento\Framework\Exception(
-                "Unexpected element type specified for generating UI Component: {$type}."
-            );
-        }
-
-        $configPath = (string)$node->getAttribute('ifconfig');
-        if (!empty($configPath)
-            && !$this->_scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
-        ) {
-            $this->_scheduledStructure->unsetElement($elementName);
-            return;
-        }
-
-        $group = (string)$node->getAttribute('group');
-        if (!empty($group)) {
-            $this->_structure->addToParentGroup($elementName, $group);
-        }
-
-        $arguments = $this->_evaluateArguments($args);
-
-        // create Ui Component Object
-        $componentName = (string)$node['component'];
-
-        $uiComponent = $this->_uiComponentFactory->createUiComponent($componentName, $elementName, $arguments);
-
-        $this->_blocks[$elementName] = $uiComponent;
-
-        $this->_scheduledStructure->unsetElement($elementName);
-
-        return $uiComponent;
-    }
-
-    /**
-     * Set container-specific data to structure element
-     *
-     * @param string $name
-     * @param string $label
-     * @param array $options
-     * @return void
-     * @throws \Magento\Framework\Exception If any of arguments are invalid
-     */
-    protected function _generateContainer($name, $label, array $options)
-    {
-        $this->_structure->setAttribute($name, Element::CONTAINER_OPT_LABEL, $label);
-        unset($options[Element::CONTAINER_OPT_LABEL]);
-        unset($options['type']);
-        $allowedTags = array(
-            'dd',
-            'div',
-            'dl',
-            'fieldset',
-            'header',
-            'footer',
-            'hgroup',
-            'ol',
-            'p',
-            'section',
-            'table',
-            'tfoot',
-            'ul'
-        );
-        if (!empty($options[Element::CONTAINER_OPT_HTML_TAG]) && !in_array(
-            $options[Element::CONTAINER_OPT_HTML_TAG],
-            $allowedTags
-        )
-        ) {
-            throw new \Magento\Framework\Exception(
-                __(
-                    'Html tag "%1" is forbidden for usage in containers. Consider to use one of the allowed: %2.',
-                    $options[Element::CONTAINER_OPT_HTML_TAG],
-                    implode(', ', $allowedTags)
-                )
-            );
-        }
-        if (empty($options[Element::CONTAINER_OPT_HTML_TAG]) && (!empty($options[Element::CONTAINER_OPT_HTML_ID]) ||
-            !empty($options[Element::CONTAINER_OPT_HTML_CLASS]))
-        ) {
-            throw new \Magento\Framework\Exception(
-                'HTML ID or class will not have effect, if HTML tag is not specified.'
-            );
-        }
-        foreach ($options as $key => $value) {
-            $this->_structure->setAttribute($name, $key, $value);
-        }
-    }
-
-    /**
-     * Run action defined in layout update
-     *
-     * @param \Magento\Framework\View\Layout\Element $node
-     * @param \Magento\Framework\View\Layout\Element $parent
-     * @return void
-     */
-    protected function _generateAction($node, $parent)
-    {
-        $configPath = $node->getAttribute('ifconfig');
-        if ($configPath
-            && !$this->_scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
-        ) {
-            return;
-        }
-
-        $method = $node->getAttribute('method');
-        $parentName = $node->getAttribute('block');
-        if (empty($parentName)) {
-            $parentName = $parent->getElementName();
-        }
-
-        $profilerKey = 'BLOCK_ACTION:' . $parentName . '>' . $method;
-        \Magento\Framework\Profiler::start($profilerKey);
-
-        $block = $this->getBlock($parentName);
-        if (!empty($block)) {
-            $args = $this->_parseArguments($node);
-            $args = $this->_evaluateArguments($args);
-            call_user_func_array(array($block, $method), $args);
-        }
-
-        \Magento\Framework\Profiler::stop($profilerKey);
-    }
-
     /**
      * Get child block if exists
      *
@@ -1034,7 +325,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getChildBlock($parentName, $alias)
     {
-        $name = $this->_structure->getChildId($parentName, $alias);
+        $this->build();
+        $name = $this->structure->getChildId($parentName, $alias);
         if ($this->isBlock($name)) {
             return $this->getBlock($name);
         }
@@ -1051,7 +343,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function setChild($parentName, $elementName, $alias)
     {
-        $this->_structure->setAsChild($elementName, $parentName, $alias);
+        $this->build();
+        $this->structure->setAsChild($elementName, $parentName, $alias);
         return $this;
     }
 
@@ -1070,51 +363,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function reorderChild($parentName, $childName, $offsetOrSibling, $after = true)
     {
-        if (is_numeric($offsetOrSibling)) {
-            $offset = (int)abs($offsetOrSibling) * ($after ? 1 : -1);
-            $this->_structure->reorderChild($parentName, $childName, $offset);
-        } elseif (null === $offsetOrSibling) {
-            $this->_structure->reorderChild($parentName, $childName, null);
-        } else {
-            $children = $this->getChildNames($parentName);
-            if ($this->_structure->getChildId($parentName, $offsetOrSibling) !== false) {
-                $offsetOrSibling = $this->_structure->getChildId($parentName, $offsetOrSibling);
-            }
-            $sibling = $this->_filterSearchMinus($offsetOrSibling, $children, $after);
-            if ($childName !== $sibling) {
-                $siblingParentName = $this->_structure->getParentId($sibling);
-                if ($parentName !== $siblingParentName) {
-                    $this->_logger->log(
-                        "Broken reference: the '{$childName}' tries to reorder itself towards '{$sibling}', but " .
-                        "their parents are different: '{$parentName}' and '{$siblingParentName}' respectively.",
-                        \Zend_Log::CRIT
-                    );
-                    return;
-                }
-                $this->_structure->reorderToSibling($parentName, $childName, $sibling, $after ? 1 : -1);
-            }
-        }
-    }
-
-    /**
-     * Search for an array element using needle, but needle may be '-', which means "first" or "last" element
-     *
-     * Returns first or last element in the haystack, or the $needle argument
-     *
-     * @param string $needle
-     * @param array $haystack
-     * @param bool $isLast
-     * @return string
-     */
-    protected function _filterSearchMinus($needle, array $haystack, $isLast)
-    {
-        if ('-' === $needle) {
-            if ($isLast) {
-                return array_pop($haystack);
-            }
-            return array_shift($haystack);
-        }
-        return $needle;
+        $this->build();
+        $this->structure->reorderChildElement($parentName, $childName, $offsetOrSibling, $after);
     }
 
     /**
@@ -1126,7 +376,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function unsetChild($parentName, $alias)
     {
-        $this->_structure->unsetChild($parentName, $alias);
+        $this->build();
+        $this->structure->unsetChild($parentName, $alias);
         return $this;
     }
 
@@ -1138,7 +389,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getChildNames($parentName)
     {
-        return array_keys($this->_structure->getChildren($parentName));
+        $this->build();
+        return array_keys($this->structure->getChildren($parentName));
     }
 
     /**
@@ -1151,8 +403,9 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getChildBlocks($parentName)
     {
+        $this->build();
         $blocks = array();
-        foreach ($this->_structure->getChildren($parentName) as $childName => $alias) {
+        foreach ($this->structure->getChildren($parentName) as $childName => $alias) {
             $block = $this->getBlock($childName);
             if ($block) {
                 $blocks[$alias] = $block;
@@ -1170,7 +423,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getChildName($parentName, $alias)
     {
-        return $this->_structure->getChildId($parentName, $alias);
+        $this->build();
+        return $this->structure->getChildId($parentName, $alias);
     }
 
     /**
@@ -1182,10 +436,11 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function renderElement($name, $useCache = true)
     {
+        $this->build();
         if (!isset($this->_renderElementCache[$name]) || !$useCache) {
             if ($this->isUiComponent($name)) {
                 $result = $this->_renderUiComponent($name);
-            } else if ($this->isBlock($name)) {
+            } elseif ($this->isBlock($name)) {
                 $result = $this->_renderBlock($name);
             } else {
                 $result = $this->_renderContainer($name);
@@ -1239,21 +494,21 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
         foreach ($children as $child) {
             $html .= $this->renderElement($child);
         }
-        if ($html == '' || !$this->_structure->getAttribute($name, Element::CONTAINER_OPT_HTML_TAG)) {
+        if ($html == '' || !$this->structure->getAttribute($name, Element::CONTAINER_OPT_HTML_TAG)) {
             return $html;
         }
 
-        $htmlId = $this->_structure->getAttribute($name, Element::CONTAINER_OPT_HTML_ID);
+        $htmlId = $this->structure->getAttribute($name, Element::CONTAINER_OPT_HTML_ID);
         if ($htmlId) {
             $htmlId = ' id="' . $htmlId . '"';
         }
 
-        $htmlClass = $this->_structure->getAttribute($name, Element::CONTAINER_OPT_HTML_CLASS);
+        $htmlClass = $this->structure->getAttribute($name, Element::CONTAINER_OPT_HTML_CLASS);
         if ($htmlClass) {
             $htmlClass = ' class="' . $htmlClass . '"';
         }
 
-        $htmlTag = $this->_structure->getAttribute($name, Element::CONTAINER_OPT_HTML_TAG);
+        $htmlTag = $this->structure->getAttribute($name, Element::CONTAINER_OPT_HTML_TAG);
 
         $html = sprintf('<%1$s%2$s%3$s>%4$s</%1$s>', $htmlTag, $htmlId, $htmlClass, $html);
 
@@ -1269,7 +524,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function addToParentGroup($blockName, $parentGroupName)
     {
-        return $this->_structure->addToParentGroup($blockName, $parentGroupName);
+        $this->build();
+        return $this->structure->addToParentGroup($blockName, $parentGroupName);
     }
 
     /**
@@ -1281,7 +537,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getGroupChildNames($blockName, $groupName)
     {
-        return $this->_structure->getGroupChildNames($blockName, $groupName);
+        $this->build();
+        return $this->structure->getGroupChildNames($blockName, $groupName);
     }
 
     /**
@@ -1292,7 +549,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function hasElement($name)
     {
-        return $this->_structure->hasElement($name);
+        $this->build();
+        return $this->structure->hasElement($name);
     }
 
     /**
@@ -1304,7 +562,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getElementProperty($name, $attribute)
     {
-        return $this->_structure->getAttribute($name, $attribute);
+        $this->build();
+        return $this->structure->getAttribute($name, $attribute);
     }
 
     /**
@@ -1315,8 +574,9 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function isBlock($name)
     {
-        if ($this->_structure->hasElement($name)) {
-            return Element::TYPE_BLOCK === $this->_structure->getAttribute($name, 'type');
+        $this->build();
+        if ($this->structure->hasElement($name)) {
+            return Element::TYPE_BLOCK === $this->structure->getAttribute($name, 'type');
         }
         return false;
     }
@@ -1329,8 +589,9 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function isUiComponent($name)
     {
-        if ($this->_structure->hasElement($name)) {
-            return Element::TYPE_UI_COMPONENT === $this->_structure->getAttribute($name, 'type');
+        $this->build();
+        if ($this->structure->hasElement($name)) {
+            return Element::TYPE_UI_COMPONENT === $this->structure->getAttribute($name, 'type');
         }
         return false;
     }
@@ -1343,8 +604,9 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function isContainer($name)
     {
-        if ($this->_structure->hasElement($name)) {
-            return Element::TYPE_CONTAINER === $this->_structure->getAttribute($name, 'type');
+        $this->build();
+        if ($this->structure->hasElement($name)) {
+            return Element::TYPE_CONTAINER === $this->structure->getAttribute($name, 'type');
         }
         return false;
     }
@@ -1357,7 +619,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function isManipulationAllowed($name)
     {
-        $parentName = $this->_structure->getParentId($name);
+        $this->build();
+        $parentName = $this->structure->getParentId($name);
         return $parentName && $this->isContainer($parentName);
     }
 
@@ -1382,50 +645,47 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function unsetElement($name)
     {
+        $this->build();
         if (isset($this->_blocks[$name])) {
             $this->_blocks[$name] = null;
             unset($this->_blocks[$name]);
         }
-        $this->_structure->unsetElement($name);
-
+        $this->structure->unsetElement($name);
         return $this;
     }
 
     /**
      * Block Factory
      *
-     * @param  string $type
-     * @param  string $name
-     * @param  array $attributes
+     * @param string $type
+     * @param string $name
+     * @param array $arguments
      * @return \Magento\Framework\View\Element\AbstractBlock
      */
-    public function createBlock($type, $name = '', array $attributes = array())
+    public function createBlock($type, $name = '', array $arguments = array())
     {
-        $name = $this->_createStructuralElement($name, Element::TYPE_BLOCK, $type);
-        $block = $this->_createBlock($type, $name, $attributes);
+        $this->build();
+        $name = $this->structure->createStructuralElement($name, Element::TYPE_BLOCK, $type);
+        $block = $this->_createBlock($type, $name, $arguments);
+        $block->setLayout($this);
         return $block;
     }
 
     /**
      * Create block and add to layout
      *
-     * @param string|\Magento\Framework\View\Element\AbstractBlock $block
+     * @param string $type
      * @param string $name
-     * @param array $attributes
+     * @param array $arguments
      * @return \Magento\Framework\View\Element\AbstractBlock
      */
-    protected function _createBlock($block, $name, array $attributes = array())
+    protected function _createBlock($type, $name, array $arguments = array())
     {
-        $block = $this->_getBlockInstance($block, $attributes);
-
-        $block->setType(get_class($block));
-        $block->setNameInLayout($name);
-        $block->addData(isset($attributes['data']) ? $attributes['data'] : array());
-        $block->setLayout($this);
-
-        $this->_blocks[$name] = $block;
-        $this->_eventManager->dispatch('core_layout_block_create_after', array('block' => $block));
-        return $this->_blocks[$name];
+        /** @var \Magento\Framework\View\Layout\Generator\Block $blockGenerator */
+        $blockGenerator = $this->generatorPool->getGenerator(Layout\Generator\Block::TYPE);
+        $block = $blockGenerator->createBlock($type, $name, $arguments);
+        $this->setBlock($name, $block);
+        return $block;
     }
 
     /**
@@ -1439,18 +699,24 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function addBlock($block, $name = '', $parent = '', $alias = '')
     {
-        if (empty($name) && $block instanceof \Magento\Framework\View\Element\AbstractBlock) {
-            $name = $block->getNameInLayout();
+        $this->build();
+        if ($block instanceof \Magento\Framework\View\Element\AbstractBlock) {
+            $name = $name ?: $block->getNameInLayout();
+        } else {
+            $block = $this->_createBlock($block, $name);
         }
-        $name = $this->_createStructuralElement(
+        $name = $this->structure->createStructuralElement(
             $name,
             Element::TYPE_BLOCK,
-            $name ?: (is_object($block) ? get_class($block) : $block)
+            $name ?: get_class($block)
         );
+        $this->setBlock($name, $block);
+        $block->setNameInLayout($name);
         if ($parent) {
-            $this->_structure->setAsChild($name, $parent, $alias);
+            $this->structure->setAsChild($name, $parent, $alias);
         }
-        return $this->_createBlock($block, $name);
+        $block->setLayout($this);
+        return $block;
     }
 
     /**
@@ -1465,10 +731,14 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function addContainer($name, $label, array $options = array(), $parent = '', $alias = '')
     {
-        $name = $this->_createStructuralElement($name, Element::TYPE_CONTAINER, $alias);
-        $this->_generateContainer($name, $label, $options);
+        $this->build();
+        $name = $this->structure->createStructuralElement($name, Element::TYPE_CONTAINER, $alias);
+        $options[Layout\Element::CONTAINER_OPT_LABEL] = $label;
+        /** @var \Magento\Framework\View\Layout\Generator\Container $containerGenerator */
+        $containerGenerator = $this->generatorPool->getGenerator(Layout\Generator\Container::TYPE);
+        $containerGenerator->generateContainer($this->structure, $name, $options);
         if ($parent) {
-            $this->_structure->setAsChild($name, $parent, $alias);
+            $this->structure->setAsChild($name, $parent, $alias);
         }
     }
 
@@ -1481,40 +751,18 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function renameElement($oldName, $newName)
     {
+        $this->build();
         if (isset($this->_blocks[$oldName])) {
             $block = $this->_blocks[$oldName];
             $this->_blocks[$oldName] = null;
             unset($this->_blocks[$oldName]);
             $this->_blocks[$newName] = $block;
         }
-        $this->_structure->renameElement($oldName, $newName);
+        $this->structure->renameElement($oldName, $newName);
 
         return $this;
     }
 
-    /**
-     * Create block object instance based on block type
-     *
-     * @param string|\Magento\Framework\View\Element\AbstractBlock $block
-     * @param array $attributes
-     * @throws \Magento\Framework\Model\Exception
-     * @return \Magento\Framework\View\Element\AbstractBlock
-     */
-    protected function _getBlockInstance($block, array $attributes = array())
-    {
-        if ($block && is_string($block)) {
-            try {
-                $block = $this->_blockFactory->createBlock($block, $attributes);
-            } catch (\ReflectionException $e) {
-                $this->_logger->log($e->getMessage());
-            }
-        }
-        if (!$block instanceof \Magento\Framework\View\Element\AbstractBlock) {
-            throw new \Magento\Framework\Model\Exception(__('Invalid block type: %1', $block));
-        }
-        return $block;
-    }
-
     /**
      * Retrieve all blocks from registry as array
      *
@@ -1522,6 +770,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getAllBlocks()
     {
+        $this->build();
         return $this->_blocks;
     }
 
@@ -1533,9 +782,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getBlock($name)
     {
-        if ($this->_scheduledStructure->hasElement($name)) {
-            $this->_generateBlock($name);
-        }
+        $this->build();
         if (isset($this->_blocks[$name])) {
             return $this->_blocks[$name];
         } else {
@@ -1551,14 +798,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getUiComponent($name)
     {
-        if ($this->_scheduledStructure->hasElement($name)) {
-            $this->_generateUiComponent($name);
-        }
-        if (isset($this->_blocks[$name])) {
-            return $this->_blocks[$name];
-        } else {
-            return false;
-        }
+        return $this->getBlock($name);
     }
 
     /**
@@ -1569,7 +809,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getParentName($childName)
     {
-        return $this->_structure->getParentId($childName);
+        $this->build();
+        return $this->structure->getParentId($childName);
     }
 
     /**
@@ -1580,7 +821,8 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getElementAlias($name)
     {
-        return $this->_structure->getChildAlias($this->_structure->getParentId($name), $name);
+        $this->build();
+        return $this->structure->getChildAlias($this->structure->getParentId($name), $name);
     }
 
     /**
@@ -1616,11 +858,11 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getOutput()
     {
+        $this->build();
         $out = '';
         foreach ($this->_output as $name) {
             $out .= $this->renderElement($name);
         }
-
         return $out;
     }
 
@@ -1631,6 +873,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function getMessagesBlock()
     {
+        $this->build();
         $block = $this->getBlock('messages');
         if ($block) {
             return $block;
@@ -1643,34 +886,17 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      *
      * @param string $type
      * @return \Magento\Framework\App\Helper\AbstractHelper
-     * @throws \Magento\Framework\Model\Exception
+     * @throws \Magento\Framework\Exception
      */
     public function getBlockSingleton($type)
     {
-        if (!isset($this->_helpers[$type])) {
-            if (!$type) {
-                throw new \Magento\Framework\Model\Exception('Invalid block type');
-            }
-
-            $helper = $this->_blockFactory->createBlock($type);
-            if ($helper) {
-                if ($helper instanceof \Magento\Framework\View\Element\AbstractBlock) {
-                    $helper->setLayout($this);
-                }
-                $this->_helpers[$type] = $helper;
-            }
+        if (empty($type)) {
+            throw new \Magento\Framework\Exception('Invalid block type');
         }
-        return $this->_helpers[$type];
-    }
-
-    /**
-     * Retrieve block factory
-     *
-     * @return \Magento\Framework\View\Element\BlockFactory
-     */
-    public function getBlockFactory()
-    {
-        return $this->_blockFactory;
+        if (!isset($this->sharedBlocks[$type])) {
+            $this->sharedBlocks[$type] = $this->createBlock($type);
+        }
+        return $this->sharedBlocks[$type];
     }
 
     /**
@@ -1721,6 +947,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function executeRenderer($namespace, $staticType, $dynamicType, $data = array())
     {
+        $this->build();
         if ($options = $this->getRendererOptions($namespace, $staticType, $dynamicType)) {
             $dictionary = array();
             /** @var $block \Magento\Framework\View\Element\Template */
@@ -1743,6 +970,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function initMessages($messageGroups = array())
     {
+        $this->build();
         foreach ($this->_prepareMessageGroup($messageGroups) as $group) {
             $block = $this->getMessagesBlock();
             $block->addMessages($this->messageManager->getMessages(true, $group));
@@ -1773,6 +1001,7 @@ class Layout extends \Magento\Framework\Simplexml\Config implements \Magento\Fra
      */
     public function isCacheable()
     {
+        $this->build();
         $cacheableXml = !(bool)count($this->_xml->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
         return $this->cacheable && $cacheableXml;
     }
diff --git a/lib/internal/Magento/Framework/View/Layout/Builder.php b/lib/internal/Magento/Framework/View/Layout/Builder.php
new file mode 100644
index 0000000000000000000000000000000000000000..73ea0617d290f4fde03c40a9fb138ada2ec08f59
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Builder.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+use Magento\Framework\App;
+use Magento\Framework\View;
+use Magento\Framework\Event;
+use Magento\Framework\Profiler;
+
+/**
+ * Class Builder
+ */
+class Builder implements BuilderInterface
+{
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface
+     */
+    protected $eventManager;
+
+    /**
+     * @var \Magento\Framework\App\Request\Http
+     */
+    protected $request;
+
+    /**
+     * @var \Magento\Framework\View\LayoutInterface
+     */
+    protected $layout;
+
+    /**
+     * @var bool
+     */
+    protected $isBuilt = false;
+
+    /**
+     * @param View\LayoutInterface $layout
+     * @param App\Request\Http $request
+     * @param Event\ManagerInterface $eventManager
+     */
+    public function __construct(
+        View\LayoutInterface $layout,
+        App\Request\Http $request,
+        Event\ManagerInterface $eventManager
+    ) {
+        $this->layout = $layout;
+        $this->request = $request;
+        $this->eventManager = $eventManager;
+        $this->layout->setBuilder($this);
+    }
+
+    /**
+     * @return \Magento\Framework\View\LayoutInterface
+     */
+    public function build()
+    {
+        if (!$this->isBuilt) {
+            $this->isBuilt = true;
+            $this->loadLayoutUpdates();
+            $this->generateLayoutXml();
+            $this->generateLayoutBlocks();
+        }
+        return $this->layout;
+    }
+
+    /**
+     * Load layout updates
+     *
+     * @return $this
+     */
+    protected function loadLayoutUpdates()
+    {
+        Profiler::start('LAYOUT');
+        /* dispatch event for adding handles to layout update */
+        $this->eventManager->dispatch(
+            'controller_action_layout_load_before',
+            array('full_action_name' => $this->request->getFullActionName(), 'layout' => $this->layout)
+        );
+        Profiler::start('layout_load');
+
+        /* load layout updates by specified handles */
+        $this->layout->getUpdate()->load();
+
+        Profiler::stop('layout_load');
+        Profiler::stop('LAYOUT');
+        return $this;
+    }
+
+    /**
+     * Generate layout xml
+     *
+     * @return $this
+     */
+    protected function generateLayoutXml()
+    {
+        Profiler::start('LAYOUT');
+        Profiler::start('layout_generate_xml');
+
+        /* generate xml from collected text updates */
+        $this->layout->generateXml();
+
+        Profiler::stop('layout_generate_xml');
+        Profiler::stop('LAYOUT');
+        return $this;
+    }
+
+    /**
+     * Generate layout blocks
+     *
+     * TODO: Restore action flag functionality to have ability to turn off event dispatching
+     *
+     * @return $this
+     */
+    protected function generateLayoutBlocks()
+    {
+        $this->beforeGenerateBlock();
+
+        Profiler::start('LAYOUT');
+        /* dispatch event for adding xml layout elements */
+        $this->eventManager->dispatch(
+            'controller_action_layout_generate_blocks_before',
+            array('full_action_name' => $this->request->getFullActionName(), 'layout' => $this->layout)
+        );
+        Profiler::start('layout_generate_blocks');
+
+        /* generate blocks from xml layout */
+        $this->layout->generateElements();
+
+        Profiler::stop('layout_generate_blocks');
+        $this->eventManager->dispatch(
+            'controller_action_layout_generate_blocks_after',
+            array('full_action_name' => $this->request->getFullActionName(), 'layout' => $this->layout)
+        );
+        Profiler::stop('LAYOUT');
+
+        $this->afterGenerateBlock();
+
+        return $this;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function beforeGenerateBlock()
+    {
+        return $this;
+    }
+
+    /**
+     * @return $this
+     */
+    protected function afterGenerateBlock()
+    {
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/BuilderFactory.php b/lib/internal/Magento/Framework/View/Layout/BuilderFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..1be7e95b0f188147cbbbfd44de0e764fac749a41
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/BuilderFactory.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+use Magento\Framework\ObjectManager;
+use Magento\Framework\View;
+
+/**
+ * Class BuilderFactory
+ */
+class BuilderFactory
+{
+    /**#@+
+     * Allowed builder types
+     */
+    const TYPE_LAYOUT = 'layout';
+    const TYPE_PAGE   = 'page';
+    /**#@-*/
+
+    /**
+     * Map of types which are references to classes
+     *
+     * @var array
+     */
+    protected $typeMap = [
+        self::TYPE_LAYOUT => 'Magento\Framework\View\Layout\Builder',
+        self::TYPE_PAGE   => 'Magento\Framework\View\Page\Builder',
+    ];
+
+    /**
+     * @var ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManager $objectManager
+     * @param array $typeMap
+     */
+    public function __construct(
+        ObjectManager $objectManager,
+        array $typeMap = []
+    ) {
+        $this->objectManager = $objectManager;
+        $this->mergeTypes($typeMap);
+    }
+
+    /**
+     * Add or override builder types
+     *
+     * @param array $typeMap
+     * @return void
+     */
+    protected function mergeTypes(array $typeMap)
+    {
+        foreach ($typeMap as $typeInfo) {
+            if (isset($typeInfo['type']) && isset($typeInfo['class'])) {
+                $this->typeMap[$typeInfo['type']] = $typeInfo['class'];
+            }
+        }
+    }
+
+    /**
+     * Create builder instance
+     *
+     * @param string $type
+     * @param array $arguments
+     * @throws \InvalidArgumentException
+     * @return BuilderInterface
+     */
+    public function create($type, array $arguments)
+    {
+        if (empty($this->typeMap[$type])) {
+            throw new \InvalidArgumentException('"' . $type . ': isn\'t allowed');
+        }
+
+        $builderInstance = $this->objectManager->create($this->typeMap[$type], $arguments);
+        if (!$builderInstance instanceof BuilderInterface) {
+            throw new \InvalidArgumentException(get_class($builderInstance) . ' isn\'t instance of BuilderInterface');
+        }
+        return $builderInstance;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php b/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..aa5d78ca25b79902b6905f1e6c344b4b9471ec2b
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+/**
+ * Interface BuilderInterface
+ */
+interface BuilderInterface
+{
+    /**
+     * @return \Magento\Framework\View\LayoutInterface
+     */
+    public function build();
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Data/Structure.php b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php
new file mode 100644
index 0000000000000000000000000000000000000000..da6e2076cd2ddc9f8f31a016257000cf15dc37a4
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php
@@ -0,0 +1,143 @@
+<?php
+/**
+ * An associative data structure, that features "nested set" parent-child relations
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Data;
+
+use Magento\Framework\Data\Structure as DataStructure;
+
+class Structure extends DataStructure
+{
+    /**
+     * Name increment counter
+     *
+     * @var array
+     */
+    protected $_nameIncrement = [];
+
+    /**
+     * @var \Magento\Framework\Logger
+     */
+    protected $logger;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Framework\Logger $logger
+     * @param array $elements
+     */
+    public function __construct(
+        \Magento\Framework\Logger $logger,
+        array $elements = null
+    ) {
+        $this->logger = $logger;
+        parent::__construct($elements);
+    }
+
+    /**
+     * Register an element in structure
+     *
+     * Will assign an "anonymous" name to the element, if provided with an empty name
+     *
+     * @param string $name
+     * @param string $type
+     * @param string $class
+     * @return string
+     */
+    public function createStructuralElement($name, $type, $class)
+    {
+        if (empty($name)) {
+            $name = $this->_generateAnonymousName($class);
+        }
+        $this->createElement($name, array('type' => $type));
+        return $name;
+    }
+
+    /**
+     * Generate anonymous element name for structure
+     *
+     * @param string $class
+     * @return string
+     */
+    protected function _generateAnonymousName($class)
+    {
+        $position = strpos($class, '\\Block\\');
+        $key = $position !== false ? substr($class, $position + 7) : $class;
+        $key = strtolower(trim($key, '_'));
+
+        if (!isset($this->_nameIncrement[$key])) {
+            $this->_nameIncrement[$key] = 0;
+        }
+
+        do {
+            $name = $key . '_' . $this->_nameIncrement[$key]++;
+        } while ($this->hasElement($name));
+
+        return $name;
+    }
+
+    /**
+     * Reorder a child of a specified element
+     *
+     * If $offsetOrSibling is null, it will put the element to the end
+     * If $offsetOrSibling is numeric (integer) value, it will put the element after/before specified position
+     * Otherwise -- after/before specified sibling
+     *
+     * @param string $parentName
+     * @param string $childName
+     * @param string|int|null $offsetOrSibling
+     * @param bool $after
+     * @return void
+     */
+    public function reorderChildElement($parentName, $childName, $offsetOrSibling, $after = true)
+    {
+        if (is_numeric($offsetOrSibling)) {
+            $offset = (int)abs($offsetOrSibling) * ($after ? 1 : -1);
+            $this->reorderChild($parentName, $childName, $offset);
+        } elseif (null === $offsetOrSibling) {
+            $this->reorderChild($parentName, $childName, null);
+        } else {
+            $children = array_keys($this->getChildren($parentName));
+            if ($this->getChildId($parentName, $offsetOrSibling) !== false) {
+                $offsetOrSibling = $this->getChildId($parentName, $offsetOrSibling);
+            }
+            $sibling = $this->_filterSearchMinus($offsetOrSibling, $children, $after);
+            if ($childName !== $sibling) {
+                $siblingParentName = $this->getParentId($sibling);
+                if ($parentName !== $siblingParentName) {
+                    $this->logger->log(
+                        "Broken reference: the '{$childName}' tries to reorder itself towards '{$sibling}', but " .
+                        "their parents are different: '{$parentName}' and '{$siblingParentName}' respectively.",
+                        \Zend_Log::CRIT
+                    );
+                    return;
+                }
+                $this->reorderToSibling($parentName, $childName, $sibling, $after ? 1 : -1);
+            }
+        }
+    }
+
+    /**
+     * Search for an array element using needle, but needle may be '-', which means "first" or "last" element
+     *
+     * Returns first or last element in the haystack, or the $needle argument
+     *
+     * @param string $needle
+     * @param array $haystack
+     * @param bool $isLast
+     * @return string
+     */
+    protected function _filterSearchMinus($needle, array $haystack, $isLast)
+    {
+        if ('-' === $needle) {
+            if ($isLast) {
+                return array_pop($haystack);
+            }
+            return array_shift($haystack);
+        }
+        return $needle;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Generator/Block.php b/lib/internal/Magento/Framework/View/Layout/Generator/Block.php
new file mode 100644
index 0000000000000000000000000000000000000000..9715e34e39248f1336c2f1e8a5307c9118c760db
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Generator/Block.php
@@ -0,0 +1,234 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\Framework\View\Layout;
+
+class Block implements Layout\GeneratorInterface
+{
+    /**
+     * Type of generator
+     */
+    const TYPE = 'block';
+
+    /**
+     * @var \Magento\Framework\View\Element\BlockFactory
+     */
+    protected $blockFactory;
+
+    /**
+     * @var \Magento\Framework\Data\Argument\InterpreterInterface
+     */
+    protected $argumentInterpreter;
+
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface
+     */
+    protected $eventManager;
+
+    /**
+     * @var \Magento\Framework\Logger
+     */
+    protected $logger;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Framework\View\Element\BlockFactory $blockFactory
+     * @param \Magento\Framework\Data\Argument\InterpreterInterface $argumentInterpreter
+     * @param \Magento\Framework\Event\ManagerInterface $eventManager
+     * @param \Magento\Framework\Logger $logger
+     */
+    public function __construct(
+        \Magento\Framework\View\Element\BlockFactory $blockFactory,
+        \Magento\Framework\Data\Argument\InterpreterInterface $argumentInterpreter,
+        \Magento\Framework\Event\ManagerInterface $eventManager,
+        \Magento\Framework\Logger $logger
+    ) {
+        $this->blockFactory = $blockFactory;
+        $this->argumentInterpreter = $argumentInterpreter;
+        $this->eventManager = $eventManager;
+        $this->logger = $logger;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return self::TYPE;
+    }
+
+    /**
+     * Creates block object based on data and add it to the layout
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Context $generatorContext
+     * @return $this
+     */
+    public function process(Layout\Reader\Context $readerContext, Layout\Generator\Context $generatorContext)
+    {
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        $layout = $generatorContext->getLayout();
+        $structure = $generatorContext->getStructure();
+        /** @var $blocks \Magento\Framework\View\Element\AbstractBlock[] */
+        $blocks = [];
+        $blockActions = [];
+        // Instantiate blocks and collect all actions data
+        foreach ($scheduledStructure->getElements() as $elementName => $element) {
+            list($type, $data) = $element;
+            if ($type === self::TYPE) {
+                $block = $this->generateBlock($scheduledStructure, $structure, $elementName);
+                $blocks[$elementName] = $block;
+                $layout->setBlock($elementName, $block);
+                if (!empty($data['actions'])) {
+                    $blockActions[$elementName] = $data['actions'];
+                }
+            }
+        }
+        // Set layout instance to all generated block (trigger _prepareLayout method)
+        foreach ($blocks as $elementName => $block) {
+            $block->setLayout($layout);
+            $this->eventManager->dispatch('core_layout_block_create_after', ['block' => $block]);
+            $scheduledStructure->unsetElement($elementName);
+        }
+        // Run all actions after layout initialization
+        foreach ($blockActions as $elementName => $actions) {
+            foreach ($actions as $action) {
+                list($methodName, $actionArguments) = $action;
+                $this->generateAction($blocks[$elementName], $methodName, $actionArguments);
+            }
+        }
+        return $this;
+    }
+
+    /**
+     * Create block and set related data
+     *
+     * @param \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure
+     * @param \Magento\Framework\View\Layout\Data\Structure $structure
+     * @param string $elementName
+     * @return \Magento\Framework\View\Element\AbstractBlock
+     */
+    protected function generateBlock(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Data\Structure $structure,
+        $elementName
+    ) {
+        list(, $data) = $scheduledStructure->getElement($elementName);
+        $attributes = $data['attributes'];
+
+        if (!empty($attributes['group'])) {
+            $structure->addToParentGroup($elementName, $attributes['group']);
+        }
+
+        // create block
+        $className = $attributes['class'];
+        $block = $this->createBlock($className, $elementName, [
+            'data' => $this->evaluateArguments($data['arguments'])
+        ]);
+        if (!empty($attributes['template'])) {
+            $block->setTemplate($attributes['template']);
+        }
+        if (!empty($attributes['ttl'])) {
+            $ttl = (int)$attributes['ttl'];
+            $block->setTtl($ttl);
+        }
+        return $block;
+    }
+
+    /**
+     * Create block instance
+     *
+     * @param string|\Magento\Framework\View\Element\AbstractBlock $block
+     * @param string $name
+     * @param array $arguments
+     * @return \Magento\Framework\View\Element\AbstractBlock
+     */
+    public function createBlock($block, $name, array $arguments = [])
+    {
+        $block = $this->getBlockInstance($block, $arguments);
+        $block->setType(get_class($block));
+        $block->setNameInLayout($name);
+        $block->addData(isset($arguments['data']) ? $arguments['data'] : []);
+        return $block;
+    }
+
+    /**
+     * Create block object instance based on block type
+     *
+     * @param string|\Magento\Framework\View\Element\AbstractBlock $block
+     * @param array $arguments
+     * @throws \Magento\Framework\Model\Exception
+     * @return \Magento\Framework\View\Element\AbstractBlock
+     */
+    protected function getBlockInstance($block, array $arguments = [])
+    {
+        if ($block && is_string($block)) {
+            try {
+                $block = $this->blockFactory->createBlock($block, $arguments);
+            } catch (\ReflectionException $e) {
+                $this->logger->log($e->getMessage());
+            }
+        }
+        if (!$block instanceof \Magento\Framework\View\Element\AbstractBlock) {
+            throw new \Magento\Framework\Model\Exception(__('Invalid block type: %1', $block));
+        }
+        return $block;
+    }
+
+    /**
+     * Run action defined in layout update
+     *
+     * @param \Magento\Framework\View\Element\AbstractBlock $block
+     * @param string $methodName
+     * @param array $actionArguments
+     * @return void
+     */
+    protected function generateAction($block, $methodName, $actionArguments)
+    {
+        $profilerKey = 'BLOCK_ACTION:' . $block->getNameInLayout() . '>' . $methodName;
+        \Magento\Framework\Profiler::start($profilerKey);
+        $args = $this->evaluateArguments($actionArguments);
+        call_user_func_array(array($block, $methodName), $args);
+        \Magento\Framework\Profiler::stop($profilerKey);
+    }
+
+    /**
+     * Compute and return argument values
+     *
+     * @param array $arguments
+     * @return array
+     */
+    protected function evaluateArguments(array $arguments)
+    {
+        $result = array();
+        foreach ($arguments as $argumentName => $argumentData) {
+            $result[$argumentName] = $this->argumentInterpreter->evaluate($argumentData);
+        }
+        return $result;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Generator/Container.php b/lib/internal/Magento/Framework/View/Layout/Generator/Container.php
new file mode 100644
index 0000000000000000000000000000000000000000..fcc2f9dcc7699038a61b8a0103608fd94080bb14
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Generator/Container.php
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\Framework\View\Layout;
+
+class Container implements Layout\GeneratorInterface
+{
+    /**#@+
+     * Names of container options in layout
+     */
+    const CONTAINER_OPT_HTML_TAG = 'htmlTag';
+    const CONTAINER_OPT_HTML_CLASS = 'htmlClass';
+    const CONTAINER_OPT_HTML_ID = 'htmlId';
+    const CONTAINER_OPT_LABEL = 'label';
+    /**#@-*/
+
+    const TYPE = 'container';
+
+    /**
+     * @var array
+     */
+    protected $allowedTags = [
+        'dd',
+        'div',
+        'dl',
+        'fieldset',
+        'header',
+        'footer',
+        'hgroup',
+        'ol',
+        'p',
+        'section',
+        'table',
+        'tfoot',
+        'ul'
+    ];
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return self::TYPE;
+    }
+
+    /**
+     * Process container elements
+     *
+     * @param \Magento\Framework\View\Layout\Reader\Context $readerContext
+     * @param Context $generatorContext
+     * @return $this
+     */
+    public function process(Layout\Reader\Context $readerContext, Layout\Generator\Context $generatorContext)
+    {
+        $structure = $generatorContext->getStructure();
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        foreach ($scheduledStructure->getElements() as $elementName => $element) {
+            list($type, $data) = $element;
+            if ($type === self::TYPE) {
+                $this->generateContainer($structure, $elementName, $data['attributes']);
+                $scheduledStructure->unsetElement($elementName);
+            }
+        }
+        return $this;
+    }
+
+    /**
+     * Set container-specific data to structure element
+     *
+     * @param \Magento\Framework\View\Layout\Data\Structure $structure
+     * @param string $elementName
+     * @param array $options
+     * @return void
+     */
+    public function generateContainer(
+        Layout\Data\Structure $structure,
+        $elementName,
+        $options
+    ) {
+        $structure->setAttribute(
+            $elementName,
+            Layout\Element::CONTAINER_OPT_LABEL,
+            $options[Layout\Element::CONTAINER_OPT_LABEL]
+        );
+        unset($options[Layout\Element::CONTAINER_OPT_LABEL]);
+        unset($options['type']);
+
+        $this->validateOptions($options);
+
+        foreach ($options as $key => $value) {
+            $structure->setAttribute($elementName, $key, $value);
+        }
+    }
+
+    /**
+     * @param array $options
+     * @return void
+     * @throws \Magento\Framework\Exception
+     */
+    protected function validateOptions($options)
+    {
+        if (!empty($options[Layout\Element::CONTAINER_OPT_HTML_TAG])
+            && !in_array(
+                $options[Layout\Element::CONTAINER_OPT_HTML_TAG],
+                $this->allowedTags
+            )
+        ) {
+            throw new \Magento\Framework\Exception(
+                sprintf(
+                    'Html tag "%s" is forbidden for usage in containers. Consider to use one of the allowed: %s.',
+                    $options[Layout\Element::CONTAINER_OPT_HTML_TAG],
+                    implode(', ', $this->allowedTags)
+                )
+            );
+        }
+
+        if (empty($options[Layout\Element::CONTAINER_OPT_HTML_TAG])
+            && (
+                !empty($options[Layout\Element::CONTAINER_OPT_HTML_ID])
+                || !empty($options[Layout\Element::CONTAINER_OPT_HTML_CLASS])
+            )
+        ) {
+            throw new \Magento\Framework\Exception(
+                'HTML ID or class will not have effect, if HTML tag is not specified.'
+            );
+        }
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Generator/Context.php b/lib/internal/Magento/Framework/View/Layout/Generator/Context.php
new file mode 100644
index 0000000000000000000000000000000000000000..5cfaeeef5a7147881cc96d7dfedf8a391aa94556
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Generator/Context.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\LayoutInterface;
+
+class Context
+{
+    /**
+     * @var Layout\Data\Structure
+     */
+    protected $structure;
+
+    /**
+     * @var LayoutInterface
+     */
+    protected $layout;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\Data\Structure $structure
+     * @param LayoutInterface $layout
+     */
+    public function __construct(
+        Layout\Data\Structure $structure,
+        LayoutInterface $layout
+    ) {
+        $this->structure = $structure;
+        $this->layout = $layout;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Layout\Data\Structure
+     */
+    public function getStructure()
+    {
+        return $this->structure;
+    }
+
+    /**
+     * @return LayoutInterface
+     */
+    public function getLayout()
+    {
+        return $this->layout;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Generator/UiComponent.php b/lib/internal/Magento/Framework/View/Layout/Generator/UiComponent.php
new file mode 100644
index 0000000000000000000000000000000000000000..5a2cfbcfafde78986ce58ec6bf8165670f9b34f5
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Generator/UiComponent.php
@@ -0,0 +1,140 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Generator;
+
+use Magento\Framework\View\Element\UiComponentFactory;
+use Magento\Framework\Data\Argument\InterpreterInterface;
+use Magento\Framework\View\Layout;
+
+class UiComponent implements Layout\GeneratorInterface
+{
+    /**
+     * Generator type
+     */
+    const TYPE = 'ui_component';
+
+    /**
+     * @var \Magento\Framework\View\Element\UiComponentFactory
+     */
+    protected $uiComponentFactory;
+
+    /**
+     * @var \Magento\Framework\Data\Argument\InterpreterInterface
+     */
+    protected $argumentInterpreter;
+
+    /**
+     * Constructor
+     *
+     * @param UiComponentFactory $uiComponentFactory
+     * @param \Magento\Framework\Data\Argument\InterpreterInterface $argumentInterpreter
+     */
+    public function __construct(
+        UiComponentFactory $uiComponentFactory,
+        InterpreterInterface $argumentInterpreter
+    ) {
+        $this->uiComponentFactory = $uiComponentFactory;
+        $this->argumentInterpreter = $argumentInterpreter;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return self::TYPE;
+    }
+
+    /**
+     * Creates UI Component object based on scheduled data and add it to the layout
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Context $generatorContext
+     * @return $this
+     */
+    public function process(Layout\Reader\Context $readerContext, Layout\Generator\Context $generatorContext)
+    {
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        $scheduledElements = $scheduledStructure->getElements();
+        if (!$scheduledElements) {
+            return $this;
+        }
+        $structure = $generatorContext->getStructure();
+        $layout = $generatorContext->getLayout();
+        $this->uiComponentFactory->setLayout($layout);
+        /** @var $blocks \Magento\Framework\View\Element\AbstractBlock[] */
+        $blocks = [];
+        // Instantiate blocks and collect all actions data
+        foreach ($scheduledElements as $elementName => $element) {
+            list($type, $data) = $element;
+            if ($type === self::TYPE) {
+                $block = $this->generateComponent($structure, $elementName, $data);
+                $blocks[$elementName] = $block;
+                $layout->setBlock($elementName, $block);
+                $scheduledStructure->unsetElement($elementName);
+            }
+        }
+        foreach ($blocks as $block) {
+            $block->setLayout($layout);
+        }
+        return $this;
+    }
+
+    /**
+     * Create component object
+     *
+     * @param \Magento\Framework\View\Layout\Data\Structure $structure
+     * @param string $elementName
+     * @param string $data
+     * @return \Magento\Framework\View\Element\UiComponentInterface
+     */
+    protected function generateComponent(Layout\Data\Structure $structure, $elementName, $data)
+    {
+        $attributes = $data['attributes'];
+        if (!empty($attributes['group'])) {
+            $structure->addToParentGroup($elementName, $attributes['group']);
+        }
+        $arguments = empty($data['arguments']) ? [] : $this->evaluateArguments($data['arguments']);
+        $componentName = isset($attributes['component']) ? $attributes['component'] : '';
+        $uiComponent = $this->uiComponentFactory->createUiComponent($componentName, $elementName, $arguments);
+        return $uiComponent;
+    }
+
+    /**
+     * Compute and return argument values
+     *
+     * @param array $arguments
+     * @return array
+     */
+    protected function evaluateArguments(array $arguments)
+    {
+        $result = array();
+        foreach ($arguments as $argumentName => $argumentData) {
+            $result[$argumentName] = $this->argumentInterpreter->evaluate($argumentData);
+        }
+        return $result;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/GeneratorInterface.php b/lib/internal/Magento/Framework/View/Layout/GeneratorInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..fda2b0b2b0520071cc2272e0ea48f38733fcda4c
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/GeneratorInterface.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+interface GeneratorInterface
+{
+    /**
+     * Traverse through all elements of specified schedule structural elements of it
+     *
+     * @param Reader\Context $readerContext
+     * @param Generator\Context $generatorContext
+     * @return $this
+     */
+    public function process(Reader\Context $readerContext, Generator\Context $generatorContext);
+
+    /**
+     * Return type of generator
+     *
+     * @return string
+     */
+    public function getType();
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php b/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php
new file mode 100644
index 0000000000000000000000000000000000000000..faff0a6bcdb7c4a42a62f4960aae1e2dbf981416
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php
@@ -0,0 +1,174 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+use Magento\Framework\View\LayoutInterface;
+use Magento\Framework\View\Page;
+
+/**
+ * Pool of generators for structural elements
+ */
+class GeneratorPool
+{
+    /**
+     * @var ScheduledStructure\Helper
+     */
+    protected $helper;
+
+    /**
+     * @var GeneratorInterface[]
+     */
+    protected $generators = [];
+
+    /**
+     * Constructor
+     *
+     * @param ScheduledStructure\Helper $helper
+     * @param array $generators
+     */
+    public function __construct(
+        ScheduledStructure\Helper $helper,
+        array $generators = null
+    ) {
+        $this->helper = $helper;
+        $this->addGenerators($generators);
+    }
+
+    /**
+     * Get generator
+     *
+     * @param string $type
+     * @return GeneratorInterface
+     * @throws \InvalidArgumentException
+     */
+    public function getGenerator($type)
+    {
+        if (!isset($this->generators[$type])) {
+            throw new \InvalidArgumentException("Invalid generator type '{$type}'");
+        }
+        return $this->generators[$type];
+    }
+
+    /**
+     * Traverse through all generators and generate all scheduled elements
+     *
+     * @param Reader\Context $readerContext
+     * @param Generator\Context $generatorContext
+     * @return $this
+     */
+    public function process(Reader\Context $readerContext, Generator\Context $generatorContext)
+    {
+        $this->buildStructure($readerContext->getScheduledStructure(), $generatorContext->getStructure());
+        foreach ($this->generators as $generator) {
+            $generator->process($readerContext, $generatorContext);
+        }
+        return $this;
+    }
+
+    /**
+     * Add generators to pool
+     *
+     * @param GeneratorInterface[] $generators
+     * @return void
+     */
+    protected function addGenerators(array $generators)
+    {
+        foreach ($generators as $generator) {
+            $this->generators[$generator->getType()] = $generator;
+        }
+    }
+
+    /**
+     * Build structure that is based on scheduled structure
+     *
+     * @param ScheduledStructure $scheduledStructure
+     * @param Data\Structure $structure
+     * @return $this
+     */
+    protected function buildStructure(ScheduledStructure $scheduledStructure, Data\Structure $structure)
+    {
+        //Schedule all element into nested structure
+        while (false === $scheduledStructure->isStructureEmpty()) {
+            $this->helper->scheduleElement($scheduledStructure, $structure, key($scheduledStructure->getStructure()));
+        }
+        $scheduledStructure->flushPaths();
+        foreach ($scheduledStructure->getListToMove() as $elementToMove) {
+            $this->moveElementInStructure($scheduledStructure, $structure, $elementToMove);
+        }
+        foreach ($scheduledStructure->getListToRemove() as $elementToRemove) {
+            $this->removeElement($scheduledStructure, $structure, $elementToRemove);
+        }
+        return $this;
+    }
+
+    /**
+     * Remove scheduled element
+     *
+     * @param ScheduledStructure $scheduledStructure
+     * @param Data\Structure $structure
+     * @param string $elementName
+     * @param bool $isChild
+     * @return $this
+     */
+    protected function removeElement(
+        ScheduledStructure $scheduledStructure,
+        Data\Structure $structure,
+        $elementName,
+        $isChild = false
+    ) {
+        $elementsToRemove = array_keys($structure->getChildren($elementName));
+        $scheduledStructure->unsetElement($elementName);
+        foreach ($elementsToRemove as $element) {
+            $this->removeElement($scheduledStructure, $structure, $element, true);
+        }
+        if (!$isChild) {
+            $structure->unsetElement($elementName);
+            $scheduledStructure->unsetElementFromListToRemove($elementName);
+        }
+        return $this;
+    }
+
+    /**
+     * Move element in scheduled structure
+     *
+     * @param ScheduledStructure $scheduledStructure
+     * @param Data\Structure $structure
+     * @param string $element
+     * @return $this
+     */
+    protected function moveElementInStructure(
+        ScheduledStructure $scheduledStructure,
+        Data\Structure $structure,
+        $element
+    ) {
+        list($destination, $siblingName, $isAfter, $alias) = $scheduledStructure->getElementToMove($element);
+        $childAlias = $structure->getChildAlias($structure->getParentId($element), $element);
+        if (!$alias && false === $structure->getChildId($destination, $childAlias)) {
+            $alias = $childAlias;
+        }
+        $structure->unsetChild($element, $alias)->setAsChild($element, $destination, $alias);
+        $structure->reorderChildElement($destination, $element, $siblingName, $isAfter);
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Proxy.php b/lib/internal/Magento/Framework/View/Layout/Proxy.php
index e60b2dc7dc529405200b80969cc3645a39986698..900277d7c04a28e89ef9c599be0b1bf7bdd45502 100644
--- a/lib/internal/Magento/Framework/View/Layout/Proxy.php
+++ b/lib/internal/Magento/Framework/View/Layout/Proxy.php
@@ -503,16 +503,6 @@ class Proxy extends \Magento\Framework\View\Layout
         return $this->getSubject()->getBlockSingleton($type);
     }
 
-    /**
-     * Retrieve block factory
-     *
-     * @return \Magento\Framework\View\Element\BlockFactory
-     */
-    public function getBlockFactory()
-    {
-        return $this->getSubject()->getBlockFactory();
-    }
-
     /**
      * @param string $namespace
      * @param string $staticType
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Block.php b/lib/internal/Magento/Framework/View/Layout/Reader/Block.php
new file mode 100644
index 0000000000000000000000000000000000000000..e21e2865b0f74f1ee88d3b36cd9272eb907ab489
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Block.php
@@ -0,0 +1,294 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\App;
+
+class Block implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_BLOCK = 'block';
+    const TYPE_REFERENCE_BLOCK = 'referenceBlock';
+    /**#@-*/
+
+    /**#@+
+     * Supported subtypes for blocks
+     */
+    const TYPE_ARGUMENTS = 'arguments';
+    const TYPE_ACTION = 'action';
+    /**#@-*/
+
+    /**
+     * @var array
+     */
+    protected $attributes = ['group', 'class', 'template', 'ttl'];
+
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure\Helper
+     */
+    protected $helper;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Argument\Parser
+     */
+    protected $argumentParser;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var \Magento\Framework\App\ScopeResolverInterface
+     */
+    protected $scopeResolver;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool
+     */
+    protected $readerPool;
+
+    /**
+     * @var string
+     */
+    protected $scopeType;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\ScheduledStructure\Helper $helper
+     * @param Layout\Argument\Parser $argumentParser
+     * @param Layout\Reader\Pool $readerPool
+     * @param App\Config\ScopeConfigInterface $scopeConfig
+     * @param App\ScopeResolverInterface $scopeResolver
+     * @param string|null $scopeType
+     */
+    public function __construct(
+        Layout\ScheduledStructure\Helper $helper,
+        Layout\Argument\Parser $argumentParser,
+        Layout\Reader\Pool $readerPool,
+        App\Config\ScopeConfigInterface $scopeConfig,
+        App\ScopeResolverInterface $scopeResolver,
+        $scopeType = null
+    ) {
+        $this->helper = $helper;
+        $this->argumentParser = $argumentParser;
+        $this->scopeConfig = $scopeConfig;
+        $this->scopeResolver = $scopeResolver;
+        $this->readerPool = $readerPool;
+        $this->scopeType = $scopeType;
+    }
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_BLOCK, self::TYPE_REFERENCE_BLOCK];
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(Context $readerContext, Layout\Element $currentElement, Layout\Element $parentElement)
+    {
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        switch ($currentElement->getName()) {
+            case self::TYPE_BLOCK:
+                $this->scheduleBlock($scheduledStructure, $currentElement, $parentElement);
+                break;
+
+            case self::TYPE_REFERENCE_BLOCK:
+                $this->scheduleReference($scheduledStructure, $currentElement);
+                break;
+
+            default:
+                break;
+        }
+        return $this->readerPool->readStructure($readerContext, $currentElement);
+    }
+
+    /**
+     * Process block element their attributes and children
+     *
+     * @param Layout\ScheduledStructure $scheduledStructure
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return void
+     */
+    protected function scheduleBlock(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Element $currentElement,
+        Layout\Element $parentElement
+    ) {
+        $elementName = $this->helper->scheduleStructure($scheduledStructure, $currentElement, $parentElement);
+        $data = $scheduledStructure->getStructureElementData($elementName, []);
+        $data['attributes'] = $this->getAttributes($currentElement);
+        $this->updateScheduledData($currentElement, $data);
+        $scheduledStructure->setStructureElementData($elementName, $data);
+
+        $configPath = (string)$currentElement->getAttribute('ifconfig');
+        if (!empty($configPath)
+            && !$this->scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
+        ) {
+            $scheduledStructure->setElementToRemoveList($elementName);
+        }
+    }
+
+    /**
+     * Schedule reference data
+     *
+     * @param Layout\ScheduledStructure $scheduledStructure
+     * @param Layout\Element $currentElement
+     * @return void
+     */
+    protected function scheduleReference(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Element $currentElement
+    ) {
+        $elementName = $currentElement->getAttribute('name');
+        $data = $scheduledStructure->getStructureElementData($elementName, []);
+        $this->updateScheduledData($currentElement, $data);
+        $scheduledStructure->setStructureElementData($elementName, $data);
+    }
+
+    /**
+     * Update data for scheduled element
+     *
+     * @param Layout\Element $currentElement
+     * @param array $data
+     * @return array
+     */
+    protected function updateScheduledData($currentElement, array &$data)
+    {
+        $actions = $this->getActions($currentElement);
+        $arguments = $this->getArguments($currentElement);
+        $data['actions'] = isset($data['actions'])
+            ? array_merge($data['actions'], $actions)
+            : $actions;
+        $data['arguments'] = isset($data['arguments'])
+            ? array_replace_recursive($data['arguments'], $arguments)
+            : $arguments;
+        return $data;
+    }
+
+    /**
+     * Get block attributes
+     *
+     * @param Layout\Element $blockElement
+     * @return array
+     */
+    protected function getAttributes(Layout\Element $blockElement)
+    {
+        $attributes = [];
+        foreach ($this->attributes as $attributeName) {
+            $attributes[$attributeName] = (string)$blockElement->getAttribute($attributeName);
+        }
+        return $attributes;
+    }
+
+    /**
+     * Get actions for block element
+     *
+     * @param Layout\Element $blockElement
+     * @return array[]
+     */
+    protected function getActions(Layout\Element $blockElement)
+    {
+        $actions = [];
+        /** @var $actionElement Layout\Element */
+        foreach ($this->getElementsByType($blockElement, self::TYPE_ACTION) as $actionElement) {
+            $configPath = $actionElement->getAttribute('ifconfig');
+            if ($configPath
+                && !$this->scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
+            ) {
+                continue;
+            }
+            $methodName = $actionElement->getAttribute('method');
+            $actionArguments = $this->_parseArguments($actionElement);
+            $actions[] = [$methodName, $actionArguments];
+        }
+        return $actions;
+    }
+
+    /**
+     * Get block arguments
+     *
+     * @param Layout\Element $blockElement
+     * @return array
+     */
+    protected function getArguments(Layout\Element $blockElement)
+    {
+        $arguments = $this->getElementsByType($blockElement, self::TYPE_ARGUMENTS);
+        // We have only one declaration of <arguments> node in block or it's reference
+        $argumentElement = reset($arguments);
+        return $argumentElement ? $this->_parseArguments($argumentElement) : [];
+    }
+
+    /**
+     * Get elements by type
+     *
+     * @param Layout\Element $element
+     * @param string $type
+     * @return array
+     */
+    protected function getElementsByType(Layout\Element $element, $type)
+    {
+        $elements = [];
+        /** @var $childElement Layout\Element */
+        foreach ($element as $childElement) {
+            if ($childElement->getName() === $type) {
+                $elements[] = $childElement;
+            }
+        }
+        return $elements;
+    }
+
+    /**
+     * Parse argument nodes and return their array representation
+     *
+     * @param Layout\Element $node
+     * @return array
+     */
+    protected function _parseArguments(Layout\Element $node)
+    {
+        $nodeDom = dom_import_simplexml($node);
+        $result = [];
+        foreach ($nodeDom->childNodes as $argumentNode) {
+            if ($argumentNode instanceof \DOMElement && $argumentNode->nodeName == 'argument') {
+                $argumentName = $argumentNode->getAttribute('name');
+                $result[$argumentName] = $this->argumentParser->parse($argumentNode);
+            }
+        }
+        return $result;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Container.php b/lib/internal/Magento/Framework/View/Layout/Reader/Container.php
new file mode 100644
index 0000000000000000000000000000000000000000..d8c2a5d4ed86402a24868ef2bfd45e9a8f67e148
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Container.php
@@ -0,0 +1,142 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+
+/**
+ * Class Container
+ */
+class Container implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_CONTAINER = 'container';
+    const TYPE_REFERENCE_CONTAINER = 'referenceContainer';
+    /**#@-*/
+
+    /**#@+
+     * Names of container options in layout
+     */
+    const CONTAINER_OPT_HTML_TAG = 'htmlTag';
+    const CONTAINER_OPT_HTML_CLASS = 'htmlClass';
+    const CONTAINER_OPT_HTML_ID = 'htmlId';
+    const CONTAINER_OPT_LABEL = 'label';
+    /**#@-*/
+
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure\Helper
+     */
+    protected $helper;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool
+     */
+    protected $readerPool;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\ScheduledStructure\Helper $helper
+     * @param Layout\Reader\Pool $readerPool
+     */
+    public function __construct(
+        Layout\ScheduledStructure\Helper $helper,
+        Layout\Reader\Pool $readerPool
+    ) {
+        $this->helper = $helper;
+        $this->readerPool = $readerPool;
+    }
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_CONTAINER, self::TYPE_REFERENCE_CONTAINER];
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(Context $readerContext, Layout\Element $currentElement, Layout\Element $parentElement)
+    {
+        switch ($currentElement->getName()) {
+            case self::TYPE_CONTAINER:
+                $this->helper->scheduleStructure(
+                    $readerContext->getScheduledStructure(),
+                    $currentElement,
+                    $parentElement
+                );
+                $this->mergeContainerAttributes($readerContext->getScheduledStructure(), $currentElement);
+                break;
+
+            case self::TYPE_REFERENCE_CONTAINER:
+                $this->mergeContainerAttributes($readerContext->getScheduledStructure(), $currentElement);
+                break;
+
+            default:
+                break;
+        }
+        return $this->readerPool->readStructure($readerContext, $currentElement);
+    }
+
+    /**
+     * Merge Container attributes
+     *
+     * @param \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure
+     * @param \Magento\Framework\View\Layout\Element $currentElement
+     * @return void
+     */
+    protected function mergeContainerAttributes(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Element $currentElement
+    ) {
+        $containerName = $currentElement->getAttribute('name');
+        $elementData = $scheduledStructure->getStructureElementData($containerName);
+
+        if (isset($elementData['attributes'])) {
+            $keys = array_keys($elementData['attributes']);
+            foreach ($keys as $key) {
+                if (isset($currentElement[$key])) {
+                    $elementData['attributes'][$key] = (string)$currentElement[$key];
+                }
+            }
+        } else {
+            $elementData['attributes'] = [
+                self::CONTAINER_OPT_HTML_TAG   => (string)$currentElement[self::CONTAINER_OPT_HTML_TAG],
+                self::CONTAINER_OPT_HTML_ID    => (string)$currentElement[self::CONTAINER_OPT_HTML_ID],
+                self::CONTAINER_OPT_HTML_CLASS => (string)$currentElement[self::CONTAINER_OPT_HTML_CLASS],
+                self::CONTAINER_OPT_LABEL      => (string)$currentElement[self::CONTAINER_OPT_LABEL]
+            ];
+        }
+        $scheduledStructure->setStructureElementData($containerName, $elementData);
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Context.php b/lib/internal/Magento/Framework/View/Layout/Reader/Context.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ad24ea942338af80d8c32742e0f1ce1c41585b6
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Context.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page;
+
+class Context
+{
+    /**
+     * @var \Magento\Framework\View\Layout\ScheduledStructure
+     */
+    protected $scheduledStructure;
+
+    /**
+     * @var \Magento\Framework\View\Page\Config\Structure
+     */
+    protected $pageConfigStructure;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\ScheduledStructure $scheduledStructure
+     * @param \Magento\Framework\View\Page\Config\Structure $pageConfigStructure
+     */
+    public function __construct(
+        Layout\ScheduledStructure $scheduledStructure,
+        Page\Config\Structure $pageConfigStructure
+    ) {
+        $this->scheduledStructure = $scheduledStructure;
+        $this->pageConfigStructure = $pageConfigStructure;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Layout\ScheduledStructure
+     */
+    public function getScheduledStructure()
+    {
+        return $this->scheduledStructure;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Page\Config\Structure
+     */
+    public function getPageConfigStructure()
+    {
+        return $this->pageConfigStructure;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Move.php b/lib/internal/Magento/Framework/View/Layout/Reader/Move.php
new file mode 100644
index 0000000000000000000000000000000000000000..7fe0b22f93ab7383abf035742b1422bf4f1cf361
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Move.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+
+class Move implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_MOVE = 'move';
+    /**#@-*/
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_MOVE];
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(Context $readerContext, Layout\Element $currentElement, Layout\Element $parentElement)
+    {
+        $this->scheduleMove($readerContext->getScheduledStructure(), $currentElement);
+        return false;
+    }
+
+    /**
+     * Schedule structural changes for move directive
+     *
+     * @param \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure
+     * @param \Magento\Framework\View\Layout\Element $currentElement
+     * @throws \Magento\Framework\Exception
+     * @return $this
+     */
+    protected function scheduleMove(Layout\ScheduledStructure $scheduledStructure, Layout\Element $currentElement)
+    {
+        $elementName = (string)$currentElement->getAttribute('element');
+        $destination = (string)$currentElement->getAttribute('destination');
+        $alias = (string)$currentElement->getAttribute('as') ?: '';
+        if ($elementName && $destination) {
+            list($siblingName, $isAfter) = $this->beforeAfterToSibling($currentElement);
+            $scheduledStructure->setElementToMove(
+                $elementName,
+                array($destination, $siblingName, $isAfter, $alias)
+            );
+        } else {
+            throw new \Magento\Framework\Exception('Element name and destination must be specified.');
+        }
+        return $this;
+    }
+
+    /**
+     * Analyze "before" and "after" information in the node and return sibling name and whether "after" or "before"
+     *
+     * @param \Magento\Framework\View\Layout\Element $node
+     * @return array
+     */
+    protected function beforeAfterToSibling($node)
+    {
+        $result = array(null, true);
+        if (isset($node['after'])) {
+            $result[0] = (string)$node['after'];
+        } elseif (isset($node['before'])) {
+            $result[0] = (string)$node['before'];
+            $result[1] = false;
+        }
+        return $result;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Pool.php b/lib/internal/Magento/Framework/View/Layout/Reader/Pool.php
new file mode 100644
index 0000000000000000000000000000000000000000..7a25563cf93b7a65f899b431fda44ba7faa74f7c
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Pool.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+
+/**
+ * Class Pool
+ */
+class Pool
+{
+    /**
+     * @var array
+     */
+    protected $readers;
+
+    /**
+     * @var Layout\ReaderInterface[]
+     */
+    protected $nodeReaders = [];
+
+    /**
+     * Object Manager
+     *
+     * @var \Magento\Framework\View\Layout\ReaderFactory
+     */
+    protected $readerFactory;
+
+    /**
+     * Constructor
+     *
+     * @param Layout\ReaderFactory $readerFactory
+     * @param array $readers
+     */
+    public function __construct(Layout\ReaderFactory $readerFactory, array $readers = [])
+    {
+        $this->readerFactory = $readerFactory;
+        $this->readers = $readers;
+    }
+
+    /**
+     * Register supported nodes and readers
+     *
+     * @param array $readers
+     * @return void
+     */
+    protected function prepareReader($readers)
+    {
+        /** @var $reader Layout\ReaderInterface */
+        foreach ($readers as $readerClass) {
+            $reader = $this->readerFactory->create($readerClass);
+            foreach ($reader->getSupportedNodes() as $nodeName) {
+                $this->nodeReaders[$nodeName] = $reader;
+            }
+        }
+    }
+
+    /**
+     * Traverse through all nodes
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $element
+     * @return $this
+     */
+    public function readStructure(Context $readerContext, Layout\Element $element)
+    {
+        $this->prepareReader($this->readers);
+
+        /** @var $node Layout\Element */
+        foreach ($element as $node) {
+            $nodeName = $node->getName();
+            if (!isset($this->nodeReaders[$nodeName])) {
+                continue;
+            }
+            /** @var $reader Layout\ReaderInterface */
+            $reader = $this->nodeReaders[$nodeName];
+            $reader->process($readerContext, $node, $element);
+        }
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php b/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php
new file mode 100644
index 0000000000000000000000000000000000000000..60facbdf1efaffd7d94221e4510ca879bec5cc00
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+
+class Remove implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_REMOVE = 'remove';
+    /**#@-*/
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_REMOVE];
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(Context $readerContext, Layout\Element $currentElement, Layout\Element $parentElement)
+    {
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        $scheduledStructure->setElementToRemoveList((string)$currentElement->getAttribute('name'));
+        return false;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/UiComponent.php b/lib/internal/Magento/Framework/View/Layout/Reader/UiComponent.php
new file mode 100644
index 0000000000000000000000000000000000000000..9a2989eccd602e953ba772577347acd55a33c50d
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/Reader/UiComponent.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\App;
+
+class UiComponent implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_UI_COMPONENT = 'ui_component';
+    /**#@-*/
+
+    /**
+     * List of supported attributes
+     *
+     * @var array
+     */
+    protected $attributes = ['group', 'component'];
+
+    /**
+     * @var Layout\ScheduledStructure\Helper
+     */
+    protected $layoutHelper;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var \Magento\Framework\App\ScopeResolverInterface
+     */
+    protected $scopeResolver;
+
+    /**
+     * @var string|null
+     */
+    protected $scopeType;
+
+    /**
+     * Construct
+     *
+     * @param Layout\ScheduledStructure\Helper $helper
+     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
+     * @param \Magento\Framework\App\ScopeResolverInterface $scopeResolver
+     * @param string|null $scopeType
+     */
+    public function __construct(
+        Layout\ScheduledStructure\Helper $helper,
+        App\Config\ScopeConfigInterface $scopeConfig,
+        App\ScopeResolverInterface $scopeResolver,
+        $scopeType = null
+    ) {
+        $this->layoutHelper = $helper;
+        $this->scopeConfig = $scopeConfig;
+        $this->scopeResolver = $scopeResolver;
+        $this->scopeType = $scopeType;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_UI_COMPONENT];
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Context $readerContext
+     * @param Layout\Element $currentElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(Context $readerContext, Layout\Element $currentElement, Layout\Element $parentElement)
+    {
+        $scheduledStructure = $readerContext->getScheduledStructure();
+        $referenceName = $this->layoutHelper->scheduleStructure(
+            $readerContext->getScheduledStructure(),
+            $currentElement,
+            $parentElement
+        );
+        $scheduledStructure->setStructureElementData($referenceName, [
+            'attributes' => $this->getAttributes($currentElement)
+        ]);
+        $configPath = (string)$currentElement->getAttribute('ifconfig');
+        if (!empty($configPath)
+            && !$this->scopeConfig->isSetFlag($configPath, $this->scopeType, $this->scopeResolver->getScope())
+        ) {
+            $scheduledStructure->setElementToRemoveList($referenceName);
+        }
+        return $this;
+    }
+
+    /**
+     * Get ui component attributes
+     *
+     * @param Layout\Element $element
+     * @return array
+     */
+    protected function getAttributes(Layout\Element $element)
+    {
+        $attributes = [];
+        foreach ($this->attributes as $attributeName) {
+            $attributes[$attributeName] = (string)$element->getAttribute($attributeName);
+        }
+        return $attributes;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/Factory.php b/lib/internal/Magento/Framework/View/Layout/ReaderFactory.php
similarity index 67%
rename from lib/internal/Magento/Framework/View/Layout/Factory.php
rename to lib/internal/Magento/Framework/View/Layout/ReaderFactory.php
index 49692c34107180fb115b36d983c05582202be739..131a7e3cb20d4e9ce709c5cb117abb28f2aa6635 100644
--- a/lib/internal/Magento/Framework/View/Layout/Factory.php
+++ b/lib/internal/Magento/Framework/View/Layout/ReaderFactory.php
@@ -23,13 +23,11 @@
  */
 namespace Magento\Framework\View\Layout;
 
-class Factory
+/**
+ * Class ReaderFactory
+ */
+class ReaderFactory
 {
-    /**
-     * Entity class name
-     */
-    const CLASS_NAME = 'Magento\Framework\View\Layout';
-
     /**
      * @var \Magento\Framework\ObjectManager
      */
@@ -44,13 +42,21 @@ class Factory
     }
 
     /**
-     * Create class instance with specified parameters
+     * Create reader instance with specified parameters
      *
+     * @param string $className
      * @param array $data
-     * @return \Magento\Framework\View\Layout
+     * @return \Magento\Framework\View\Layout\ReaderInterface
+     * @throws \InvalidArgumentException
      */
-    public function create(array $data = array())
+    public function create($className, array $data = array())
     {
-        return $this->objectManager->create(self::CLASS_NAME, $data);
+        $reader = $this->objectManager->create($className, $data);
+        if (!$reader instanceof \Magento\Framework\View\Layout\ReaderInterface) {
+            throw new \InvalidArgumentException(
+                $className . ' doesn\'t implement \Magento\Framework\View\Layout\ReaderInterface'
+            );
+        }
+        return $reader;
     }
 }
diff --git a/lib/internal/Magento/Framework/View/Layout/ReaderInterface.php b/lib/internal/Magento/Framework/View/Layout/ReaderInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..4e36ce2bf32100e4ed4aaaf8d4e1c8529a1083e7
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/ReaderInterface.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout;
+
+interface ReaderInterface
+{
+    /**
+     * Get all supported nodes of this reader
+     *
+     * @return string[]
+     */
+    public function getSupportedNodes();
+
+    /**
+     * Process all structure
+     *
+     * @param Reader\Context $readerContext
+     * @param Element $element
+     * @param Element $parentElement
+     * @return $this
+     */
+    public function process(Reader\Context $readerContext, Element $element, Element $parentElement);
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php
index e6e1395a8d5d9aff371f7c44a595d733d057d478..7839828daa0f8a90dc81410c4eaa87b3e967f313 100644
--- a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php
+++ b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php
@@ -35,6 +35,13 @@ class ScheduledStructure
      */
     protected $_scheduledStructure;
 
+    /**
+     * Scheduled structure data
+     *
+     * @var array
+     */
+    protected $_scheduledData;
+
     /**
      * Full information about elements to be populated in the layout structure after generating structure
      *
@@ -71,6 +78,7 @@ class ScheduledStructure
     public function __construct(array $data = array())
     {
         $this->_scheduledStructure = isset($data['scheduledStructure']) ? $data['scheduledStructure'] : array();
+        $this->_scheduledData = isset($data['scheduledData']) ? $data['scheduledData'] : array();
         $this->_scheduledElements = isset($data['scheduledElements']) ? $data['scheduledElements'] : array();
         $this->_scheduledMoves = isset($data['scheduledMoves']) ? $data['scheduledMoves'] : array();
         $this->_scheduledRemoves = isset($data['scheduledRemoves']) ? $data['scheduledRemoves'] : array();
@@ -255,7 +263,7 @@ class ScheduledStructure
     /**
      * Add element to scheduled structure elements list
      *
-     * @param  string $elementName
+     * @param string $elementName
      * @param array $data
      * @return void
      */
@@ -273,6 +281,31 @@ class ScheduledStructure
     public function unsetStructureElement($elementName)
     {
         unset($this->_scheduledStructure[$elementName]);
+        unset($this->_scheduledData[$elementName]);
+    }
+
+    /**
+     * Get scheduled data for element
+     *
+     * @param string $elementName
+     * @param null $default
+     * @return null
+     */
+    public function getStructureElementData($elementName, $default = null)
+    {
+        return isset($this->_scheduledData[$elementName]) ? $this->_scheduledData[$elementName] : $default;
+    }
+
+    /**
+     * Set scheduled data for element
+     *
+     * @param string $elementName
+     * @param array $data
+     * @return void
+     */
+    public function setStructureElementData($elementName, array $data)
+    {
+        $this->_scheduledData[$elementName] = $data;
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
new file mode 100644
index 0000000000000000000000000000000000000000..376688460a4dd01d10c58968abc2de716f8569cd
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
@@ -0,0 +1,251 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Layout\ScheduledStructure;
+
+use Magento\Framework\View\Layout;
+
+class Helper
+{
+    /**#@+
+     * Scheduled structure array indexes
+     */
+    const SCHEDULED_STRUCTURE_INDEX_TYPE = 0;
+    const SCHEDULED_STRUCTURE_INDEX_ALIAS = 1;
+    const SCHEDULED_STRUCTURE_INDEX_PARENT_NAME = 2;
+    const SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME = 3;
+    const SCHEDULED_STRUCTURE_INDEX_IS_AFTER = 4;
+    /**#@-*/
+
+    /**
+     * Anonymous block counter
+     *
+     * @var int
+     */
+    protected $counter = 0;
+
+    /**
+     * @var \Magento\Framework\Logger
+     */
+    protected $logger;
+
+    /**
+     * @param \Magento\Framework\Logger $logger
+     */
+    public function __construct(
+        \Magento\Framework\Logger $logger
+    ) {
+        $this->logger = $logger;
+    }
+
+    /**
+     * Generate anonymous element name for structure
+     *
+     * @param string $class
+     * @return string
+     */
+    protected function _generateAnonymousName($class)
+    {
+        $position = strpos($class, '\\Block\\');
+        $key = $position !== false ? substr($class, $position + 7) : $class;
+        $key = strtolower(trim($key, '_'));
+        return $key . $this->counter++;
+    }
+
+    /**
+     * Populate queue for generating structural elements
+     *
+     * @param Layout\ScheduledStructure $scheduledStructure
+     * @param \Magento\Framework\View\Layout\Element $currentNode
+     * @param \Magento\Framework\View\Layout\Element $parentNode
+     * @return string
+     * @see scheduleElement() where the scheduledStructure is used
+     */
+    public function scheduleStructure(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Element $currentNode,
+        Layout\Element $parentNode
+    ) {
+        // if it hasn't a name it must be generated
+        $path = $name = (string)$currentNode->getAttribute('name')
+            ?: $this->_generateAnonymousName($parentNode->getElementName() . '_schedule_block');
+
+        // Prepare scheduled element with default parameters [type, alias, parentName, siblingName, isAfter]
+        $row = [
+            self::SCHEDULED_STRUCTURE_INDEX_TYPE           => $currentNode->getName(),
+            self::SCHEDULED_STRUCTURE_INDEX_ALIAS          => '',
+            self::SCHEDULED_STRUCTURE_INDEX_PARENT_NAME    => '',
+            self::SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME   => null,
+            self::SCHEDULED_STRUCTURE_INDEX_IS_AFTER       => true,
+        ];
+
+        $parentName = $parentNode->getElementName();
+        //if this element has a parent element, there must be reset [alias, parentName, siblingName, isAfter]
+        if ($parentName) {
+            $row[self::SCHEDULED_STRUCTURE_INDEX_ALIAS] = (string)$currentNode->getAttribute('as');
+            $row[self::SCHEDULED_STRUCTURE_INDEX_PARENT_NAME] = $parentName;
+
+            list($row[self::SCHEDULED_STRUCTURE_INDEX_SIBLING_NAME],
+                $row[self::SCHEDULED_STRUCTURE_INDEX_IS_AFTER]) = $this->_beforeAfterToSibling($currentNode);
+
+            // materialized path for referencing nodes in the plain array of _scheduledStructure
+            if ($scheduledStructure->hasPath($parentName)) {
+                $path = $scheduledStructure->getPath($parentName) . '/' . $path;
+            }
+        }
+
+        $this->_overrideElementWorkaround($scheduledStructure, $name, $path);
+        $scheduledStructure->setPathElement($name, $path);
+        $scheduledStructure->setStructureElement($name, $row);
+        return $name;
+    }
+
+    /**
+     * Destroy previous element with same name and all its children, if new element overrides it
+     *
+     * This is a workaround to handle situation, when an element emerges with name of element that already exists.
+     * In this case we destroy entire structure of the former element and replace with the new one.
+     *
+     * @param Layout\ScheduledStructure $scheduledStructure
+     * @param string $name
+     * @param string $path
+     * @return void
+     */
+    protected function _overrideElementWorkaround(Layout\ScheduledStructure $scheduledStructure, $name, $path)
+    {
+        if ($scheduledStructure->hasStructureElement($name)) {
+            $scheduledStructure->setStructureElementData($name, []);
+            foreach ($scheduledStructure->getPaths() as $potentialChild => $childPath) {
+                if (0 === strpos($childPath, "{$path}/")) {
+                    $scheduledStructure->unsetPathElement($potentialChild);
+                    $scheduledStructure->unsetStructureElement($potentialChild);
+                }
+            }
+        }
+    }
+
+    /**
+     * Analyze "before" and "after" information in the node and return sibling name and whether "after" or "before"
+     *
+     * @param \Magento\Framework\View\Layout\Element $node
+     * @return array
+     */
+    protected function _beforeAfterToSibling($node)
+    {
+        $result = array(null, true);
+        if (isset($node['after'])) {
+            $result[0] = (string)$node['after'];
+        } elseif (isset($node['before'])) {
+            $result[0] = (string)$node['before'];
+            $result[1] = false;
+        }
+        return $result;
+    }
+
+
+    /**
+     * Process queue of structural elements and actually add them to structure, and schedule elements for generation
+     *
+     * The catch is to populate parents first, if they are not in the structure yet.
+     * Since layout updates could come in arbitrary order, a case is possible where an element is declared in reference,
+     * while referenced element itself is not declared yet.
+     *
+     * @param \Magento\Framework\View\Layout\ScheduledStructure $scheduledStructure
+     * @param Layout\Data\Structure $structure
+     * @param string $key in _scheduledStructure represent element name
+     * @return void
+     * @SuppressWarnings(PHPMD.NPathComplexity)
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     */
+    public function scheduleElement(
+        Layout\ScheduledStructure $scheduledStructure,
+        Layout\Data\Structure $structure,
+        $key
+    ) {
+        $row = $scheduledStructure->getStructureElement($key);
+        $data = $scheduledStructure->getStructureElementData($key);
+        // if we have reference container to not existed element
+        if (!isset($row[self::SCHEDULED_STRUCTURE_INDEX_TYPE])) {
+            $this->logger->log("Broken reference: missing declaration of the element '{$key}'.", \Zend_Log::CRIT);
+            $scheduledStructure->unsetPathElement($key);
+            $scheduledStructure->unsetStructureElement($key);
+            return;
+        }
+        list($type, $alias, $parentName, $siblingName, $isAfter) = $row;
+        $name = $this->_createStructuralElement($structure, $key, $type, $parentName . $alias);
+        if ($parentName) {
+            // recursively populate parent first
+            if ($scheduledStructure->hasStructureElement($parentName)) {
+                $this->scheduleElement($scheduledStructure, $structure, $parentName);
+            }
+            if ($structure->hasElement($parentName)) {
+                try {
+                    $structure->setAsChild($name, $parentName, $alias);
+                } catch (\Exception $e) {
+                    $this->logger->log($e->getMessage());
+                }
+            } else {
+                $this->logger->log(
+                    "Broken reference: the '{$name}' element cannot be added as child to '{$parentName}', " .
+                    'because the latter doesn\'t exist',
+                    \Zend_Log::CRIT
+                );
+            }
+        }
+
+        // Move from scheduledStructure to scheduledElement
+        $scheduledStructure->unsetStructureElement($key);
+        $scheduledStructure->setElement($name, [$type, $data]);
+
+        /**
+         * Some elements provide info "after" or "before" which sibling they are supposed to go
+         * Make sure to populate these siblings as well and order them correctly
+         */
+        if ($siblingName) {
+            if ($scheduledStructure->hasStructureElement($siblingName)) {
+                $this->scheduleElement($scheduledStructure, $structure, $siblingName);
+            }
+            $structure->reorderChildElement($parentName, $name, $siblingName, $isAfter);
+        }
+    }
+
+    /**
+     * Register an element in structure
+     *
+     * Will assign an "anonymous" name to the element, if provided with an empty name
+     *
+     * @param Layout\Data\Structure $structure
+     * @param string $name
+     * @param string $type
+     * @param string $class
+     * @return string
+     */
+    protected function _createStructuralElement(Layout\Data\Structure $structure, $name, $type, $class)
+    {
+        if (empty($name)) {
+            $name = $this->_generateAnonymousName($class);
+        }
+        $structure->createElement($name, array('type' => $type));
+        return $name;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Layout/etc/body.xsd b/lib/internal/Magento/Framework/View/Layout/etc/body.xsd
index 39cf8f69be928a1a5de0f56df6c55dfd8ddf1c16..6d5e917435084d959674c90c3a24a8ff806d6b03 100644
--- a/lib/internal/Magento/Framework/View/Layout/etc/body.xsd
+++ b/lib/internal/Magento/Framework/View/Layout/etc/body.xsd
@@ -24,11 +24,21 @@
  */
 -->
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:include schemaLocation="elements.xsd"/>
+
     <xs:complexType name="bodyType">
-        <xs:sequence>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
             <xs:element type="bodyAttributeType" name="attribute" maxOccurs="unbounded" minOccurs="0"/>
+            <xs:element ref="block" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="referenceBlock" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="referenceContainer" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="container" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="remove" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="move" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="ui_component" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
+
     <xs:complexType name="bodyAttributeType">
         <xs:simpleContent>
             <xs:extension base="xs:string">
diff --git a/lib/internal/Magento/Framework/View/Layout/etc/elements.xsd b/lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
index 2ff980dabb6fef798ed8645ba3ab7e6f789edc26..9d2ef009311c1708b43e8e55958de7eccb520762 100644
--- a/lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
+++ b/lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
@@ -24,7 +24,6 @@
  */
 -->
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
     <xs:redefine schemaLocation="../../../Data/etc/argument/types.xsd">
         <xs:complexType name="argumentType" abstract="true" mixed="true">
             <xs:complexContent>
@@ -200,8 +199,6 @@
             </xs:documentation>
         </xs:annotation>
         <xs:sequence minOccurs="0" maxOccurs="unbounded">
-            <xs:element ref="remove" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="move" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element ref="block" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element ref="container" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element ref="referenceBlock" minOccurs="0" maxOccurs="unbounded"/>
@@ -330,11 +327,8 @@
             <xs:element ref="arguments" minOccurs="0" maxOccurs="1"/>
             <xs:element ref="block" minOccurs="0"/>
             <xs:element ref="container" minOccurs="0"/>
-            <xs:element ref="remove" minOccurs="0" />
-            <xs:element ref="move" minOccurs="0" />
             <xs:element ref="referenceBlock" minOccurs="0" />
             <xs:element ref="referenceContainer" minOccurs="0"/>
-            <xs:element ref="update" minOccurs="0" />
             <xs:element ref="ui_component" minOccurs="0" />
         </xs:choice>
         <xs:attribute type="elementNameType" name="name" use="required"/>
@@ -345,10 +339,7 @@
             <xs:element ref="referenceContainer" minOccurs="0" />
             <xs:element ref="block" minOccurs="0" />
             <xs:element ref="container" minOccurs="0" />
-            <xs:element ref="remove" minOccurs="0" />
-            <xs:element ref="move" minOccurs="0" />
             <xs:element ref="referenceBlock" minOccurs="0" />
-            <xs:element ref="update" minOccurs="0" />
             <xs:element ref="ui_component" minOccurs="0" />
         </xs:choice>
         <xs:attribute type="elementNameType" name="name" use="required"/>
diff --git a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd
index 3b4c20e53a22d5829bd12e4ece36ef2042a81cb9..fd18aeea54b0de66d08a9e0924aab15da3b2947d 100644
--- a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd
+++ b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd
@@ -55,6 +55,15 @@
         <xs:attribute name="type" type="xs:string"/>
     </xs:complexType>
 
+    <xs:complexType name="headAttributeType">
+        <xs:attribute type="xs:string" name="name"/>
+        <xs:attribute type="xs:string" name="value"/>
+    </xs:complexType>
+
+    <xs:complexType name="srcRemoveType">
+        <xs:attribute name="src" type="xs:string" use="required"/>
+    </xs:complexType>
+
     <xs:complexType name="headType">
         <xs:sequence minOccurs="0" maxOccurs="unbounded">
             <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
@@ -62,6 +71,8 @@
             <xs:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element name="meta" type="metaType" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element name="script" type="scriptType" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="remove" type="srcRemoveType" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="attribute" type="headAttributeType" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
 </xs:schema>
diff --git a/lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd b/lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd
index 00c942b4050309ebd8b97d1a2438de96e3382f6f..c3cf1c9e54ba5f40f7f2e7b674bd2a12875fe852 100644
--- a/lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd
+++ b/lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd
@@ -24,7 +24,6 @@
  */
 -->
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-    <xs:include schemaLocation="elements.xsd"/>
     <xs:include schemaLocation="head.xsd"/>
     <xs:include schemaLocation="body.xsd"/>
     <xs:include schemaLocation="html.xsd"/>
@@ -34,14 +33,7 @@
             <xs:element name="html" type="htmlType" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element name="body" type="bodyType" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element name="head" type="headType" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="block" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="referenceBlock" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="referenceContainer" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="container" minOccurs="0" maxOccurs="unbounded"/>
             <xs:element ref="update" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="remove" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="move" minOccurs="0" maxOccurs="unbounded"/>
-            <xs:element ref="ui_component" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
         <xs:attribute  type="xs:string" name="layout" />
         <xs:attribute  type="xs:string" name="label" />
diff --git a/lib/internal/Magento/Framework/View/LayoutInterface.php b/lib/internal/Magento/Framework/View/LayoutInterface.php
index c892f4cad30dff17bec8759d1e9c82c2ccb48d43..69f5dfff984613d4c9d53f17e819347cc6b7b261 100644
--- a/lib/internal/Magento/Framework/View/LayoutInterface.php
+++ b/lib/internal/Magento/Framework/View/LayoutInterface.php
@@ -205,10 +205,10 @@ interface LayoutInterface
      *
      * @param  string $type
      * @param  string $name
-     * @param  array $attributes
+     * @param  array $arguments
      * @return Element\BlockInterface
      */
-    public function createBlock($type, $name = '', array $attributes = array());
+    public function createBlock($type, $name = '', array $arguments = array());
 
     /**
      * Add a block to registry, create new object if needed
@@ -273,13 +273,6 @@ interface LayoutInterface
      */
     public function getBlockSingleton($type);
 
-    /**
-     * Retrieve block factory
-     *
-     * @return \Magento\Framework\View\Element\BlockFactory
-     */
-    public function getBlockFactory();
-
     /**
      * Get property value of an element
      *
diff --git a/lib/internal/Magento/Framework/View/Page/Builder.php b/lib/internal/Magento/Framework/View/Page/Builder.php
new file mode 100644
index 0000000000000000000000000000000000000000..0339e87937aae5f3e90e5f4de03e5794f571b504
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Builder.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Page;
+
+use Magento\Framework\App;
+use Magento\Framework\View;
+use Magento\Framework\Event;
+use Magento\Framework\Profiler;
+
+/**
+ * Class Builder
+ */
+class Builder extends View\Layout\Builder
+{
+    /**
+     * @var \Magento\Framework\View\Page\Config
+     */
+    protected $pageConfig;
+
+    /**
+     * @var \Magento\Framework\View\Page\Layout\Reader
+     */
+    protected $pageLayoutReader;
+
+    /**
+     * @param View\LayoutInterface $layout
+     * @param App\Request\Http $request
+     * @param Event\ManagerInterface $eventManager
+     * @param Config $pageConfig
+     * @param Layout\Reader $pageLayoutReader
+     */
+    public function __construct(
+        View\LayoutInterface $layout,
+        App\Request\Http $request,
+        Event\ManagerInterface $eventManager,
+        Config $pageConfig,
+        Layout\Reader $pageLayoutReader
+    ) {
+        parent::__construct($layout, $request, $eventManager);
+        $this->pageConfig = $pageConfig;
+        $this->pageLayoutReader = $pageLayoutReader;
+        $this->pageConfig->setBuilder($this);
+    }
+
+    /**
+     * Read page layout before generation generic layout
+     *
+     * @return $this
+     */
+    protected function generateLayoutBlocks()
+    {
+        $this->readPageLayout();
+
+        return parent::generateLayoutBlocks();
+    }
+
+    /**
+     * Read page layout and write structure to ReadContext
+     * @return void
+     */
+    protected function readPageLayout()
+    {
+        $pageLayout = $this->getPageLayout();
+        if ($pageLayout) {
+            $readerContext = $this->layout->getReaderContext();
+            $this->pageLayoutReader->read($readerContext, $pageLayout);
+        }
+    }
+
+    /**
+     * @return string
+     */
+    protected function getPageLayout()
+    {
+        return $this->pageConfig->getPageLayout() ?: $this->layout->getUpdate()->getPageLayout();
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Config.php b/lib/internal/Magento/Framework/View/Page/Config.php
index 825cd66f2b08e5792a77fa809f6b5b0e4e726f57..34827b54f488ca54ef3e2ce2e500ca0f1b34b556 100644
--- a/lib/internal/Magento/Framework/View/Page/Config.php
+++ b/lib/internal/Magento/Framework/View/Page/Config.php
@@ -24,6 +24,9 @@
 
 namespace Magento\Framework\View\Page;
 
+use Magento\Framework\App;
+use Magento\Framework\View;
+
 /**
  * An API for page configuration
  *
@@ -110,6 +113,11 @@ class Config
      */
     protected $favicon;
 
+    /**
+     * @var \Magento\Framework\View\Layout\BuilderInterface
+     */
+    protected $builder;
+
     /**
      * @var array
      */
@@ -134,10 +142,10 @@ class Config
      * @param \Magento\Framework\View\Page\FaviconInterface $favicon
      */
     public function __construct(
-        \Magento\Framework\View\Asset\Repository $assetRepo,
-        \Magento\Framework\View\Asset\GroupedCollection $pageAssets,
-        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Framework\View\Page\FaviconInterface $favicon
+        View\Asset\Repository $assetRepo,
+        View\Asset\GroupedCollection $pageAssets,
+        App\Config\ScopeConfigInterface $scopeConfig,
+        View\Page\FaviconInterface $favicon
     ) {
         $this->assetRepo = $assetRepo;
         $this->pageAssets = $pageAssets;
@@ -145,6 +153,38 @@ class Config
         $this->favicon = $favicon;
     }
 
+    /**
+     * @param View\Layout\BuilderInterface $builder
+     * @return $this
+     */
+    public function setBuilder(View\Layout\BuilderInterface $builder)
+    {
+        $this->builder = $builder;
+        return $this;
+    }
+
+    /**
+     * Build page config from page configurations
+     * @return void
+     */
+    protected function build()
+    {
+        if (!empty($this->builder)) {
+            $this->builder->build();
+        }
+    }
+
+    /**
+     * TODO Will be eliminated in MAGETWO-28359
+     *
+     * @deprecated
+     * @return void
+     */
+    public function publicBuild()
+    {
+        $this->build();
+    }
+
     /**
      * Set page title
      *
@@ -153,6 +193,7 @@ class Config
      */
     public function setTitle($title)
     {
+        $this->build();
         $this->title = $this->scopeConfig->getValue(
             'design/head/title_prefix',
             \Magento\Store\Model\ScopeInterface::SCOPE_STORE
@@ -188,6 +229,7 @@ class Config
      */
     public function getTitle()
     {
+        $this->build();
         if (empty($this->title)) {
             $this->title = $this->getDefaultTitle();
         }
@@ -201,6 +243,7 @@ class Config
      */
     public function getShortTitle()
     {
+        $this->build();
         if (!empty($this->titleChunks)) {
             return reset($this->titleChunks);
         } else {
@@ -228,6 +271,7 @@ class Config
      */
     public function setMetadata($name, $content)
     {
+        $this->build();
         $this->metadata[$name] = $content;
     }
 
@@ -236,6 +280,7 @@ class Config
      */
     public function getMetadata()
     {
+        $this->build();
         return $this->metadata;
     }
 
@@ -255,6 +300,7 @@ class Config
      */
     public function getContentType()
     {
+        $this->build();
         if (empty($this->metadata['content_type'])) {
             $this->metadata['content_type'] = $this->getMediaType() . '; charset=' . $this->getCharset();
         }
@@ -277,6 +323,7 @@ class Config
      */
     public function getMediaType()
     {
+        $this->build();
         if (empty($this->metadata['media_type'])) {
             $this->metadata['media_type'] = $this->scopeConfig->getValue(
                 'design/head/default_media_type',
@@ -302,6 +349,7 @@ class Config
      */
     public function getCharset()
     {
+        $this->build();
         if (empty($this->metadata['charset'])) {
             $this->metadata['charset'] = $this->scopeConfig->getValue(
                 'design/head/default_charset',
@@ -327,6 +375,7 @@ class Config
      */
     public function getDescription()
     {
+        $this->build();
         if (empty($this->metadata['description'])) {
             $this->metadata['description'] = $this->scopeConfig->getValue(
                 'design/head/default_description',
@@ -352,6 +401,7 @@ class Config
      */
     public function getKeywords()
     {
+        $this->build();
         if (empty($this->metadata['keywords'])) {
             $this->metadata['keywords'] = $this->scopeConfig->getValue(
                 'design/head/default_keywords',
@@ -377,6 +427,7 @@ class Config
      */
     public function getRobots()
     {
+        $this->build();
         if (empty($this->metadata['robots'])) {
             $this->metadata['robots'] = $this->scopeConfig->getValue(
                 'design/search_engine_robots/default_robots',
@@ -391,6 +442,7 @@ class Config
      */
     public function getAssetCollection()
     {
+        $this->build();
         return $this->pageAssets;
     }
 
@@ -476,6 +528,7 @@ class Config
      */
     public function setElementAttribute($elementType, $attribute, $value)
     {
+        $this->build();
         if (array_search($elementType, $this->allowedTypes) === false) {
             throw new \Magento\Framework\Exception($elementType . ' isn\'t allowed');
         }
@@ -492,6 +545,7 @@ class Config
      */
     public function getElementAttribute($elementType, $attribute)
     {
+        $this->build();
         return isset($this->elements[$elementType][$attribute]) ? $this->elements[$elementType][$attribute] : null;
     }
 
@@ -501,6 +555,7 @@ class Config
      */
     public function getElementAttributes($elementType)
     {
+        $this->build();
         return isset($this->elements[$elementType]) ? $this->elements[$elementType] : [];
     }
 
@@ -509,7 +564,6 @@ class Config
      *
      * @param string $handle
      * @return $this
-     * @throws \UnexpectedValueException
      */
     public function setPageLayout($handle)
     {
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Generator/Body.php b/lib/internal/Magento/Framework/View/Page/Config/Generator/Body.php
new file mode 100644
index 0000000000000000000000000000000000000000..7141bd9ca89687ab6abdc3b00dfb4f49bc386913
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Config/Generator/Body.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Page\Config\Generator;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page\Config\Structure;
+
+class Body implements Layout\GeneratorInterface
+{
+    /**
+     * Type of generator
+     */
+    const TYPE = 'body';
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Framework\View\Page\Config $pageConfig
+     */
+    public function __construct(\Magento\Framework\View\Page\Config $pageConfig)
+    {
+        $this->pageConfig = $pageConfig;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return self::TYPE;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Generator\Context $generatorContext
+     * @return $this
+     */
+    public function process(Layout\Reader\Context $readerContext, Layout\Generator\Context $generatorContext)
+    {
+        $structure = $readerContext->getPageConfigStructure();
+        $this->processBodyClasses($structure);
+        return $this;
+    }
+
+    /**
+     * Process body classes, add to page configuration from scheduled structure
+     *
+     * @param \Magento\Framework\View\Page\Config\Structure $pageStructure
+     * @return $this
+     */
+    protected function processBodyClasses(Structure $pageStructure)
+    {
+        foreach ($pageStructure->getBodyClasses() as $class) {
+            $this->pageConfig->addBodyClass($class);
+        }
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Generator.php b/lib/internal/Magento/Framework/View/Page/Config/Generator/Head.php
similarity index 60%
rename from lib/internal/Magento/Framework/View/Page/Config/Generator.php
rename to lib/internal/Magento/Framework/View/Page/Config/Generator/Head.php
index 033ce3a5730545112a791b54d68653614a45fa27..29383a8ce636836d501792e7ad1924049d9f24c6 100644
--- a/lib/internal/Magento/Framework/View/Page/Config/Generator.php
+++ b/lib/internal/Magento/Framework/View/Page/Config/Generator/Head.php
@@ -18,43 +18,33 @@
  * versions in the future. If you wish to customize Magento for your
  * needs please refer to http://www.magentocommerce.com for more information.
  *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+namespace Magento\Framework\View\Page\Config\Generator;
 
-namespace Magento\Framework\View\Page\Config;
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page\Config\Structure;
 
-use Magento\Framework\View\Page\Config;
-
-/**
- * Page config generator model
- */
-class Generator
+class Head implements Layout\GeneratorInterface
 {
     /**#@+
      * Available src_type in assets
      */
     const SRC_TYPE_RESOURCE = 'resource';
-
     const SRC_TYPE_CONTROLLER = 'controller';
-
     const SRC_TYPE_URL = 'url';
     /**#@-*/
 
     /**
-     * Virtual content type
-     */
-    const VIRTUAL_CONTENT_TYPE_LINK = 'link';
-
-    /**
-     * @var \Magento\Framework\View\Page\Config\Structure
+     * Type of generator
      */
-    protected $structure;
+    const TYPE = 'head';
 
     /**
-     * @var \Magento\Framework\View\Page\Config
+     * Virtual content type
      */
-    protected $pageConfig;
+    const VIRTUAL_CONTENT_TYPE_LINK = 'link';
 
     /**
      * @var array
@@ -80,38 +70,59 @@ class Generator
     ];
 
     /**
-     * @param \Magento\Framework\View\Page\Config\Structure $structure
+     * @var \Magento\Framework\View\Page\Config
+     */
+    protected $pageConfig;
+
+    /**
+     * Constructor
+     *
      * @param \Magento\Framework\View\Page\Config $pageConfig
      */
-    public function __construct(Structure $structure, Config $pageConfig)
+    public function __construct(\Magento\Framework\View\Page\Config $pageConfig)
     {
-        $this->structure = $structure;
         $this->pageConfig = $pageConfig;
     }
 
     /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getType()
+    {
+        return self::TYPE;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Generator\Context $generatorContext
      * @return $this
      */
-    public function process()
+    public function process(Layout\Reader\Context $readerContext, Layout\Generator\Context $generatorContext)
     {
-        $this->structure->processRemoveAssets();
-        $this->processAssets();
-        $this->processTitle();
-        $this->processMetadata();
-        $this->structure->processRemoveElementAttributes();
-        $this->processElementAttributes();
-        $this->processBodyClasses();
+        $structure = $readerContext->getPageConfigStructure();
+        $structure->processRemoveAssets();
+        $structure->processRemoveElementAttributes();
+
+        $this->processAssets($structure);
+        $this->processTitle($structure);
+        $this->processMetadata($structure);
+        $this->processElementAttributes($structure);
         return $this;
     }
 
     /**
      * Add assets to page config
      *
+     * @param \Magento\Framework\View\Page\Config\Structure $pageStructure
      * @return $this
      */
-    protected function processAssets()
+    protected function processAssets(Structure $pageStructure)
     {
-        foreach ($this->structure->getAssets() as $name => $data) {
+        foreach ($pageStructure->getAssets() as $name => $data) {
             if (isset($data['src_type']) && in_array($data['src_type'], $this->remoteAssetTypes)) {
                 $this->pageConfig->addRemotePageAsset(
                     $name,
@@ -126,6 +137,8 @@ class Generator
     }
 
     /**
+     * Process asset properties
+     *
      * @param array $data
      * @return array
      */
@@ -145,46 +158,44 @@ class Generator
     }
 
     /**
+     * Process title
+     *
+     * @param \Magento\Framework\View\Page\Config\Structure $pageStructure
      * @return $this
      */
-    protected function processTitle()
+    protected function processTitle(Structure $pageStructure)
     {
-        $this->pageConfig->setTitle($this->structure->getTitle());
+        $this->pageConfig->setTitle($pageStructure->getTitle());
         return $this;
     }
 
     /**
+     * Process metadata
+     *
+     * @param \Magento\Framework\View\Page\Config\Structure $pageStructure
      * @return $this
      */
-    protected function processMetadata()
+    protected function processMetadata(Structure $pageStructure)
     {
-        foreach ($this->structure->getMetadata() as $name => $content) {
+        foreach ($pageStructure->getMetadata() as $name => $content) {
             $this->pageConfig->setMetadata($name, $content);
         }
         return $this;
     }
 
     /**
+     * Process all element attributes
+     *
+     * @param \Magento\Framework\View\Page\Config\Structure $pageStructure
      * @return $this
      */
-    protected function processElementAttributes()
+    protected function processElementAttributes(Structure $pageStructure)
     {
-        foreach ($this->structure->getElementAttributes() as $element => $attributes) {
+        foreach ($pageStructure->getElementAttributes() as $element => $attributes) {
             foreach ($attributes as $name => $value) {
                 $this->pageConfig->setElementAttribute($element, $name, $value);
             }
         }
         return $this;
     }
-
-    /**
-     * @return $this
-     */
-    protected function processBodyClasses()
-    {
-        foreach ($this->structure->getBodyClasses() as $class) {
-            $this->pageConfig->addBodyClass($class);
-        }
-        return $this;
-    }
 }
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Reader.php b/lib/internal/Magento/Framework/View/Page/Config/Reader.php
deleted file mode 100644
index d1957b409676a2777a3a322349fc42c061cf58e7..0000000000000000000000000000000000000000
--- a/lib/internal/Magento/Framework/View/Page/Config/Reader.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Framework\View\Page\Config;
-
-use Magento\Framework\View\Page\Config as PageConfig;
-
-class Reader
-{
-    /**#@+
-     * Supported head elements
-     */
-    const HEAD_CSS = 'css';
-
-    const HEAD_SCRIPT = 'script';
-
-    const HEAD_LINK = 'link';
-
-    const HEAD_REMOVE = 'remove';
-
-    const HEAD_TITLE = 'title';
-
-    const HEAD_META = 'meta';
-    /**#@-*/
-
-    /**
-     * Attribute element
-     */
-    const ATTRIBUTE = 'attribute';
-
-    /**
-     * @var Structure
-     */
-    protected $structure;
-
-    /**
-     * @param \Magento\Framework\View\Page\Config\Structure $structure
-     */
-    public function __construct(Structure $structure)
-    {
-        $this->structure = $structure;
-    }
-
-    /**
-     * @param \Magento\Framework\View\Layout\Element $htmlElement
-     * @return $this
-     */
-    public function readHtml($htmlElement)
-    {
-        /** @var \Magento\Framework\View\Layout\Element $element */
-        foreach ($htmlElement as $element) {
-            switch ($element->getName()) {
-                case self::ATTRIBUTE:
-                    $this->structure->setElementAttribute(
-                        PageConfig::ELEMENT_TYPE_HTML,
-                        $element->getAttribute('name'),
-                        $element->getAttribute('value')
-                    );
-                    break;
-
-                default:
-                    break;
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * @param \Magento\Framework\View\Layout\Element $bodyElement
-     * @return $this
-     */
-    public function readBody($bodyElement)
-    {
-        /** @var \Magento\Framework\View\Layout\Element $element */
-        foreach ($bodyElement as $element) {
-            switch ($element->getName()) {
-                case self::ATTRIBUTE:
-                    $this->setBodyAttributeTosStructure($element);
-                    break;
-
-                default:
-                    break;
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * @param \Magento\Framework\View\Layout\Element $element
-     * @return $this
-     */
-    protected function setBodyAttributeTosStructure($element)
-    {
-        if ($element->getAttribute('name') == PageConfig::BODY_ATTRIBUTE_CLASS) {
-            $this->structure->setBodyClass($element->getAttribute('value'));
-        } else {
-            $this->structure->setElementAttribute(
-                PageConfig::ELEMENT_TYPE_BODY,
-                $element->getAttribute('name'),
-                $element->getAttribute('value')
-            );
-        }
-        return $this;
-    }
-
-    /**
-     * @param \Magento\Framework\View\Layout\Element $headElement
-     * @return $this
-     */
-    public function readHead($headElement)
-    {
-        /** @var \Magento\Framework\View\Layout\Element $element */
-        foreach ($headElement as $element) {
-            switch ($element->getName()) {
-                case self::HEAD_CSS:
-                case self::HEAD_SCRIPT:
-                case self::HEAD_LINK:
-                    $this->structure->addAssets($element->getAttribute('src'), $this->getAttributes($element));
-                    break;
-
-                case self::HEAD_REMOVE:
-                    $this->structure->removeAssets($element->getAttribute('src'));
-                    break;
-
-                case self::HEAD_TITLE:
-                    $this->structure->setTitle($element);
-                    break;
-
-                case self::HEAD_META:
-                    $this->structure->setMetaData($element->getAttribute('name'), $element->getAttribute('content'));
-                    break;
-
-                case self::ATTRIBUTE:
-                    $this->structure->setElementAttribute(
-                        PageConfig::ELEMENT_TYPE_HEAD,
-                        $element->getAttribute('name'),
-                        $element->getAttribute('value')
-                    );
-                    break;
-
-                default:
-                    break;
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * @param \Magento\Framework\View\Layout\Element $element
-     * @return array
-     */
-    protected function getAttributes($element)
-    {
-        $attributes = [];
-        foreach ($element->attributes() as $attrName => $attrValue) {
-            $attributes[$attrName] = (string)$attrValue;
-        }
-        return $attributes;
-    }
-}
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php b/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php
new file mode 100644
index 0000000000000000000000000000000000000000..905c5c0559539b0887ccd9f43a2cf3259d80ad2c
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Page\Config\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page\Config as PageConfig;
+
+class Body implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_BODY = 'body';
+    /**#@-*/
+
+    /**#@+
+     * Supported body elements
+     */
+    const BODY_ATTRIBUTE = 'attribute';
+    /**#@-*/
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool
+     */
+    protected $readerPool;
+
+    /**
+     * @param Layout\Reader\Pool $readerPool
+     */
+    public function __construct(Layout\Reader\Pool $readerPool)
+    {
+        $this->readerPool = $readerPool;
+    }
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_BODY];
+    }
+
+    /**
+     * Process Body structure
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Element $bodyElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(
+        Layout\Reader\Context $readerContext,
+        Layout\Element $bodyElement,
+        Layout\Element $parentElement
+    ) {
+        /** @var \Magento\Framework\View\Layout\Element $element */
+        foreach ($bodyElement as $element) {
+            switch ($element->getName()) {
+                case self::BODY_ATTRIBUTE:
+                    $this->setBodyAttributeTosStructure($readerContext, $element);
+                    break;
+
+                default:
+                    break;
+            }
+        }
+        return $this->readerPool->readStructure($readerContext, $bodyElement);
+    }
+
+    /**
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Element $element
+     * @return $this
+     */
+    protected function setBodyAttributeTosStructure(Layout\Reader\Context $readerContext, Layout\Element $element)
+    {
+        if ($element->getAttribute('name') == PageConfig::BODY_ATTRIBUTE_CLASS) {
+            $readerContext->getPageConfigStructure()->setBodyClass($element->getAttribute('value'));
+        } else {
+            $readerContext->getPageConfigStructure()->setElementAttribute(
+                PageConfig::ELEMENT_TYPE_BODY,
+                $element->getAttribute('name'),
+                $element->getAttribute('value')
+            );
+        }
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Reader/Head.php b/lib/internal/Magento/Framework/View/Page/Config/Reader/Head.php
new file mode 100644
index 0000000000000000000000000000000000000000..983638276e7b766f19d2ad35238d3c4340763605
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Config/Reader/Head.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Page\Config\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page\Config as PageConfig;
+
+class Head implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_HEAD = 'head';
+    /**#@-*/
+
+    /**#@+
+     * Supported head elements
+     */
+    const HEAD_CSS = 'css';
+
+    const HEAD_SCRIPT = 'script';
+
+    const HEAD_LINK = 'link';
+
+    const HEAD_REMOVE = 'remove';
+
+    const HEAD_TITLE = 'title';
+
+    const HEAD_META = 'meta';
+
+    const HEAD_ATTRIBUTE = 'attribute';
+    /**#@-*/
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_HEAD];
+    }
+
+    /**
+     * Process Head structure
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Element $headElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(
+        Layout\Reader\Context $readerContext,
+        Layout\Element $headElement,
+        Layout\Element $parentElement
+    ) {
+        /** @var \Magento\Framework\View\Layout\Element $node */
+        foreach ($headElement as $node) {
+            switch ($node->getName()) {
+                case self::HEAD_CSS:
+                case self::HEAD_SCRIPT:
+                case self::HEAD_LINK:
+                    $readerContext->getPageConfigStructure()
+                        ->addAssets($node->getAttribute('src'), $this->getAttributes($node));
+                    break;
+
+                case self::HEAD_REMOVE:
+                    $readerContext->getPageConfigStructure()->removeAssets($node->getAttribute('src'));
+                    break;
+
+                case self::HEAD_TITLE:
+                    $readerContext->getPageConfigStructure()->setTitle($node);
+                    break;
+
+                case self::HEAD_META:
+                    $readerContext->getPageConfigStructure()
+                        ->setMetaData($node->getAttribute('name'), $node->getAttribute('content'));
+                    break;
+
+                case self::HEAD_ATTRIBUTE:
+                    $readerContext->getPageConfigStructure()->setElementAttribute(
+                        PageConfig::ELEMENT_TYPE_HEAD,
+                        $node->getAttribute('name'),
+                        $node->getAttribute('value')
+                    );
+                    break;
+
+                default:
+                    break;
+            }
+        }
+        return $this;
+    }
+
+    /**
+     * @param \Magento\Framework\View\Layout\Element $element
+     * @return array
+     */
+    protected function getAttributes($element)
+    {
+        $attributes = [];
+        foreach ($element->attributes() as $attrName => $attrValue) {
+            $attributes[$attrName] = (string)$attrValue;
+        }
+        return $attributes;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Reader/Html.php b/lib/internal/Magento/Framework/View/Page/Config/Reader/Html.php
new file mode 100644
index 0000000000000000000000000000000000000000..9471e606c5733a642cdd77bf5e7c5f20f119a233
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Config/Reader/Html.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\View\Page\Config\Reader;
+
+use Magento\Framework\View\Layout;
+use Magento\Framework\View\Page\Config as PageConfig;
+
+class Html implements Layout\ReaderInterface
+{
+    /**#@+
+     * Supported types
+     */
+    const TYPE_HTML = 'html';
+    /**#@-*/
+
+    /**#@+
+     * Supported html elements
+     */
+    const HTML_ATTRIBUTE = 'attribute';
+    /**#@-*/
+
+    /**
+     * @return string[]
+     */
+    public function getSupportedNodes()
+    {
+        return [self::TYPE_HTML];
+    }
+
+    /**
+     * Process Html structure
+     *
+     * @param Layout\Reader\Context $readerContext
+     * @param Layout\Element $htmlElement
+     * @param Layout\Element $parentElement
+     * @return $this
+     */
+    public function process(
+        Layout\Reader\Context $readerContext,
+        Layout\Element $htmlElement,
+        Layout\Element $parentElement
+    ) {
+        /** @var \Magento\Framework\View\Layout\Element $element */
+        foreach ($htmlElement as $element) {
+            switch ($element->getName()) {
+                case self::HTML_ATTRIBUTE:
+                    $$readerContext->getPageConfigStructure()->setElementAttribute(
+                        PageConfig::ELEMENT_TYPE_HTML,
+                        $element->getAttribute('name'),
+                        $element->getAttribute('value')
+                    );
+                    break;
+
+                default:
+                    break;
+            }
+        }
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Config/Renderer.php b/lib/internal/Magento/Framework/View/Page/Config/Renderer.php
index 6998113ea81a9eddcd75fa7f764473746850318a..294d03d74b62655eebe6f13782173e25d5d23903 100644
--- a/lib/internal/Magento/Framework/View/Page/Config/Renderer.php
+++ b/lib/internal/Magento/Framework/View/Page/Config/Renderer.php
@@ -211,13 +211,13 @@ class Renderer
         if ($this->pageConfig->getFaviconFile()) {
             $this->pageConfig->addRemotePageAsset(
                 $this->pageConfig->getFaviconFile(),
-                Generator::VIRTUAL_CONTENT_TYPE_LINK,
+                Generator\Head::VIRTUAL_CONTENT_TYPE_LINK,
                 ['attributes' => ['rel' => 'icon', 'type' => 'image/x-icon']],
                 'icon'
             );
             $this->pageConfig->addRemotePageAsset(
                 $this->pageConfig->getFaviconFile(),
-                Generator::VIRTUAL_CONTENT_TYPE_LINK,
+                Generator\Head::VIRTUAL_CONTENT_TYPE_LINK,
                 ['attributes' => ['rel' => 'shortcut icon', 'type' => 'image/x-icon']],
                 'shortcut-icon'
             );
diff --git a/lib/internal/Magento/Framework/View/Page/Config/RendererFactory.php b/lib/internal/Magento/Framework/View/Page/Config/RendererFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..e705d842af0455e21b35acf75616807183312c06
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Config/RendererFactory.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Page\Config;
+
+/**
+ * Factory class for \Magento\Framework\View\Page\Config\Renderer
+ */
+class RendererFactory
+{
+    /**
+     * Object Manager instance
+     *
+     * @var \Magento\Framework\ObjectManager
+     */
+    protected $objectManager = null;
+
+    /**
+     * Instance name to create
+     *
+     * @var string
+     */
+    protected $instanceName = null;
+
+    /**
+     * Factory constructor
+     *
+     * @param \Magento\Framework\ObjectManager $objectManager
+     * @param string $instanceName
+     */
+    public function __construct(
+        \Magento\Framework\ObjectManager $objectManager,
+        $instanceName = 'Magento\Framework\View\Page\Config\Renderer'
+    ) {
+        $this->objectManager = $objectManager;
+        $this->instanceName = $instanceName;
+    }
+
+    /**
+     * Create class instance with specified parameters
+     *
+     * @param array $data
+     * @return \Magento\Framework\View\Page\Config\Renderer
+     */
+    public function create(array $data = array())
+    {
+        return $this->objectManager->create($this->instanceName, $data);
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/ConfigFactory.php b/lib/internal/Magento/Framework/View/Page/ConfigFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..55e3bc0d3bab21454a3118fae1af145d49ccfc64
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/ConfigFactory.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Page;
+
+/**
+ * Factory class for \Magento\Framework\View\Page\Config
+ */
+class ConfigFactory
+{
+    /**
+     * Object Manager instance
+     *
+     * @var \Magento\Framework\ObjectManager
+     */
+    protected $objectManager = null;
+
+    /**
+     * Instance name to create
+     *
+     * @var string
+     */
+    protected $instanceName = null;
+
+    /**
+     * Factory constructor
+     *
+     * @param \Magento\Framework\ObjectManager $objectManager
+     * @param string $instanceName
+     */
+    public function __construct(
+        \Magento\Framework\ObjectManager $objectManager,
+        $instanceName = 'Magento\Framework\View\Page\Config'
+    ) {
+        $this->objectManager = $objectManager;
+        $this->instanceName = $instanceName;
+    }
+
+    /**
+     * Create class instance with specified parameters
+     *
+     * @param array $data
+     * @return \Magento\Framework\View\Page\Config
+     */
+    public function create(array $data = array())
+    {
+        return $this->objectManager->create($this->instanceName, $data);
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Page/Layout/Reader.php b/lib/internal/Magento/Framework/View/Page/Layout/Reader.php
new file mode 100644
index 0000000000000000000000000000000000000000..4469548c170ca6c259f0104c7ec96957b6759695
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Page/Layout/Reader.php
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Page\Layout;
+
+/**
+ * Class Page layout reader
+ */
+class Reader
+{
+    /**
+     * Merge cache suffix
+     */
+    const MERGE_CACHE_SUFFIX = 'page_layout';
+
+    /**
+     * @var \Magento\Framework\View\Design\Theme\ResolverInterface
+     */
+    protected $themeResolver;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ProcessorFactory
+     */
+    protected $processorFactory;
+
+    /**
+     * @var \Magento\Framework\View\File\CollectorInterface
+     */
+    protected $pageLayoutFileSource;
+
+    /**
+     * @var \Magento\Framework\View\Layout\ProcessorInterface
+     */
+    protected $pageLayoutMerge;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool
+     */
+    protected $reader;
+
+    /**
+     * @param \Magento\Framework\View\Design\Theme\ResolverInterface $themeResolver
+     * @param \Magento\Framework\View\Layout\ProcessorFactory $processorFactory
+     * @param \Magento\Framework\View\File\CollectorInterface $pageLayoutFileSource
+     * @param \Magento\Framework\View\Layout\Reader\Pool $reader
+     */
+    public function __construct(
+        \Magento\Framework\View\Design\Theme\ResolverInterface $themeResolver,
+        \Magento\Framework\View\Layout\ProcessorFactory $processorFactory,
+        \Magento\Framework\View\File\CollectorInterface $pageLayoutFileSource,
+        \Magento\Framework\View\Layout\Reader\Pool $reader
+    ) {
+        $this->themeResolver = $themeResolver;
+        $this->processorFactory = $processorFactory;
+        $this->pageLayoutFileSource = $pageLayoutFileSource;
+        $this->reader = $reader;
+    }
+
+    /**
+     * Retrieve the layout update instance
+     *
+     * @return \Magento\Framework\View\Layout\ProcessorInterface
+     */
+    protected function getPageLayoutMerge()
+    {
+        if (!$this->pageLayoutMerge) {
+            $this->pageLayoutMerge = $this->processorFactory->create([
+                'theme' => $this->themeResolver->get(),
+                'fileSource' => $this->pageLayoutFileSource,
+                'cacheSuffix' => self::MERGE_CACHE_SUFFIX
+            ]);
+        }
+        return $this->pageLayoutMerge;
+    }
+
+    /**
+     * @param \Magento\Framework\View\Layout\Reader\Context $readerContext
+     * @param string $pageLayout
+     * @return void
+     */
+    public function read(\Magento\Framework\View\Layout\Reader\Context $readerContext, $pageLayout)
+    {
+        $this->getPageLayoutMerge()->load($pageLayout);
+        $xml = $this->getPageLayoutMerge()->asSimplexml();
+        $this->reader->readStructure($readerContext, $xml);
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Result/Layout.php b/lib/internal/Magento/Framework/View/Result/Layout.php
index 6c0585ab83747ff2d97940c91013c9cae2fb561e..810fb6604f82a64c3548cf873ebec436f56e29bb 100644
--- a/lib/internal/Magento/Framework/View/Result/Layout.php
+++ b/lib/internal/Magento/Framework/View/Result/Layout.php
@@ -24,21 +24,32 @@
 
 namespace Magento\Framework\View\Result;
 
+use Magento\Framework;
 use Magento\Framework\View;
+use Magento\Framework\Controller\AbstractResult;
 use Magento\Framework\App\ResponseInterface;
 
 /**
  * A generic layout response can be used for rendering any kind of layout
  * So it comprises a response body from the layout elements it has and sets it to the HTTP response
  */
-class Layout extends View\Element\Template
-    //implements ResultInterface
+class Layout extends AbstractResult
 {
     /**
      * @var \Magento\Framework\View\LayoutFactory
      */
     protected $layoutFactory;
 
+    /**
+     * @var \Magento\Framework\View\Layout\BuilderFactory
+     */
+    protected $layoutBuilderFactory;
+
+    /**
+     * @var \Magento\Framework\View\Layout\Reader\Pool
+     */
+    protected $layoutReaderPool;
+
     /**
      * @var \Magento\Framework\View\LayoutInterface
      */
@@ -50,42 +61,112 @@ class Layout extends View\Element\Template
     protected $translateInline;
 
     /**
+     * @var \Magento\Framework\Event\ManagerInterface
+     */
+    protected $eventManager;
+
+    /**
+     * @var \Magento\Framework\App\Request\Http
+     */
+    protected $request;
+
+    /**
+     * Constructor
+     *
      * @param View\Element\Template\Context $context
      * @param View\LayoutFactory $layoutFactory
-     * @param \Magento\Framework\Translate\InlineInterface $translateInline
-     * @param array $data
+     * @param View\Layout\Reader\Pool $layoutReaderPool
+     * @param Framework\Translate\InlineInterface $translateInline
+     * @param View\Layout\BuilderFactory $layoutBuilderFactory
+     * @param bool $isIsolated
      */
     public function __construct(
         View\Element\Template\Context $context,
         View\LayoutFactory $layoutFactory,
-        \Magento\Framework\Translate\InlineInterface $translateInline,
-        array $data = array()
+        View\Layout\Reader\Pool $layoutReaderPool,
+        Framework\Translate\InlineInterface $translateInline,
+        View\Layout\BuilderFactory $layoutBuilderFactory,
+        $isIsolated = false
     ) {
         $this->layoutFactory = $layoutFactory;
+        $this->layoutBuilderFactory = $layoutBuilderFactory;
+        $this->layoutReaderPool = $layoutReaderPool;
+        $this->eventManager = $context->getEventManager();
+        $this->request = $context->getRequest();
         $this->translateInline = $translateInline;
-        parent::__construct($context, $data);
+        // TODO Shared layout object will be deleted in MAGETWO-28359
+        $this->layout = $isIsolated
+            ? $this->layoutFactory->create(['reader' => $this->layoutReaderPool])
+            : $context->getLayout();
+        $this->initLayoutBuilder();
     }
 
     /**
-     * Get layout instance for current page
+     * Create layout builder
      *
-     * TODO: This layout model must be isolated, now are used shared instance of layout (MAGETWO-26282)
+     * @return void
+     */
+    protected function initLayoutBuilder()
+    {
+        $this->layoutBuilderFactory->create(View\Layout\BuilderFactory::TYPE_LAYOUT, ['layout' => $this->layout]);
+    }
+
+    /**
+     * Get layout instance for current page
      *
      * @return \Magento\Framework\View\Layout
      */
     public function getLayout()
     {
-        return $this->_layout;
+        return $this->layout;
     }
 
     /**
-     * Create new instance of layout for current page
-     *
      * @return $this
      */
     public function initLayout()
     {
-        $this->layout = $this->layoutFactory->create();
+        return $this;
+    }
+
+    /**
+     * @return $this
+     */
+    public function addDefaultHandle()
+    {
+        $this->addHandle($this->getDefaultLayoutHandle());
+        return $this;
+    }
+
+    /**
+     * Retrieve the default layout handle name for the current action
+     *
+     * @return string
+     */
+    public function getDefaultLayoutHandle()
+    {
+        return strtolower($this->request->getFullActionName());
+    }
+
+    /**
+     * @param string|string[] $handleName
+     * @return $this
+     */
+    public function addHandle($handleName)
+    {
+        $this->getLayout()->getUpdate()->addHandle($handleName);
+        return $this;
+    }
+
+    /**
+     * Add update to merge object
+     *
+     * @param string $update
+     * @return $this
+     */
+    public function addUpdate($update)
+    {
+        $this->getLayout()->getUpdate()->addUpdate($update);
         return $this;
     }
 
@@ -97,7 +178,30 @@ class Layout extends View\Element\Template
      */
     public function renderResult(ResponseInterface $response)
     {
-        $response->appendBody($this->_layout->getOutput());
+        \Magento\Framework\Profiler::start('LAYOUT');
+        \Magento\Framework\Profiler::start('layout_render');
+
+        $this->applyHttpHeaders($response);
+        $this->render($response);
+
+        $this->eventManager->dispatch('controller_action_layout_render_before');
+        $this->eventManager->dispatch(
+            'controller_action_layout_render_before_' . $this->request->getFullActionName()
+        );
+        \Magento\Framework\Profiler::stop('layout_render');
+        \Magento\Framework\Profiler::stop('LAYOUT');
+        return $this;
+    }
+
+    /**
+     * Render current layout
+     *
+     * @param ResponseInterface $response
+     * @return $this
+     */
+    protected function render(ResponseInterface $response)
+    {
+        $response->appendBody($this->layout->getOutput());
         return $this;
     }
 }
diff --git a/lib/internal/Magento/Framework/View/Result/LayoutFactory.php b/lib/internal/Magento/Framework/View/Result/LayoutFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..caac4ddefb61889b689ddb11e657ed9a72e5f9e4
--- /dev/null
+++ b/lib/internal/Magento/Framework/View/Result/LayoutFactory.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\View\Result;
+
+use Magento\Framework\ObjectManager;
+
+class LayoutFactory
+{
+    /**
+     * @var ObjectManager
+     */
+    private $objectManager;
+
+    /**
+     * @var string
+     */
+    protected $instanceName;
+
+    /**
+     * @param ObjectManager $objectManager
+     * @param string $instanceName
+     */
+    public function __construct(ObjectManager $objectManager, $instanceName = 'Magento\Framework\View\Result\Layout')
+    {
+        $this->objectManager = $objectManager;
+        $this->instanceName = $instanceName;
+    }
+
+    /**
+     * @return \Magento\Framework\View\Result\Layout
+     */
+    public function create()
+    {
+        /** @var \Magento\Framework\View\Result\Layout $resultLayout */
+        $resultLayout = $this->objectManager->create($this->instanceName);
+        $resultLayout->addDefaultHandle();
+        return $resultLayout;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Result/Page.php b/lib/internal/Magento/Framework/View/Result/Page.php
index 77f6fb8ac5f1378e1d072e41a0e9fc76a78af620..341a72be0d00331975722c3a22c763033201606e 100644
--- a/lib/internal/Magento/Framework/View/Result/Page.php
+++ b/lib/internal/Magento/Framework/View/Result/Page.php
@@ -24,6 +24,7 @@
 
 namespace Magento\Framework\View\Result;
 
+use Magento\Framework;
 use Magento\Framework\View;
 use Magento\Framework\App\ResponseInterface;
 
@@ -57,27 +58,93 @@ class Page extends Layout
      */
     protected $pageConfigRenderer;
 
+    /**
+     * @var \Magento\Framework\View\Page\Config\RendererFactory
+     */
+    protected $pageConfigRendererFactory;
+
+    /**
+     * @var \Magento\Framework\View\Page\Layout\Reader
+     */
+    protected $pageLayoutReader;
+
+    /**
+     * @var \Magento\Framework\View\FileSystem
+     */
+    protected $viewFileSystem;
+
+    /**
+     * @var array
+     */
+    protected $viewVars;
+
+    /**
+     * @var string
+     */
+    protected $template;
+
     /**
      * Constructor
      *
      * @param View\Element\Template\Context $context
      * @param View\LayoutFactory $layoutFactory
-     * @param \Magento\Framework\Translate\InlineInterface $translateInline
-     * @param \Magento\Framework\View\Page\Config\Renderer $pageConfigRenderer
+     * @param View\Layout\Reader\Pool $layoutReaderPool
+     * @param Framework\Translate\InlineInterface $translateInline
+     * @param View\Layout\BuilderFactory $layoutBuilderFactory
+     * @param View\Page\Config\RendererFactory $pageConfigRendererFactory
+     * @param View\Page\Layout\Reader $pageLayoutReader
      * @param string $template
-     * @param array $data
+     * @param bool $isIsolated
      */
     public function __construct(
         View\Element\Template\Context $context,
         View\LayoutFactory $layoutFactory,
-        \Magento\Framework\Translate\InlineInterface $translateInline,
-        View\Page\Config\Renderer $pageConfigRenderer,
+        View\Layout\Reader\Pool $layoutReaderPool,
+        Framework\Translate\InlineInterface $translateInline,
+        View\Layout\BuilderFactory $layoutBuilderFactory,
+        View\Page\Config\RendererFactory $pageConfigRendererFactory,
+        View\Page\Layout\Reader $pageLayoutReader,
         $template,
-        array $data = array()
+        $isIsolated = false
     ) {
-        parent::__construct($context, $layoutFactory, $translateInline, $data);
-        $this->pageConfigRenderer = $pageConfigRenderer;
-        $this->_template = $template;
+        $this->pageConfig = $context->getPageConfig();
+        $this->pageLayoutReader = $pageLayoutReader;
+        $this->viewFileSystem = $context->getViewFileSystem();
+        $this->pageConfigRendererFactory = $pageConfigRendererFactory;
+        $this->template = $template;
+        parent::__construct(
+            $context,
+            $layoutFactory,
+            $layoutReaderPool,
+            $translateInline,
+            $layoutBuilderFactory,
+            $isIsolated
+        );
+        $this->initPageConfigReader();
+    }
+
+    /**
+     * Initialize page config reader
+     *
+     * @return void
+     */
+    protected function initPageConfigReader()
+    {
+        $this->pageConfigRenderer = $this->pageConfigRendererFactory->create(['pageConfig' => $this->pageConfig]);
+    }
+
+    /**
+     * Create layout builder
+     *
+     * @return void
+     */
+    protected function initLayoutBuilder()
+    {
+        $this->layoutBuilderFactory->create(View\Layout\BuilderFactory::TYPE_PAGE, [
+            'layout' => $this->layout,
+            'pageConfig' => $this->pageConfig,
+            'pageLayoutReader' => $this->pageLayoutReader
+        ]);
     }
 
     /**
@@ -85,13 +152,24 @@ class Page extends Layout
      */
     public function initLayout()
     {
+        $this->addHandle('default');
+        $this->addHandle($this->getDefaultLayoutHandle());
         $update = $this->getLayout()->getUpdate();
-        $update->addHandle('default');
-        $update->addHandle($this->getDefaultLayoutHandle());
         if ($update->isLayoutDefined()) {
             $update->removeHandle('default');
         }
-        return $this;
+        return parent::initLayout();
+    }
+
+    /**
+     * Add default handle
+     *
+     * @return $this
+     */
+    public function addDefaultHandle()
+    {
+        $this->addHandle('default');
+        return parent::addDefaultHandle();
     }
 
     /**
@@ -117,43 +195,35 @@ class Page extends Layout
             $pageHandles[] = $handle . '_' . $key . '_' . $value;
         }
         // Do not sort array going into add page handles. Ensure default layout handle is added first.
-        return $this->getLayout()->getUpdate()->addHandle($pageHandles);
-    }
-
-    /**
-     * Retrieve the default layout handle name for the current action
-     *
-     * @return string
-     */
-    public function getDefaultLayoutHandle()
-    {
-        return strtolower($this->_request->getFullActionName());
+        return $this->addHandle($pageHandles);
     }
 
     /**
      * @param ResponseInterface $response
      * @return $this
      */
-    public function renderResult(ResponseInterface $response)
+    protected function render(ResponseInterface $response)
     {
-        if ($this->getConfig()->getPageLayout()) {
+        $this->pageConfig->publicBuild();
+        if ($this->getPageLayout()) {
             $config = $this->getConfig();
 
             $this->addDefaultBodyClasses();
+            $requireJs = $this->getLayout()->getBlock('require.js');
             $this->assign([
-                'requireJs' => $this->_layout->getBlock('require.js')->toHtml(),
+                'requireJs' => $requireJs ? $requireJs->toHtml() : null,
                 'headContent' => $this->pageConfigRenderer->renderHeadContent(),
                 'htmlAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_HTML),
                 'headAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_HEAD),
                 'bodyAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_BODY)
             ]);
 
-            $output = $this->_layout->getOutput();
+            $output = $this->getLayout()->getOutput();
             $this->translateInline->processResponseBody($output);
             $this->assign('layoutContent', $output);
-            $response->appendBody($this->toHtml());
+            $response->appendBody($this->renderPage());
         } else {
-            parent::renderResult($response);
+            parent::render($response);
         }
         return $this;
     }
@@ -165,11 +235,63 @@ class Page extends Layout
      */
     protected function addDefaultBodyClasses()
     {
-        $this->pageConfig->addBodyClass($this->_request->getFullActionName('-'));
-        $pageLayout = $this->pageConfig->getPageLayout();
+        $this->pageConfig->addBodyClass($this->request->getFullActionName('-'));
+        $pageLayout = $this->getPageLayout();
         if ($pageLayout) {
             $this->pageConfig->addBodyClass('page-layout-' . $pageLayout);
         }
         return $this;
     }
+
+    /**
+     * @return string
+     */
+    protected function getPageLayout()
+    {
+        return $this->pageConfig->getPageLayout() ?: $this->getLayout()->getUpdate()->getPageLayout();
+    }
+
+    /**
+     * Assign variable
+     *
+     * @param   string|array $key
+     * @param   mixed $value
+     * @return  $this
+     */
+    public function assign($key, $value = null)
+    {
+        if (is_array($key)) {
+            foreach ($key as $subKey => $subValue) {
+                $this->assign($subKey, $subValue);
+            }
+        } else {
+            $this->viewVars[$key] = $value;
+        }
+        return $this;
+    }
+
+    /**
+     * Render page template
+     *
+     * @return string
+     * @throws \Exception
+     */
+    protected function renderPage()
+    {
+        $fileName = $this->viewFileSystem->getTemplateFileName($this->template);
+        if (!$fileName) {
+            throw new \InvalidArgumentException('Template "' . $this->template . '" is not found');
+        }
+
+        ob_start();
+        try {
+            extract($this->viewVars, EXTR_SKIP);
+            include $fileName;
+        } catch (\Exception $exception) {
+            ob_end_clean();
+            throw $exception;
+        }
+        $output = ob_get_clean();
+        return $output;
+    }
 }
diff --git a/lib/internal/Magento/Framework/View/Result/PageFactory.php b/lib/internal/Magento/Framework/View/Result/PageFactory.php
index 2fd4496a4f7654a4df3d57c1938e86b0c9945b47..d66590d1543ebe517cf76d4b395be592f0a15e45 100644
--- a/lib/internal/Magento/Framework/View/Result/PageFactory.php
+++ b/lib/internal/Magento/Framework/View/Result/PageFactory.php
@@ -38,12 +38,19 @@ class PageFactory
      */
     private $objectManager;
 
+    /**
+     * @var string
+     */
+    protected $instanceName;
+
     /**
      * @param ObjectManager $objectManager
+     * @param string $instanceName
      */
-    public function __construct(ObjectManager $objectManager)
+    public function __construct(ObjectManager $objectManager, $instanceName = 'Magento\Framework\View\Result\Page')
     {
         $this->objectManager = $objectManager;
+        $this->instanceName = $instanceName;
     }
 
     /**
@@ -52,10 +59,18 @@ class PageFactory
      * TODO: As argument has to be controller action interface, temporary solution until controller output models
      * TODO: are not implemented
      *
+     * @param bool $isView
+     * @param array $arguments
      * @return \Magento\Framework\View\Result\Page
      */
-    public function create()
+    public function create($isView = false, array $arguments = [])
     {
-        return $this->objectManager->create('\Magento\Framework\View\Result\Page', ['pageType' => 'noroute']);
+        /** @var \Magento\Framework\View\Result\Page $page */
+        $page = $this->objectManager->create($this->instanceName, $arguments);
+        // TODO Temporary solution for compatibility with View object. Will be deleted in MAGETWO-28359
+        if (!$isView) {
+            $page->addDefaultHandle();
+        }
+        return $page;
     }
 }
diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json
index 27e1482ca9b907003470d7ff6bf965ca30204ec8..8b7397ef53911c815710b2a0214265e93ee6ff87 100644
--- a/lib/internal/Magento/Framework/composer.json
+++ b/lib/internal/Magento/Framework/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/framework",
     "description": "N/A",
     "type": "magento2-library",
-    "version": "0.1.0-alpha101",
+    "version": "0.1.0-alpha102",
     "require": {
         "php": "~5.4.11|~5.5.0",
         "ext-spl": "*",
diff --git a/lib/web/css/source/lib/responsive.less b/lib/web/css/source/lib/responsive.less
index 912a240473b162f40f83ecb3e499f4714eb53512..a21ab6eb88a3bfa2ad5210ec5c90d7dd1a59a688 100644
--- a/lib/web/css/source/lib/responsive.less
+++ b/lib/web/css/source/lib/responsive.less
@@ -25,26 +25,29 @@
 // Small screens only
 .responsive-smaller(@screen-s) {}
 
-@media all and (max-width: @screen-xs) {
+@media only screen and (max-width: @screen-xs) {
     .responsive-smaller(@screen-xs);
 }
 
-@media all and (max-width: @screen-s) {
+@media only screen and (max-width: @screen-s) {
     .responsive-smaller(@screen-s);
 }
 
-@media all and (max-width: @screen-m) {
+@media only screen and (max-width: @screen-m) {
     .responsive-smaller(@screen-m);
 }
 
-@media all and (min-width: @screen-s) {
+@media all and (min-width: @screen-s),
+print {
     .responsive(@screen-s);
 }
 
-@media all and (min-width: @screen-m) {
+@media all and (min-width: @screen-m),
+print {
     .responsive(@screen-m);
 }
 
-@media all and (min-width: @screen-l) {
+@media all and (min-width: @screen-l),
+print {
     .responsive(@screen-l);
 }
diff --git a/lib/web/css/source/lib/tables.less b/lib/web/css/source/lib/tables.less
index cfa03de00b2f9482a6a687c5fc2fc291cca61c5a..66208b761ecf51914581448e8501d16d10daa02c 100644
--- a/lib/web/css/source/lib/tables.less
+++ b/lib/web/css/source/lib/tables.less
@@ -432,7 +432,7 @@
 }
 
 .table-caption(
-    @_table-caption-hide: false,
+    @_table-caption-hide: @table-caption-hide,
     @_table-caption-font-size: @table-caption-font-size,
     @_table-caption-color: @table-caption-color,
     @_table-caption-font-family: @table-caption-font-family,
@@ -459,7 +459,7 @@
 }
 
 .table-caption(
-    @_table-caption-hide: false,
+    @_table-caption-hide: @table-caption-hide,
     @_table-caption-font-size: @table-caption-font-size,
     @_table-caption-color: @table-caption-color,
     @_table-caption-font-family: @table-caption-font-family,
diff --git a/lib/web/css/source/lib/utilities.less b/lib/web/css/source/lib/utilities.less
index 7db499ac82277aa0057d633049fe1a28b30993a2..6a97e0e25d13a81edd632f536568ae6863c72951 100644
--- a/lib/web/css/source/lib/utilities.less
+++ b/lib/web/css/source/lib/utilities.less
@@ -26,13 +26,17 @@
     outline:2px dotted red;
 }
 
-.margin-top-rem(@value) {
+.margin-top-rem(
+    @value
+) when not (@value = false) and not (@value = '') {
     @_value: unit(@value);
     margin-top: @_value * 1px;
     margin-top: @_value * 1rem / @font-rem-ratio;
 }
 
-.margin-bottom-rem(@value) {
+.margin-bottom-rem(
+    @value
+) when not (@value = false) and not (@value = '') {
     @_value: unit(@value);
     margin-bottom: @_value * 1px;
     margin-bottom: @_value * 1rem / @font-rem-ratio;
@@ -43,13 +47,17 @@
     .margin-bottom-rem(@val-bottom);
 }
 
-.padding-top-rem(@value) {
+.padding-top-rem(
+    @value
+) when not (@value = false) and not (@value = '') {
     @_value: unit(@value);
     padding-top: @_value * 1px;
     padding-top: @_value * 1rem / @font-rem-ratio;
 }
 
-.padding-bottom-rem(@value) {
+.padding-bottom-rem(
+    @value
+) when not (@value = false) and not (@value = '') {
     @_value: unit(@value);
     padding-bottom: @_value * 1px;
     padding-bottom: @_value * 1rem / @font-rem-ratio;
diff --git a/lib/web/css/source/lib/variables.less b/lib/web/css/source/lib/variables.less
index 5df5fa888b97b07412f05a4d653a1503e2948cfc..0886947b4b387fbddb9bb2ce3fcc36699aa7824a 100644
--- a/lib/web/css/source/lib/variables.less
+++ b/lib/web/css/source/lib/variables.less
@@ -132,7 +132,7 @@
 @h1-font-weight: @heading-font-weight-base;
 @h1-font-style: @heading-font-style-base;
 @h1-line-height: @heading-line-height-base;
-@h1-margin-top: @heading-margin-top-base;
+@h1-margin-top: 0;
 @h1-margin-bottom: @heading-margin-bottom-base;
 
 @h2-font-size: ceil((@font-size-base * 1.85)); // 26px
@@ -241,16 +241,16 @@
 @table-border-width: @border-width-base;
 @table-border-style: solid;
 
-@table-caption-hide: false; // Default value false, set true to hide caption
-@table-caption-font-size: @font-size-l;
-@table-caption-color: @text-color-intense;
+@table-caption-hide: true; // true, false
+@table-caption-font-size: false;
+@table-caption-color: false;
 @table-caption-font-family: false;
 @table-caption-font-weight: false;
 @table-caption-font-style: false;
 @table-caption-line-height: false;
-@table-caption-alignment: left;
-@table-caption-margin-top: @indent-base;
-@table-caption-margin-bottom: @indent-s-base;
+@table-caption-alignment: false;
+@table-caption-margin-top: false;
+@table-caption-margin-bottom: false;
 
 @table-td-font-size: false;
 @table-td-color: false;
@@ -511,7 +511,6 @@
 @accordion-content-border: @tab-content-border;
 
 @accordion-content-margin: 0 0 5px;
-
 @accordion-content-padding: @tab-content-padding-top @tab-content-padding-right @tab-content-padding-bottom @tab-content-padding-left;
 
 //
@@ -1039,7 +1038,7 @@
 
 // Field
 @form-field-type: block; //inline
-@form-field-type-revert: inline; // block, false
+@form-field-type-revert: inline; // inline, block, false
 @form-field-border: false;
 @form-field-column: false;
 @form-field-column-padding: 0 12px 0 0;
@@ -1058,7 +1057,8 @@
 @form-field-label-font-style: false;
 @form-field-label-line-height: false;
 @form-field-type-inline-label-margin: false;
-@form-field-type-inline-label-padding: 6px 15px 0 0;
+@form-field-type-inline-label-padding-top: 6px;
+@form-field-type-inline-label-padding: @form-field-type-inline-label-padding-top 15px 0 0;
 @form-field-type-inline-label-width: 25.8%;
 @form-field-type-inline-label-align: right;
 @form-field-type-block-label-margin: 0 0 5px;
@@ -1313,7 +1313,7 @@
 //
 //    Actions-toolbar variables
 //--------------------------------------
-@actions-toolbar-actions-position: justify; // left, right, center
+@actions-toolbar-actions-position: justify; // left, right, center, justify
 // Also used in: @popup-actions-toolbar-actions-position
 @actions-toolbar-actions-reverse: false; // true
 // Also used in: @popup-actions-toolbar-actions-position-reverse
@@ -1423,13 +1423,13 @@
 @popup-content-margin: false;
 @popup-footer-margin: false;
 
-@popup-title-headings: true; //false
+@popup-title-headings: true; // false
 @popup-title-headings-level: h3; // h1, h2, h3, h4, h5, h6
 
-@popup-action-toolbar: false; //true
+@popup-action-toolbar: false; // true
 
-@popup-button-close-icon: true; //false
-@popup-button-close-reset: true; //false
+@popup-button-close-icon: true; // false
+@popup-button-close-reset: true; // false
 @popup-button-close-position: absolute;
 @popup-button-close-position-top: 10px;
 @popup-button-close-position-right: 10px;
diff --git a/lib/web/mage/backend/suggest.js b/lib/web/mage/backend/suggest.js
index 2629e08e71413d95f74316a4c477958d5dd4a9a3..92ece22a80f13d755147f6ef1cd40c7c84a3ae8a 100644
--- a/lib/web/mage/backend/suggest.js
+++ b/lib/web/mage/backend/suggest.js
@@ -788,7 +788,7 @@
     $.widget('mage.suggest', $.mage.suggest, {
         options: {
             multiSuggestWrapper: '<ul class="mage-suggest-choices">' +
-                '<li class="mage-suggest-search-field"></li></ul>',
+                '<li class="mage-suggest-search-field" data-role="parent-choice-element"><label class="mage-suggest-search-label"></label></li></ul>',
             choiceTemplate: '<li class="mage-suggest-choice button"><div>${text}</div>' +
                 '<span class="mage-suggest-choice-close" tabindex="-1" ' +
                 'data-mage-init=\'{"actionLink":{"event":"removeOption"}}\'></span></li>',
@@ -821,7 +821,7 @@
          */
         _renderMultiselect: function() {
             this.element.wrap(this.options.multiSuggestWrapper);
-            this.elementWrapper = this.element.parent();
+            this.elementWrapper = this.element.closest('[data-role="parent-choice-element"]');
             this._getOptions().each($.proxy(function(i, option) {
                 option = $(option);
                 this._createOption({id: option.val(), label: option.text()});