From 1d6e87cf6a89099bb92e7f6e8e3caf413ca82117 Mon Sep 17 00:00:00 2001
From: mage2-team <mage2-team@magento.com>
Date: Fri, 31 Oct 2014 09:04:08 -0700
Subject: [PATCH] 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

---
 CHANGELOG.md                                  |   51 +
 .../Magento/AdminNotification/composer.json   |   10 +-
 .../layout/adminhtml_notification_block.xml   |  114 +-
 .../layout/adminhtml_notification_index.xml   |    8 +-
 .../view/adminhtml/layout/default.xml         |   18 +-
 app/code/Magento/Authorization/composer.json  |    6 +-
 app/code/Magento/Authorizenet/README.md       |    1 +
 app/code/Magento/Authorizenet/composer.json   |   18 +-
 .../layout/checkout_onepage_index.xml         |    8 +-
 .../layout/checkout_onepage_review.xml        |   12 +-
 .../view/frontend/templates/info/cc.phtml     |    3 +-
 .../Magento/Backend/App/AbstractAction.php    |    4 +
 .../Backend/Block/Widget/Button/Toolbar.php   |   28 +-
 .../Controller/Adminhtml/Ajax/Translate.php   |   21 +-
 .../Adminhtml/Auth/DeniedIframe.php           |   28 +-
 .../Controller/Adminhtml/Auth/DeniedJson.php  |   38 +-
 .../Controller/Adminhtml/Auth/Login.php       |   38 +-
 .../Controller/Adminhtml/Auth/Logout.php      |   24 +-
 .../Backend/Controller/Adminhtml/Cache.php    |   18 +-
 .../Adminhtml/Cache/CleanImages.php           |    6 +-
 .../Controller/Adminhtml/Cache/CleanMedia.php |    6 +-
 .../Controller/Adminhtml/Cache/FlushAll.php   |    6 +-
 .../Adminhtml/Cache/FlushSystem.php           |    6 +-
 .../Controller/Adminhtml/Cache/Index.php      |    9 +-
 .../Adminhtml/Cache/MassDisable.php           |    6 +-
 .../Controller/Adminhtml/Cache/MassEnable.php |    6 +-
 .../Adminhtml/Cache/MassRefresh.php           |    6 +-
 .../Adminhtml/Dashboard/AjaxBlock.php         |   38 +-
 .../Adminhtml/Dashboard/CustomersMost.php     |   22 +-
 .../Adminhtml/Dashboard/CustomersNewest.php   |   22 +-
 .../Controller/Adminhtml/Dashboard/Index.php  |   28 +-
 .../Adminhtml/Dashboard/ProductsViewed.php    |   22 +-
 .../Controller/Adminhtml/Dashboard/Tunnel.php |   46 +-
 .../Backend/Controller/Adminhtml/Denied.php   |   41 +-
 .../Adminhtml/Index/ChangeLocale.php          |   25 +-
 .../Adminhtml/Index/GlobalSearch.php          |   22 +-
 .../Controller/Adminhtml/Index/Index.php      |   23 +-
 .../Controller/Adminhtml/Noroute/Index.php    |   29 +-
 .../Adminhtml/System/Account/Index.php        |   22 +-
 .../Adminhtml/System/Account/Save.php         |   23 +-
 .../Adminhtml/System/Config/Edit.php          |   49 +-
 .../Adminhtml/System/Config/Index.php         |   29 +-
 .../Adminhtml/System/Config/Save.php          |   19 +-
 .../Adminhtml/System/Config/State.php         |   39 +-
 .../System/Config/System/Storage/Status.php   |   24 +-
 .../Controller/Adminhtml/System/Design.php    |   34 +-
 .../Adminhtml/System/Design/Delete.php        |    6 +-
 .../Adminhtml/System/Design/Edit.php          |   15 +-
 .../Adminhtml/System/Design/Grid.php          |    5 +-
 .../Adminhtml/System/Design/Index.php         |    9 +-
 .../Adminhtml/System/Design/NewAction.php     |    6 +-
 .../Adminhtml/System/Design/Save.php          |   10 +-
 .../Controller/Adminhtml/System/Index.php     |   28 +-
 .../Controller/Adminhtml/System/Store.php     |   64 +-
 .../Adminhtml/System/Store/DeleteGroup.php    |   39 +-
 .../System/Store/DeleteGroupPost.php          |   20 +-
 .../Adminhtml/System/Store/DeleteStore.php    |   38 +-
 .../System/Store/DeleteStorePost.php          |   19 +-
 .../Adminhtml/System/Store/DeleteWebsite.php  |   38 +-
 .../System/Store/DeleteWebsitePost.php        |   20 +-
 .../Adminhtml/System/Store/EditGroup.php      |    6 +-
 .../Adminhtml/System/Store/EditStore.php      |   13 +-
 .../Adminhtml/System/Store/EditWebsite.php    |    6 +-
 .../Adminhtml/System/Store/Index.php          |    5 +-
 .../Adminhtml/System/Store/NewGroup.php       |    6 +-
 .../Adminhtml/System/Store/NewStore.php       |    6 +-
 .../Adminhtml/System/Store/NewWebsite.php     |    6 +-
 .../Adminhtml/System/Store/Save.php           |   25 +-
 .../Controller/Adminhtml/System/Variable.php  |   65 +-
 .../Adminhtml/System/Variable/Delete.php      |   10 +-
 .../Adminhtml/System/Variable/Edit.php        |   22 +-
 .../Adminhtml/System/Variable/Index.php       |    5 +-
 .../Adminhtml/System/Variable/NewAction.php   |    6 +-
 .../Adminhtml/System/Variable/Save.php        |   18 +-
 .../Adminhtml/System/Variable/Validate.php    |   11 +-
 .../System/Variable/WysiwygPlugin.php         |    7 +-
 app/code/Magento/Backend/Model/View.php       |    4 +-
 .../Backend/Model/View/Layout/Builder.php     |   70 +
 .../Model/{ => View}/Layout/Filter/Acl.php    |    4 +-
 .../Backend/Model/View/Page/Builder.php       |   75 ++
 .../Backend/Model/View/Result/Forward.php     |   64 +
 .../Backend/Model/View/Result/Page.php        |  155 +++
 .../Backend/Model/View/Result/Redirect.php    |   71 +
 app/code/Magento/Backend/composer.json        |   34 +-
 app/code/Magento/Backend/etc/adminhtml/di.xml |   19 +
 .../adminhtml/layout/adminhtml_auth_login.xml |   22 +-
 .../layout/adminhtml_cache_block.xml          |  150 +--
 .../layout/adminhtml_cache_index.xml          |   10 +-
 .../layout/adminhtml_dashboard_index.xml      |   26 +-
 .../adminhtml/layout/adminhtml_denied.xml     |   10 +-
 .../adminhtml/layout/adminhtml_noroute.xml    |   16 +-
 .../layout/adminhtml_system_account_index.xml |    8 +-
 .../layout/adminhtml_system_config_edit.xml   |   48 +-
 .../layout/adminhtml_system_design_edit.xml   |    4 +-
 .../adminhtml_system_design_grid_block.xml    |  104 +-
 .../layout/adminhtml_system_design_index.xml  |    8 +-
 .../adminhtml_system_store_grid_block.xml     |   70 +-
 .../layout/adminhtml_system_store_index.xml   |    8 +-
 .../layout/adminhtml_system_variable_edit.xml |   30 +-
 .../adminhtml_system_variable_grid_block.xml  |   70 +-
 .../adminhtml_system_variable_index.xml       |    8 +-
 .../Backend/view/adminhtml/layout/default.xml |  131 +-
 .../Backend/view/adminhtml/layout/editor.xml  |    1 +
 .../Backend/view/adminhtml/layout/empty.xml   |    5 +-
 .../Backend/view/adminhtml/layout/formkey.xml |    4 +-
 .../view/adminhtml/layout/overlay_popup.xml   |   12 +-
 .../Backend/view/adminhtml/layout/popup.xml   |    6 +-
 app/code/Magento/Backup/composer.json         |   12 +-
 .../adminhtml/layout/backup_index_block.xml   |  164 +--
 .../adminhtml/layout/backup_index_index.xml   |    8 +-
 app/code/Magento/Bundle/composer.json         |   30 +-
 .../layout/adminhtml_order_shipment_new.xml   |    8 +-
 .../layout/adminhtml_order_shipment_view.xml  |    8 +-
 .../layout/catalog_product_bundle.xml         |   14 +-
 .../adminhtml/layout/catalog_product_new.xml  |    8 +-
 .../catalog_product_view_type_bundle.xml      |   18 +-
 .../layout/customer_index_wishlist.xml        |   16 +-
 .../layout/sales_order_creditmemo_new.xml     |    8 +-
 .../sales_order_creditmemo_updateqty.xml      |    8 +-
 .../layout/sales_order_creditmemo_view.xml    |    8 +-
 .../layout/sales_order_invoice_new.xml        |    8 +-
 .../layout/sales_order_invoice_updateqty.xml  |    8 +-
 .../layout/sales_order_invoice_view.xml       |    8 +-
 .../adminhtml/layout/sales_order_view.xml     |    8 +-
 .../base/layout/catalog_product_prices.xml    |    4 +-
 .../catalog_product_view_type_bundle.xml      |   98 +-
 .../catalog_product_view_type_simple.xml      |   14 +-
 .../checkout_cart_configure_type_bundle.xml   |   18 +-
 .../layout/checkout_cart_item_renderers.xml   |    8 +-
 .../checkout_cart_sidebar_item_renderers.xml  |    8 +-
 ...checkout_onepage_review_item_renderers.xml |    7 +-
 .../Bundle/view/frontend/layout/default.xml   |    8 +-
 ...sales_email_order_creditmemo_renderers.xml |    8 +-
 .../sales_email_order_invoice_renderers.xml   |    8 +-
 .../layout/sales_email_order_renderers.xml    |    8 +-
 .../sales_email_order_shipment_renderers.xml  |    8 +-
 .../sales_order_creditmemo_renderers.xml      |    8 +-
 .../layout/sales_order_invoice_renderers.xml  |    8 +-
 .../layout/sales_order_item_renderers.xml     |    8 +-
 ...sales_order_print_creditmemo_renderers.xml |    8 +-
 .../sales_order_print_invoice_renderers.xml   |    8 +-
 .../layout/sales_order_print_renderers.xml    |    8 +-
 .../sales_order_print_shipment_renderers.xml  |    8 +-
 .../layout/sales_order_shipment_renderers.xml |    8 +-
 .../order/creditmemo/items/renderer.phtml     |   15 +-
 .../sales/order/invoice/items/renderer.phtml  |   15 +-
 .../sales/order/items/renderer.phtml          |   18 +-
 .../sales/order/shipment/items/renderer.phtml |   15 +-
 app/code/Magento/Captcha/composer.json        |   14 +-
 .../layout/adminhtml_auth_forgotpassword.xml  |   28 +-
 .../adminhtml/layout/adminhtml_auth_login.xml |   28 +-
 .../layout/checkout_onepage_index.xml         |   82 +-
 .../frontend/layout/contact_index_index.xml   |   34 +-
 .../layout/customer_account_create.xml        |   34 +-
 .../customer_account_forgotpassword.xml       |   34 +-
 .../layout/customer_account_login.xml         |   34 +-
 .../Catalog/Block/Adminhtml/Category/Edit.php |    2 -
 .../Catalog/Block/Adminhtml/Category/Tree.php |    2 -
 .../Magento/Catalog/Block/Breadcrumbs.php     |    2 -
 .../Block/Product/View/AbstractView.php       |    2 +-
 .../Catalog/Controller/Adminhtml/Category.php |   28 +-
 .../Controller/Adminhtml/Category/Add.php     |   25 +-
 .../Adminhtml/Category/CategoriesJson.php     |   47 +-
 .../Controller/Adminhtml/Category/Delete.php  |   13 +-
 .../Controller/Adminhtml/Category/Edit.php    |   78 +-
 .../Controller/Adminhtml/Category/Grid.php    |   39 +-
 .../Controller/Adminhtml/Category/Index.php   |   25 +-
 .../Controller/Adminhtml/Category/Move.php    |   33 +-
 .../Adminhtml/Category/RefreshPath.php        |   32 +-
 .../Controller/Adminhtml/Category/Save.php    |   68 +-
 .../Adminhtml/Category/SuggestCategories.php  |   40 +-
 .../Controller/Adminhtml/Category/Tree.php    |   70 +-
 .../Controller/Adminhtml/Category/Widget.php  |   27 +-
 .../Category/Widget/CategoriesJson.php        |   26 +-
 .../Adminhtml/Category/Widget/Chooser.php     |   25 +-
 .../Adminhtml/Product/AbstractProductGrid.php |   51 +
 .../Adminhtml/Product/Action/Attribute.php    |    1 -
 .../Product/Action/Attribute/Edit.php         |   35 +-
 .../Product/Action/Attribute/Save.php         |   17 +-
 .../Product/Action/Attribute/Validate.php     |   37 +-
 .../Product/AddAttributeToTemplate.php        |   26 +-
 .../Adminhtml/Product/AlertsPriceGrid.php     |   11 +-
 .../Adminhtml/Product/AlertsStockGrid.php     |   31 +-
 .../Adminhtml/Product/Attribute.php           |   46 +-
 .../Adminhtml/Product/Attribute/Delete.php    |   41 +-
 .../Adminhtml/Product/Attribute/Edit.php      |   54 +-
 .../Adminhtml/Product/Attribute/Index.php     |    9 +-
 .../Adminhtml/Product/Attribute/NewAction.php |   27 +-
 .../Adminhtml/Product/Attribute/Save.php      |   56 +-
 .../Adminhtml/Product/Attribute/Validate.php  |   42 +-
 .../Adminhtml/Product/Categories.php          |   24 +-
 .../Adminhtml/Product/Crosssell.php           |   27 +-
 .../Adminhtml/Product/CrosssellGrid.php       |   27 +-
 .../Adminhtml/Product/CustomOptions.php       |   15 +-
 .../Adminhtml/Product/Duplicate.php           |   20 +-
 .../Controller/Adminhtml/Product/Edit.php     |   59 +-
 .../Adminhtml/Product/Gallery/Upload.php      |   37 +-
 .../Controller/Adminhtml/Product/Grid.php     |   24 +-
 .../Controller/Adminhtml/Product/GridOnly.php |   35 +-
 .../Controller/Adminhtml/Product/Index.php    |   28 +-
 .../Adminhtml/Product/MassDelete.php          |   23 +-
 .../Adminhtml/Product/MassStatus.php          |   14 +-
 .../Adminhtml/Product/NewAction.php           |   46 +-
 .../Controller/Adminhtml/Product/Options.php  |   24 +-
 .../Adminhtml/Product/OptionsImportGrid.php   |    7 +-
 .../Controller/Adminhtml/Product/Related.php  |   27 +-
 .../Controller/Adminhtml/Product/Save.php     |   26 +-
 .../Controller/Adminhtml/Product/Set/Add.php  |   35 +-
 .../Adminhtml/Product/Set/Delete.php          |   27 +-
 .../Controller/Adminhtml/Product/Set/Edit.php |   51 +-
 .../Adminhtml/Product/Set/Index.php           |   34 +-
 .../Controller/Adminhtml/Product/Set/Save.php |   80 +-
 .../Adminhtml/Product/Set/SetGrid.php         |   24 +-
 .../Adminhtml/Product/SuggestAttributes.php   |   43 +-
 .../Product/SuggestProductTemplates.php       |   39 +-
 .../Controller/Adminhtml/Product/Upsell.php   |   27 +-
 .../Adminhtml/Product/UpsellGrid.php          |   27 +-
 .../Controller/Adminhtml/Product/Validate.php |   27 +-
 .../Adminhtml/Product/Widget/Chooser.php      |   63 +-
 .../Controller/Adminhtml/Product/Wysiwyg.php  |   53 +-
 .../Catalog/Controller/Category/View.php      |   43 +-
 .../Catalog/Controller/Index/Index.php        |   27 +-
 .../Magento/Catalog/Controller/Product.php    |    7 +-
 .../Catalog/Controller/Product/Compare.php    |   22 +-
 .../Controller/Product/Compare/Add.php        |    8 +-
 .../Controller/Product/Compare/Clear.php      |    5 +-
 .../Controller/Product/Compare/Index.php      |   10 +-
 .../Controller/Product/Compare/Remove.php     |    8 +-
 .../Catalog/Controller/Product/Gallery.php    |   52 +-
 .../Catalog/Controller/Product/View.php       |   80 +-
 .../Magento/Catalog/Helper/Product/View.php   |   53 +-
 app/code/Magento/Catalog/composer.json        |   48 +-
 app/code/Magento/Catalog/etc/webapi.xml       |    2 +-
 .../layout/catalog_category_edit.xml          |   48 +-
 .../catalog_product_action_attribute_edit.xml |   54 +-
 .../layout/catalog_product_attribute_edit.xml |   38 +-
 .../catalog_product_attribute_edit_popup.xml  |   28 +-
 .../adminhtml/layout/catalog_product_edit.xml |   26 +-
 .../layout/catalog_product_index.xml          |   50 +-
 .../adminhtml/layout/catalog_product_new.xml  |   60 +-
 .../layout/catalog_product_set_block.xml      |   48 +-
 .../layout/catalog_product_set_edit.xml       |   10 +-
 .../layout/catalog_product_set_index.xml      |    8 +-
 .../web/catalog/category-selector.css         |  203 +--
 .../base/layout/catalog_product_prices.xml    |    4 +-
 .../Catalog/view/base/layout/default.xml      |   19 +-
 .../Catalog/view/base/layout/empty.xml        |   19 +-
 .../frontend/layout/catalog_category_view.xml |  150 +--
 .../catalog_category_view_type_default.xml    |    8 +-
 ...ory_view_type_default_without_children.xml |    4 +-
 .../layout/catalog_product_compare_index.xml  |   20 +-
 .../layout/catalog_product_gallery.xml        |   18 +-
 .../frontend/layout/catalog_product_view.xml  |  232 ++--
 .../catalog_product_view_type_simple.xml      |   10 +-
 .../catalog_product_view_type_virtual.xml     |   10 +-
 .../layout/checkout_cart_item_renderers.xml   |    8 +-
 .../Catalog/view/frontend/layout/default.xml  |   20 +-
 .../templates/product/compare/list.phtml      |    4 +-
 .../templates/product/view/attributes.phtml   |    2 +-
 .../Magento/CatalogImportExport/composer.json |   20 +-
 .../Model/Adminhtml/Stock/Item.php            |   10 +-
 .../Initializer/QtyProcessor.php              |   97 ++
 .../Initializer/StockItem.php                 |   39 +-
 .../Magento/CatalogInventory/Model/Stock.php  |    2 +-
 .../Magento/CatalogInventory/composer.json    |   20 +-
 .../frontend/layout/catalog_product_view.xml  |    8 +-
 .../catalog_product_view_type_simple.xml      |    8 +-
 .../catalog_product_view_type_virtual.xml     |    8 +-
 .../templates/stockqty/composite.phtml        |   37 +-
 app/code/Magento/CatalogRule/composer.json    |   16 +-
 .../catalog_rule_promo_catalog_block.xml      |  150 +--
 .../catalog_rule_promo_catalog_edit.xml       |   54 +-
 .../catalog_rule_promo_catalog_index.xml      |    8 +-
 app/code/Magento/CatalogSearch/composer.json  |   24 +-
 .../layout/catalogsearch_advanced_index.xml   |   12 +-
 .../layout/catalogsearch_advanced_result.xml  |   40 +-
 .../layout/catalogsearch_result_index.xml     |   38 +-
 .../view/frontend/layout/default.xml          |   24 +-
 .../Magento/CatalogUrlRewrite/composer.json   |   18 +-
 app/code/Magento/Centinel/README.md           |    1 +
 app/code/Magento/Centinel/composer.json       |   14 +-
 .../layout/sales_order_create_index.xml       |   12 +-
 ...rder_create_load_block_card_validation.xml |   12 +-
 .../sales_order_create_load_block_data.xml    |   12 +-
 .../layout/sales_order_create_start.xml       |    1 +
 .../layout/checkout_onepage_review.xml        |   16 +-
 .../multishipping_checkout_overview.xml       |   16 +-
 .../Checkout/Controller/Cart/Configure.php    |   45 +-
 .../Magento/Checkout/Controller/Onepage.php   |   16 +-
 app/code/Magento/Checkout/composer.json       |   36 +-
 .../frontend/layout/catalog_category_view.xml |   20 +-
 .../frontend/layout/catalog_product_view.xml  |   20 +-
 .../layout/checkout_cart_configure.xml        |   34 +-
 .../checkout_cart_configure_type_simple.xml   |    1 +
 .../frontend/layout/checkout_cart_index.xml   |   70 +-
 .../layout/checkout_cart_item_renderers.xml   |   13 +-
 ...kout_cart_sidebar_item_price_renderers.xml |    8 +-
 .../checkout_cart_sidebar_item_renderers.xml  |   12 +-
 .../checkout_cart_sidebar_total_renderers.xml |    8 +-
 .../layout/checkout_item_price_renderers.xml  |   15 +-
 .../layout/checkout_onepage_failure.xml       |   20 +-
 .../layout/checkout_onepage_index.xml         |   56 +-
 ...checkout_onepage_review_item_renderers.xml |   11 +-
 .../layout/checkout_onepage_success.xml       |   24 +-
 .../checkout_shipping_price_renderer.xml      |    4 +-
 .../Checkout/view/frontend/layout/default.xml |   38 +-
 .../view/frontend/templates/cart/form.phtml   |   10 +-
 .../templates/cart/item/default.phtml         |    2 +-
 .../view/frontend/templates/cart/totals.phtml |   13 +-
 .../frontend/templates/onepage/login.phtml    |    2 +-
 .../templates/onepage/review/info.phtml       |   12 +-
 .../Magento/CheckoutAgreements/composer.json  |   10 +-
 .../layout/checkout_onepage_review.xml        |    8 +-
 .../multishipping_checkout_overview.xml       |    8 +-
 .../frontend/layout/paypal_express_review.xml |    8 +-
 .../layout/paypal_payflowexpress_review.xml   |    8 +-
 .../Magento/Cms/Controller/Noroute/Index.php  |    4 +-
 app/code/Magento/Cms/Helper/Page.php          |   20 +-
 app/code/Magento/Cms/composer.json            |   20 +-
 .../view/adminhtml/layout/cms_block_edit.xml  |   10 +-
 .../view/adminhtml/layout/cms_block_index.xml |    8 +-
 .../adminhtml/layout/cms_block_listing.xml    |  222 ++--
 .../view/adminhtml/layout/cms_block_new.xml   |    1 +
 .../view/adminhtml/layout/cms_page_edit.xml   |   58 +-
 .../view/adminhtml/layout/cms_page_index.xml  |    8 +-
 .../view/adminhtml/layout/cms_page_new.xml    |    3 +-
 .../layout/cms_wysiwyg_images_index.xml       |   18 +-
 .../layout/cms_index_defaultindex.xml         |   10 +-
 .../layout/cms_index_defaultnoroute.xml       |   10 +-
 .../view/frontend/layout/cms_index_index.xml  |    4 +-
 .../frontend/layout/cms_index_nocookies.xml   |    4 +-
 .../frontend/layout/cms_index_noroute.xml     |    4 +-
 .../view/frontend/layout/cms_page_view.xml    |    8 +-
 .../Cms/view/frontend/layout/default.xml      |   20 +-
 .../Cms/view/frontend/layout/print.xml        |    4 +-
 app/code/Magento/CmsUrlRewrite/composer.json  |    8 +-
 .../ConfigurableImportExport/composer.json    |   14 +-
 .../Magento/ConfigurableProduct/composer.json |   28 +-
 .../layout/catalog_product_attribute_edit.xml |    8 +-
 ...bute_edit_product_tab_variations_popup.xml |   28 +-
 .../layout/catalog_product_configurable.xml   |   28 +-
 .../layout/catalog_product_downloadable.xml   |   26 +-
 .../adminhtml/layout/catalog_product_new.xml  |   18 +-
 .../layout/catalog_product_set_edit.xml       |   11 +-
 .../layout/catalog_product_simple.xml         |   26 +-
 .../catalog_product_superconfig_config.xml    |  180 +--
 ...catalog_product_view_type_configurable.xml |    8 +-
 .../layout/catalog_product_virtual.xml        |   26 +-
 ...catalog_product_view_type_configurable.xml |   24 +-
 ...ckout_cart_configure_type_configurable.xml |    1 +
 .../layout/checkout_cart_item_renderers.xml   |    9 +-
 .../checkout_cart_sidebar_item_renderers.xml  |    8 +-
 ...checkout_onepage_review_item_renderers.xml |    8 +-
 app/code/Magento/Contact/composer.json        |   12 +-
 .../frontend/layout/contact_index_index.xml   |   14 +-
 .../Contact/view/frontend/layout/default.xml  |   19 +-
 app/code/Magento/Core/Model/Layout/Merge.php  |   52 +-
 app/code/Magento/Core/composer.json           |   16 +-
 app/code/Magento/Core/etc/di.xml              |   17 +-
 app/code/Magento/Cron/composer.json           |    8 +-
 app/code/Magento/CurrencySymbol/composer.json |   14 +-
 .../adminhtml_system_currencysymbol_index.xml |    8 +-
 .../Api/AccountManagementInterface.php        |  198 +++
 .../Api/AddressManagementInterface.php        |   41 +
 .../Customer/Api/AddressMetadataInterface.php |   37 +
 .../Api/AddressRepositoryInterface.php        |   77 ++
 .../Api/CustomerMetadataInterface.php         |   37 +
 .../Api/CustomerRepositoryInterface.php       |   82 ++
 .../Customer/Api/Data/AddressInterface.php    |  146 +++
 .../Data/AddressSearchResultsInterface.php    |   38 +
 .../Api/Data/AttributeMetadataInterface.php   |  150 +++
 .../Customer/Api/Data/CustomerInterface.php   |  167 +++
 .../Data/CustomerSearchResultsInterface.php   |   38 +
 .../Customer/Api/Data/GroupInterface.php      |   62 +
 .../Api/Data/GroupSearchResultsInterface.php  |   38 +
 .../Customer/Api/Data/RegionInterface.php     |   54 +
 .../Api/Data/ValidationResultsInterface.php   |   46 +
 .../Customer/Api/GroupManagementInterface.php |   51 +
 .../Customer/Api/GroupRepositoryInterface.php |   88 ++
 .../Customer/Api/MetadataInterface.php        |   67 +
 .../Magento/Customer/Controller/Account.php   |    1 -
 .../Magento/Customer/Model/GroupRegistry.php  |    3 +-
 app/code/Magento/Customer/README.md           |    1 +
 .../Service/V1/CustomerGroupService.php       |   32 +-
 .../V1/CustomerGroupServiceInterface.php      |   20 +-
 app/code/Magento/Customer/composer.json       |   36 +-
 app/code/Magento/Customer/etc/webapi.xml      |    8 +-
 .../adminhtml/layout/customer_group_index.xml |   79 +-
 .../adminhtml/layout/customer_index_edit.xml  |   40 +-
 .../layout/customer_index_grid_block.xml      |  299 ++---
 .../adminhtml/layout/customer_index_index.xml |   11 +-
 .../view/frontend/layout/customer_account.xml |   46 +-
 .../layout/customer_account_confirmation.xml  |   10 +-
 .../layout/customer_account_create.xml        |   42 +-
 .../customer_account_createpassword.xml       |   20 +-
 .../frontend/layout/customer_account_edit.xml |   24 +-
 .../customer_account_forgotpassword.xml       |   24 +-
 .../layout/customer_account_index.xml         |   24 +-
 .../layout/customer_account_login.xml         |   40 +-
 .../layout/customer_account_logoutsuccess.xml |   20 +-
 .../frontend/layout/customer_address_form.xml |   24 +-
 .../layout/customer_address_index.xml         |   14 +-
 .../Customer/view/frontend/layout/default.xml |   28 +-
 .../Magento/CustomerImportExport/README.md    |    1 +
 .../CustomerImportExport/composer.json        |   16 +-
 ...customer_import_export_index_exportcsv.xml |    4 +-
 ...customer_import_export_index_exportxml.xml |    4 +-
 .../layout/customer_index_grid_block.xml      |   37 +-
 app/code/Magento/DesignEditor/composer.json   |   14 +-
 ...nhtml_system_design_editor_files_index.xml |   24 +-
 ...tml_system_design_editor_firstentrance.xml |   20 +-
 .../adminhtml_system_design_editor_index.xml  |   52 +-
 .../adminhtml_system_design_editor_launch.xml |   78 +-
 app/code/Magento/Dhl/README.md                |    2 +
 app/code/Magento/Dhl/composer.json            |   22 +-
 app/code/Magento/Directory/composer.json      |   10 +-
 .../frontend/layout/catalog_category_view.xml |    4 +-
 .../layout/catalogsearch_advanced_index.xml   |    4 +-
 .../layout/catalogsearch_advanced_result.xml  |    4 +-
 .../layout/catalogsearch_result_index.xml     |    4 +-
 .../view/frontend/layout/default.xml          |    8 +-
 app/code/Magento/Downloadable/composer.json   |   34 +-
 .../layout/catalog_product_downloadable.xml   |   14 +-
 .../layout/catalog_product_simple.xml         |   14 +-
 ...catalog_product_view_type_downloadable.xml |    8 +-
 .../layout/catalog_product_virtual.xml        |   14 +-
 .../layout/customer_index_wishlist.xml        |   16 +-
 .../layout/sales_order_creditmemo_new.xml     |    8 +-
 .../sales_order_creditmemo_updateqty.xml      |    8 +-
 .../layout/sales_order_creditmemo_view.xml    |    8 +-
 .../layout/sales_order_invoice_new.xml        |    8 +-
 .../layout/sales_order_invoice_updateqty.xml  |    8 +-
 .../layout/sales_order_invoice_view.xml       |    8 +-
 .../adminhtml/layout/sales_order_view.xml     |    8 +-
 ...catalog_product_view_type_downloadable.xml |   62 +-
 ...ckout_cart_configure_type_downloadable.xml |    1 +
 .../layout/checkout_cart_item_renderers.xml   |   14 +-
 .../checkout_cart_sidebar_item_renderers.xml  |    8 +-
 ...checkout_onepage_review_item_renderers.xml |    8 +-
 .../layout/checkout_onepage_success.xml       |    8 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../layout/downloadable_customer_products.xml |   18 +-
 .../layout/multishipping_checkout_success.xml |    8 +-
 ...sales_email_order_creditmemo_renderers.xml |    8 +-
 .../sales_email_order_invoice_renderers.xml   |    8 +-
 .../layout/sales_email_order_renderers.xml    |    8 +-
 .../sales_order_creditmemo_renderers.xml      |    8 +-
 .../layout/sales_order_invoice_renderers.xml  |    8 +-
 .../layout/sales_order_item_renderers.xml     |    8 +-
 ...sales_order_print_creditmemo_renderers.xml |    8 +-
 .../sales_order_print_invoice_renderers.xml   |    8 +-
 .../layout/sales_order_print_renderers.xml    |    8 +-
 .../templates/customer/products/list.phtml    |    2 +-
 .../items/renderer/downloadable.phtml         |    9 +-
 .../invoice/items/renderer/downloadable.phtml |    9 +-
 .../order/items/renderer/downloadable.phtml   |   13 +-
 app/code/Magento/Eav/composer.json            |   12 +-
 app/code/Magento/Email/composer.json          |   12 +-
 .../layout/adminhtml_email_template_edit.xml  |    1 +
 .../adminhtml_email_template_grid_block.xml   |  150 +--
 .../layout/adminhtml_email_template_index.xml |    8 +-
 .../adminhtml/templates/template/edit.phtml   |    2 +-
 app/code/Magento/Fedex/README.md              |    1 +
 app/code/Magento/Fedex/composer.json          |   18 +-
 app/code/Magento/GiftMessage/composer.json    |   22 +-
 .../layout/sales_order_create_index.xml       |   22 +-
 .../sales_order_create_load_block_data.xml    |   22 +-
 .../sales_order_create_load_block_items.xml   |   22 +-
 .../adminhtml/layout/sales_order_view.xml     |   22 +-
 app/code/Magento/GoogleAdwords/composer.json  |    8 +-
 .../layout/checkout_onepage_success.xml       |    8 +-
 .../Magento/GoogleAnalytics/composer.json     |    8 +-
 .../view/frontend/layout/default.xml          |    8 +-
 .../Magento/GoogleOptimizer/composer.json     |   14 +-
 .../layout/adminhtml_cms_page_edit.xml        |   16 +-
 .../adminhtml/layout/catalog_product_new.xml  |   14 +-
 .../frontend/layout/catalog_category_view.xml |    8 +-
 .../frontend/layout/catalog_product_view.xml  |    8 +-
 .../view/frontend/layout/cms_page_view.xml    |    8 +-
 app/code/Magento/GoogleShopping/composer.json |   20 +-
 .../adminhtml_googleshopping_items_index.xml  |   10 +-
 .../adminhtml_googleshopping_types_block.xml  |   86 +-
 .../adminhtml_googleshopping_types_index.xml  |    8 +-
 .../view/frontend/layout/cms_index_index.xml  |    8 +-
 .../Magento/GroupedImportExport/composer.json |   14 +-
 app/code/Magento/GroupedProduct/composer.json |   24 +-
 .../layout/catalog_product_grouped.xml        |   44 +-
 .../adminhtml/layout/catalog_product_new.xml  |    8 +-
 .../catalog_product_view_type_grouped.xml     |    8 +-
 .../layout/groupedproduct_popup_grid.xml      |   92 +-
 .../layout/sales_order_creditmemo_new.xml     |    8 +-
 .../sales_order_creditmemo_updateqty.xml      |    8 +-
 .../layout/sales_order_creditmemo_view.xml    |    8 +-
 .../layout/sales_order_invoice_new.xml        |    8 +-
 .../layout/sales_order_invoice_updateqty.xml  |    8 +-
 .../layout/sales_order_invoice_view.xml       |    8 +-
 .../adminhtml/layout/sales_order_view.xml     |    8 +-
 .../base/layout/catalog_product_prices.xml    |    4 +-
 ...catalog_product_rss_feed_renderer_list.xml |   14 +-
 .../catalog_product_view_type_grouped.xml     |   20 +-
 .../layout/checkout_cart_item_renderers.xml   |    8 +-
 .../checkout_cart_sidebar_item_renderers.xml  |    8 +-
 ...checkout_onepage_review_item_renderers.xml |    8 +-
 ...sales_email_order_creditmemo_renderers.xml |    8 +-
 .../sales_email_order_invoice_renderers.xml   |    8 +-
 .../layout/sales_email_order_renderers.xml    |    8 +-
 .../frontend/layout/sales_guest_invoice.xml   |    8 +-
 .../sales_order_creditmemo_renderers.xml      |    8 +-
 .../layout/sales_order_invoice_renderers.xml  |    8 +-
 .../layout/sales_order_item_renderers.xml     |    8 +-
 ...sales_order_print_creditmemo_renderers.xml |    8 +-
 .../sales_order_print_invoice_renderers.xml   |    8 +-
 .../layout/sales_order_print_renderers.xml    |    8 +-
 .../templates/product/view/type/grouped.phtml |   10 +-
 .../Block/Adminhtml/Export/Filter.php         |   15 +-
 app/code/Magento/ImportExport/composer.json   |   14 +-
 .../layout/adminhtml_export_index.xml         |   12 +-
 .../layout/adminhtml_import_busy.xml          |    8 +-
 .../layout/adminhtml_import_index.xml         |   12 +-
 app/code/Magento/Indexer/composer.json        |    8 +-
 .../adminhtml/layout/indexer_indexer_list.xml |    8 +-
 .../layout/indexer_indexer_list_grid.xml      |  148 +--
 app/code/Magento/Install/composer.json        |   14 +-
 .../Install/view/adminhtml/layout/default.xml |    1 +
 .../install/layout/install_wizard_config.xml  |   22 +-
 app/code/Magento/Integration/composer.json    |   16 +-
 .../layout/adminhtml_integration_edit.xml     |   30 +-
 .../adminhtml_integration_grid_block.xml      |  126 +-
 .../layout/adminhtml_integration_index.xml    |   10 +-
 .../layout/adminhtml_integration_new.xml      |    8 +-
 .../Magento/LayeredNavigation/composer.json   |    8 +-
 .../view/frontend/layout/1column.xml          |    4 +-
 .../view/frontend/layout/2columns-left.xml    |    4 +-
 .../view/frontend/layout/2columns-right.xml   |    4 +-
 .../view/frontend/layout/3columns.xml         |    4 +-
 .../catalog_category_view_type_layered.xml    |   12 +-
 ...ory_view_type_layered_without_children.xml |    4 +-
 .../layout/catalogsearch_advanced_result.xml  |   14 +-
 .../layout/catalogsearch_result_index.xml     |   14 +-
 .../view/frontend/layout/page_empty.xml       |    4 +-
 .../view/frontend/page_layout/1column.xml     |   13 +-
 .../frontend/page_layout/2columns-left.xml    |   30 +
 .../frontend/page_layout/2columns-right.xml   |   30 +
 .../view/frontend/page_layout/3columns.xml    |   30 +
 app/code/Magento/Log/composer.json            |   14 +-
 .../adminhtml/layout/customer_index_edit.xml  |    8 +-
 .../adminhtml/layout/visitor_online_index.xml |  192 +--
 app/code/Magento/Msrp/composer.json           |   24 +-
 .../base/layout/catalog_product_prices.xml    |    4 +-
 .../frontend/layout/catalog_category_view.xml |    3 +-
 .../layout/catalog_product_compare_index.xml  |    3 +-
 .../frontend/layout/catalog_product_view.xml  |   26 +-
 ...catalog_product_view_type_downloadable.xml |   12 +-
 .../layout/catalogsearch_advanced_result.xml  |    1 +
 .../layout/catalogsearch_result_index.xml     |    1 +
 .../frontend/layout/checkout_cart_index.xml   |   16 +-
 .../layout/checkout_onepage_failure.xml       |    1 +
 .../layout/checkout_onepage_success.xml       |    1 +
 .../Msrp/view/frontend/layout/default.xml     |   16 +-
 .../Msrp/view/frontend/layout/msrp_popup.xml  |   12 +-
 .../frontend/layout/review_product_list.xml   |    3 +-
 ...list_index_configure_type_downloadable.xml |   12 +-
 .../frontend/layout/wishlist_index_index.xml  |    3 +-
 .../frontend/layout/wishlist_search_view.xml  |    3 +-
 .../frontend/layout/wishlist_shared_index.xml |    3 +-
 app/code/Magento/Multishipping/composer.json  |   20 +-
 .../frontend/layout/checkout_cart_index.xml   |    8 +-
 .../layout/multishipping_checkout.xml         |   10 +-
 ...ishipping_checkout_address_editaddress.xml |   12 +-
 ...ishipping_checkout_address_editbilling.xml |   12 +-
 ...shipping_checkout_address_editshipping.xml |   12 +-
 ...tishipping_checkout_address_newbilling.xml |   12 +-
 ...ishipping_checkout_address_newshipping.xml |   12 +-
 .../multishipping_checkout_address_select.xml |    8 +-
 ...hipping_checkout_address_selectbilling.xml |   18 +-
 .../multishipping_checkout_addresses.xml      |   38 +-
 .../layout/multishipping_checkout_billing.xml |   30 +-
 ...ultishipping_checkout_customer_address.xml |    8 +-
 .../layout/multishipping_checkout_login.xml   |    1 +
 .../multishipping_checkout_overview.xml       |   48 +-
 .../multishipping_checkout_register.xml       |    1 +
 .../multishipping_checkout_shipping.xml       |   36 +-
 .../layout/multishipping_checkout_success.xml |   18 +-
 .../templates/checkout/addresses.phtml        |   10 +-
 .../templates/checkout/billing/items.phtml    |    5 +-
 .../templates/checkout/item/default.phtml     |   44 +-
 .../templates/checkout/overview.phtml         |   22 +-
 .../templates/checkout/shipping.phtml         |    6 +-
 app/code/Magento/Newsletter/composer.json     |   22 +-
 .../layout/newsletter_problem_block.xml       |  144 +-
 .../layout/newsletter_problem_index.xml       |    8 +-
 .../layout/newsletter_queue_edit.xml          |   10 +-
 .../layout/newsletter_queue_grid_block.xml    |  188 +--
 .../layout/newsletter_queue_index.xml         |    8 +-
 .../layout/newsletter_queue_preview.xml       |   16 +-
 .../layout/newsletter_subscriber_block.xml    |  278 ++--
 .../newsletter_subscriber_exportcsv.xml       |    4 +-
 .../newsletter_subscriber_exportxml.xml       |    4 +-
 .../layout/newsletter_subscriber_index.xml    |    8 +-
 .../layout/newsletter_template_edit.xml       |   10 +-
 .../layout/newsletter_template_preview.xml    |   16 +-
 .../view/frontend/layout/customer_account.xml |   20 +-
 .../view/frontend/layout/default.xml          |   14 +-
 .../layout/newsletter_manage_index.xml        |   12 +-
 app/code/Magento/OfflinePayments/README.md    |    5 +
 .../Magento/OfflinePayments/composer.json     |    6 +-
 app/code/Magento/OfflineShipping/README.md    |    6 +
 .../Magento/OfflineShipping/composer.json     |   20 +-
 app/code/Magento/Ogone/README.md              |    1 +
 app/code/Magento/Ogone/composer.json          |   12 +-
 .../frontend/layout/ogone_api_paypage.xml     |   16 +-
 .../frontend/layout/ogone_api_placeform.xml   |   10 +-
 .../Magento/PageCache/Block/Javascript.php    |   23 +-
 app/code/Magento/PageCache/Helper/Data.php    |   29 -
 .../App/FrontController/BuiltinPlugin.php     |   49 +-
 .../Model/App/FrontController/MessageBox.php  |    9 +-
 .../Model/Controller/Result/BuiltinPlugin.php |   93 ++
 .../Observer/ProcessLayoutRenderElement.php   |   24 +-
 app/code/Magento/PageCache/composer.json      |    8 +-
 .../Magento/PageCache/etc/frontend/di.xml     |    3 +
 .../layout/adminhtml_system_config_edit.xml   |    8 +-
 .../view/frontend/layout/default.xml          |   14 +-
 .../Magento/PayPalRecurringPayment/README.md  |    2 +
 .../PayPalRecurringPayment/composer.json      |   16 +-
 .../Payment/Block/Info/AbstractContainer.php  |    2 +-
 app/code/Magento/Payment/Helper/Data.php      |   13 +-
 app/code/Magento/Payment/README.md            |    2 +
 app/code/Magento/Payment/composer.json        |   14 +-
 .../frontend/templates/info/default.phtml     |    3 +-
 app/code/Magento/Paypal/README.md             |    6 +
 app/code/Magento/Paypal/composer.json         |   30 +-
 .../layout/adminhtml_paypal_reports_block.xml |  214 +--
 .../layout/adminhtml_system_config_edit.xml   |    1 +
 .../adminhtml/layout/customer_index_edit.xml  |   14 +-
 .../layout/paypal_billing_agreement_index.xml |    8 +-
 .../layout/paypal_billing_agreement_view.xml  |   56 +-
 .../layout/paypal_paypal_reports_index.xml    |    8 +-
 .../frontend/layout/catalog_category_view.xml |   36 +-
 .../frontend/layout/catalog_product_view.xml  |   34 +-
 .../frontend/layout/checkout_cart_index.xml   |   34 +-
 .../layout/checkout_onepage_index.xml         |   30 +-
 .../layout/checkout_onepage_review.xml        |   22 +-
 .../layout/checkout_onepage_success.xml       |    8 +-
 .../view/frontend/layout/cms_index_index.xml  |   36 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../layout/paypal_billing_agreement_index.xml |    8 +-
 .../layout/paypal_billing_agreement_view.xml  |    8 +-
 .../frontend/layout/paypal_express_review.xml |   35 +-
 .../layout/paypal_payflowexpress_review.xml   |   38 +-
 .../templates/billing/agreement/view.phtml    |    4 +-
 .../templates/billing/agreements.phtml        |    2 +-
 .../templates/express/review/details.phtml    |   38 +-
 app/code/Magento/Persistent/composer.json     |   16 +-
 .../layout/checkout_onepage_index.xml         |   14 +-
 .../layout/customer_account_create.xml        |    8 +-
 .../layout/customer_account_login.xml         |    8 +-
 app/code/Magento/ProductAlert/README.md       |    1 +
 app/code/Magento/ProductAlert/composer.json   |   12 +-
 .../frontend/layout/catalog_product_view.xml  |   46 +-
 .../Product/Edit/Tab/Price/Recurring.php      |   20 +-
 app/code/Magento/RecurringPayment/README.md   |    3 +
 .../Magento/RecurringPayment/composer.json    |   26 +-
 .../adminhtml/layout/customer_index_edit.xml  |   14 +-
 .../layout/sales_recurringpayment_index.xml   |    8 +-
 .../layout/sales_recurringpayment_view.xml    |  160 +--
 .../frontend/layout/catalog_product_view.xml  |   22 +-
 .../layout/checkout_onepage_success.xml       |    8 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../layout/sales_recurringpayment_index.xml   |   26 +-
 .../layout/sales_recurringpayment_orders.xml  |   42 +-
 .../layout/sales_recurringpayment_view.xml    |  116 +-
 .../sales_recurringpayment_view__tabs.xml     |   46 +-
 .../frontend/templates/recurring/grid.phtml   |    2 +-
 .../recurring/payment/view/info.phtml         |    3 +-
 app/code/Magento/Reports/composer.json        |   36 +-
 .../layout/reports_index_exportsearchcsv.xml  |    4 +-
 .../reports_index_exportsearchexcel.xml       |    4 +-
 .../adminhtml/layout/reports_index_search.xml |    8 +-
 .../layout/reports_index_search_block.xml     |  148 +--
 .../reports_report_customer_accounts.xml      |    8 +-
 .../reports_report_customer_accounts_grid.xml |   68 +-
 ...orts_report_customer_exportaccountscsv.xml |    4 +-
 ...ts_report_customer_exportaccountsexcel.xml |    4 +-
 ...eports_report_customer_exportorderscsv.xml |    4 +-
 ...orts_report_customer_exportordersexcel.xml |    4 +-
 ...eports_report_customer_exporttotalscsv.xml |    4 +-
 ...orts_report_customer_exporttotalsexcel.xml |    4 +-
 .../layout/reports_report_customer_orders.xml |    8 +-
 .../reports_report_customer_orders_grid.xml   |  130 +-
 .../layout/reports_report_customer_totals.xml |    8 +-
 .../reports_report_customer_totals_grid.xml   |   50 +-
 .../adminhtml/layout/reports_report_grid.xml  |  100 +-
 .../reports_report_product_downloads.xml      |   32 +-
 ...ports_report_product_exportlowstockcsv.xml |    4 +-
 ...rts_report_product_exportlowstockexcel.xml |    4 +-
 .../reports_report_product_exportsoldcsv.xml  |    4 +-
 ...reports_report_product_exportsoldexcel.xml |    4 +-
 .../reports_report_product_lowstock.xml       |   38 +-
 .../reports_report_product_lowstock_grid.xml  |   96 +-
 .../layout/reports_report_product_sold.xml    |    8 +-
 .../reports_report_product_sold_grid.xml      |   84 +-
 .../layout/reports_report_product_viewed.xml  |   54 +-
 .../layout/reports_report_review_customer.xml |    8 +-
 .../reports_report_review_customer_grid.xml   |  118 +-
 ...eports_report_review_exportcustomercsv.xml |    4 +-
 ...orts_report_review_exportcustomerexcel.xml |    4 +-
 ...reports_report_review_exportproductcsv.xml |    4 +-
 ...ports_report_review_exportproductexcel.xml |    4 +-
 .../layout/reports_report_review_product.xml  |    8 +-
 .../reports_report_review_product_grid.xml    |  192 +--
 .../reports_report_sales_bestsellers.xml      |   62 +-
 .../layout/reports_report_sales_coupons.xml   |   64 +-
 .../layout/reports_report_sales_invoiced.xml  |   54 +-
 .../layout/reports_report_sales_refunded.xml  |   54 +-
 .../layout/reports_report_sales_sales.xml     |   64 +-
 .../layout/reports_report_sales_shipping.xml  |   54 +-
 .../layout/reports_report_sales_tax.xml       |   64 +-
 .../reports_report_shopcart_abandoned.xml     |   25 +-
 .../reports_report_statistics_index.xml       |  126 +-
 .../view/adminhtml/layout/reports_sales.xml   |   12 +-
 .../Reports/view/frontend/layout/default.xml  |    8 +-
 .../Reports/view/frontend/layout/print.xml    |    4 +-
 app/code/Magento/RequireJs/composer.json      |    4 +-
 app/code/Magento/Review/Block/Form.php        |   11 +-
 app/code/Magento/Review/composer.json         |   22 +-
 .../adminhtml/layout/catalog_product_new.xml  |   34 +-
 .../view/adminhtml/layout/rating_block.xml    |  102 +-
 .../adminhtml/layout/review_product_edit.xml  |    3 +-
 .../adminhtml/layout/review_product_index.xml |   12 +-
 .../adminhtml/layout/review_rating_edit.xml   |    5 +-
 .../adminhtml/layout/review_rating_index.xml  |    8 +-
 .../frontend/layout/catalog_product_view.xml  |   32 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../layout/customer_account_index.xml         |    8 +-
 .../frontend/layout/review_customer_index.xml |    8 +-
 .../frontend/layout/review_customer_view.xml  |    8 +-
 .../frontend/layout/review_product_list.xml   |   28 +-
 .../frontend/layout/review_product_view.xml   |   10 +-
 .../frontend/templates/customer/list.phtml    |    2 +-
 .../view/frontend/templates/detailed.phtml    |   13 +-
 .../Review/view/frontend/templates/view.phtml |   30 +-
 app/code/Magento/Rss/composer.json            |    8 +-
 .../Rss/view/frontend/layout/default.xml      |   20 +-
 .../view/frontend/layout/rss_index_index.xml  |   20 +-
 .../Rss/view/frontend/templates/feeds.phtml   |    5 +-
 app/code/Magento/Rule/composer.json           |   12 +-
 .../Sales/Block/Adminhtml/Order/Create.php    |   10 +
 .../Sales/Block/Adminhtml/Order/Payment.php   |    2 +-
 .../Magento/Sales/Block/Order/Creditmemo.php  |    3 +-
 app/code/Magento/Sales/Block/Order/Info.php   |    3 +-
 .../Magento/Sales/Block/Order/Invoice.php     |    3 +-
 .../Block/Order/PrintOrder/Creditmemo.php     |    3 +-
 .../Sales/Block/Order/PrintOrder/Invoice.php  |    3 +-
 .../Sales/Block/Order/PrintOrder/Shipment.php |    3 +-
 .../Sales/Block/Order/PrintShipment.php       |    3 +-
 app/code/Magento/Sales/Block/Order/View.php   |    3 +-
 app/code/Magento/Sales/composer.json          |   44 +-
 app/code/Magento/Sales/etc/webapi.xml         |    2 +-
 .../layout/sales_creditmemo_exportcsv.xml     |    4 +-
 .../layout/sales_creditmemo_exportexcel.xml   |    4 +-
 .../layout/sales_creditmemo_grid_block.xml    |  265 ++--
 .../layout/sales_creditmemo_index.xml         |    8 +-
 .../layout/sales_creditmemo_item_price.xml    |   12 +-
 .../layout/sales_invoice_exportcsv.xml        |    4 +-
 .../layout/sales_invoice_exportexcel.xml      |    4 +-
 .../layout/sales_invoice_grid_block.xml       |  266 ++--
 .../adminhtml/layout/sales_invoice_index.xml  |    8 +-
 .../layout/sales_invoice_item_price.xml       |   12 +-
 .../adminhtml/layout/sales_order_address.xml  |    8 +-
 .../sales_order_create_customer_block.xml     |  140 +-
 .../layout/sales_order_create_index.xml       |  120 +-
 .../layout/sales_order_create_item_price.xml  |    8 +-
 ...rder_create_load_block_billing_address.xml |    8 +-
 ...order_create_load_block_billing_method.xml |   12 +-
 .../sales_order_create_load_block_comment.xml |    8 +-
 .../sales_order_create_load_block_data.xml    |   78 +-
 ...s_order_create_load_block_form_account.xml |    8 +-
 ...es_order_create_load_block_giftmessage.xml |    8 +-
 .../sales_order_create_load_block_header.xml  |    8 +-
 .../sales_order_create_load_block_items.xml   |   18 +-
 .../sales_order_create_load_block_json.xml    |    8 +-
 .../sales_order_create_load_block_message.xml |    8 +-
 ...les_order_create_load_block_newsletter.xml |   12 +-
 .../sales_order_create_load_block_plain.xml   |    8 +-
 .../sales_order_create_load_block_search.xml  |   12 +-
 ...es_order_create_load_block_search_grid.xml |    8 +-
 ...der_create_load_block_shipping_address.xml |    8 +-
 ...rder_create_load_block_shipping_method.xml |   12 +-
 .../sales_order_create_load_block_sidebar.xml |   24 +-
 ...s_order_create_load_block_sidebar_cart.xml |    8 +-
 ...der_create_load_block_sidebar_compared.xml |    8 +-
 ...er_create_load_block_sidebar_pcompared.xml |    8 +-
 ...rder_create_load_block_sidebar_pviewed.xml |    8 +-
 ...rder_create_load_block_sidebar_reorder.xml |    8 +-
 ...order_create_load_block_sidebar_viewed.xml |    8 +-
 ...der_create_load_block_sidebar_wishlist.xml |    8 +-
 .../sales_order_create_load_block_totals.xml  |    8 +-
 .../sales_order_creditmemo_addcomment.xml     |    8 +-
 .../sales_order_creditmemo_grid_block.xml     |  142 +-
 .../layout/sales_order_creditmemo_new.xml     |   38 +-
 .../sales_order_creditmemo_updateqty.xml      |   26 +-
 .../layout/sales_order_creditmemo_view.xml    |   42 +-
 .../layout/sales_order_edit_index.xml         |    1 +
 .../layout/sales_order_exportcsv.xml          |    4 +-
 .../layout/sales_order_exportexcel.xml        |    4 +-
 .../layout/sales_order_grid_block.xml         |  360 ++---
 .../adminhtml/layout/sales_order_index.xml    |    8 +-
 .../layout/sales_order_invoice_addcomment.xml |    8 +-
 .../layout/sales_order_invoice_grid_block.xml |  140 +-
 .../layout/sales_order_invoice_new.xml        |   32 +-
 .../layout/sales_order_invoice_updateqty.xml  |   20 +-
 .../layout/sales_order_invoice_view.xml       |   42 +-
 .../layout/sales_order_item_price.xml         |   12 +-
 .../sales_order_shipment_grid_block.xml       |  116 +-
 .../layout/sales_order_status_assign.xml      |    8 +-
 .../layout/sales_order_status_edit.xml        |    8 +-
 .../layout/sales_order_status_index.xml       |  178 +--
 .../layout/sales_order_status_new.xml         |    8 +-
 .../sales_order_transactions_grid_block.xml   |   12 +-
 .../adminhtml/layout/sales_order_view.xml     |  118 +-
 .../layout/sales_shipment_exportcsv.xml       |    4 +-
 .../layout/sales_shipment_exportexcel.xml     |    6 +-
 .../layout/sales_shipment_grid_block.xml      |  244 ++--
 .../adminhtml/layout/sales_shipment_index.xml |    8 +-
 .../layout/sales_transaction_child_block.xml  |   92 +-
 .../layout/sales_transactions_grid_block.xml  |  206 +--
 .../layout/sales_transactions_index.xml       |    8 +-
 .../layout/sales_transactions_view.xml        |   14 +-
 .../templates/order/create/items/grid.phtml   |   20 +-
 .../layout/checkout_onepage_index.xml         |    4 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../layout/customer_account_index.xml         |    8 +-
 .../Sales/view/frontend/layout/default.xml    |   30 +-
 .../layout/sales_email_item_price.xml         |    8 +-
 .../sales_email_order_creditmemo_items.xml    |   26 +-
 ...sales_email_order_creditmemo_renderers.xml |    8 +-
 .../sales_email_order_invoice_items.xml       |   26 +-
 .../sales_email_order_invoice_renderers.xml   |    8 +-
 .../layout/sales_email_order_items.xml        |   32 +-
 .../layout/sales_email_order_renderers.xml    |   13 +-
 .../sales_email_order_shipment_items.xml      |   12 +-
 .../sales_email_order_shipment_renderers.xml  |    8 +-
 .../layout/sales_guest_creditmemo.xml         |   48 +-
 .../view/frontend/layout/sales_guest_form.xml |   10 +-
 .../frontend/layout/sales_guest_invoice.xml   |   46 +-
 .../frontend/layout/sales_guest_print.xml     |   39 +-
 .../layout/sales_guest_printcreditmemo.xml    |   30 +-
 .../layout/sales_guest_printinvoice.xml       |   30 +-
 .../layout/sales_guest_printshipment.xml      |   18 +-
 .../frontend/layout/sales_guest_reorder.xml   |   10 +-
 .../frontend/layout/sales_guest_shipment.xml  |   20 +-
 .../view/frontend/layout/sales_guest_view.xml |   48 +-
 .../layout/sales_order_creditmemo.xml         |   54 +-
 .../sales_order_creditmemo_renderers.xml      |    8 +-
 .../layout/sales_order_guest_info_links.xml   |   64 +-
 .../frontend/layout/sales_order_history.xml   |   14 +-
 .../layout/sales_order_info_links.xml         |   64 +-
 .../frontend/layout/sales_order_invoice.xml   |   56 +-
 .../layout/sales_order_invoice_renderers.xml  |    8 +-
 .../layout/sales_order_item_price.xml         |    8 +-
 .../layout/sales_order_item_renderers.xml     |    8 +-
 .../frontend/layout/sales_order_print.xml     |   41 +-
 ...sales_order_print_creditmemo_renderers.xml |    8 +-
 .../sales_order_print_invoice_renderers.xml   |    8 +-
 .../layout/sales_order_print_renderers.xml    |    8 +-
 .../sales_order_print_shipment_renderers.xml  |    8 +-
 .../layout/sales_order_printcreditmemo.xml    |   32 +-
 .../layout/sales_order_printinvoice.xml       |   32 +-
 .../layout/sales_order_printshipment.xml      |   20 +-
 .../frontend/layout/sales_order_reorder.xml   |    8 +-
 .../frontend/layout/sales_order_shipment.xml  |   30 +-
 .../layout/sales_order_shipment_renderers.xml |    8 +-
 .../view/frontend/layout/sales_order_view.xml |   54 +-
 .../view/frontend/templates/guest/form.phtml  |    2 +-
 .../templates/order/creditmemo/items.phtml    |    2 +-
 .../creditmemo/items/renderer/default.phtml   |    7 +-
 .../frontend/templates/order/history.phtml    |    4 +-
 .../templates/order/invoice/items.phtml       |    2 +-
 .../invoice/items/renderer/default.phtml      |   10 +-
 .../view/frontend/templates/order/items.phtml |   44 +-
 .../order/items/renderer/default.phtml        |   11 +-
 .../view/frontend/templates/order/print.phtml |   97 --
 .../templates/order/print/creditmemo.phtml    |  107 +-
 .../templates/order/print/invoice.phtml       |  144 +-
 .../templates/order/print/shipment.phtml      |  140 +-
 .../frontend/templates/order/recent.phtml     |    2 +-
 .../shipment/items/renderer/default.phtml     |    9 -
 .../view/frontend/templates/order/view.phtml  |   10 +-
 .../templates/widget/guest/form.phtml         |   12 +-
 app/code/Magento/SalesRule/composer.json      |   34 +-
 .../layout/sales_rule_promo_quote_edit.xml    |   74 +-
 .../layout/sales_rule_promo_quote_index.xml   |  172 +--
 .../Search/Controller/Adminhtml/Term.php      |   29 +-
 .../Controller/Adminhtml/Term/Delete.php      |   31 +-
 .../Search/Controller/Adminhtml/Term/Edit.php |   26 +-
 .../Controller/Adminhtml/Term/Index.php       |    7 +-
 .../Controller/Adminhtml/Term/MassDelete.php  |   25 +-
 .../Controller/Adminhtml/Term/NewAction.php   |   25 +-
 .../Search/Controller/Adminhtml/Term/Save.php |   27 +-
 app/code/Magento/Search/composer.json         |    8 +-
 .../layout/adminhtml_dashboard_index.xml      |   10 +-
 .../adminhtml/layout/search_term_edit.xml     |    8 +-
 .../layout/search_term_grid_block.xml         |  200 +--
 .../adminhtml/layout/search_term_index.xml    |    8 +-
 .../Search/view/frontend/layout/default.xml   |   24 +-
 .../frontend/layout/search_term_popular.xml   |   10 +-
 app/code/Magento/Sendfriend/README.md         |    1 +
 app/code/Magento/Sendfriend/composer.json     |   14 +-
 .../layout/sendfriend_product_send.xml        |   20 +-
 .../Magento/Shipping/Block/Order/Shipment.php |    3 +-
 .../Shipping/Controller/Tracking/Popup.php    |    1 +
 app/code/Magento/Shipping/README.md           |    2 +
 app/code/Magento/Shipping/composer.json       |   26 +-
 .../adminhtml_order_shipment_addcomment.xml   |    8 +-
 .../adminhtml_order_shipment_addtrack.xml     |    4 +-
 .../layout/adminhtml_order_shipment_new.xml   |   30 +-
 .../adminhtml_order_shipment_removetrack.xml  |    4 +-
 .../layout/adminhtml_order_shipment_view.xml  |   34 +-
 .../layout/sales_order_invoice_new.xml        |    8 +-
 .../adminhtml/layout/sales_order_view.xml     |    8 +-
 .../frontend/layout/sales_guest_reorder.xml   |   16 +-
 .../frontend/layout/sales_guest_shipment.xml  |   26 +-
 .../view/frontend/layout/sales_guest_view.xml |   16 +-
 .../frontend/layout/sales_order_reorder.xml   |   16 +-
 .../frontend/layout/sales_order_shipment.xml  |   26 +-
 .../view/frontend/layout/sales_order_view.xml |   16 +-
 .../layout/shipping_tracking_popup.xml        |   10 +-
 .../view/frontend/templates/items.phtml       |    2 +-
 .../frontend/templates/tracking/popup.phtml   |  201 +--
 app/code/Magento/Sitemap/composer.json        |   18 +-
 .../layout/adminhtml_sitemap_index.xml        |    8 +-
 .../adminhtml_sitemap_index_grid_block.xml    |  132 +-
 .../Magento/Store/App/Response/Redirect.php   |   30 +-
 app/code/Magento/Store/composer.json          |   10 +-
 .../Tax/Controller/Adminhtml/Rule/Index.php   |    2 -
 app/code/Magento/Tax/composer.json            |   28 +-
 .../layout/sales_creditmemo_item_price.xml    |   12 +-
 .../layout/sales_invoice_item_price.xml       |   12 +-
 .../layout/sales_order_create_item_price.xml  |   32 +-
 .../layout/sales_order_item_price.xml         |   12 +-
 .../view/adminhtml/layout/tax_rate_block.xml  |  120 +-
 .../adminhtml/layout/tax_rate_exportcsv.xml   |    4 +-
 .../adminhtml/layout/tax_rate_exportxml.xml   |    4 +-
 .../view/adminhtml/layout/tax_rate_index.xml  |    8 +-
 .../view/adminhtml/layout/tax_rule_block.xml  |  164 +--
 .../view/adminhtml/layout/tax_rule_edit.xml   |   12 +-
 .../view/adminhtml/layout/tax_rule_index.xml  |    8 +-
 .../base/layout/catalog_product_prices.xml    |    4 +-
 ...kout_cart_sidebar_item_price_renderers.xml |    8 +-
 .../checkout_cart_sidebar_total_renderers.xml |    8 +-
 .../layout/checkout_item_price_renderers.xml  |    6 +-
 .../checkout_shipping_price_renderer.xml      |    5 +-
 .../layout/sales_email_item_price.xml         |   16 +-
 .../layout/sales_order_item_price.xml         |   24 +-
 .../Magento/TaxImportExport/composer.json     |   12 +-
 .../view/adminhtml/layout/tax_rate_block.xml  |   60 +-
 .../view/adminhtml/layout/tax_rule_edit.xml   |    8 +-
 app/code/Magento/Theme/composer.json          |   16 +-
 .../adminhtml_system_design_theme_block.xml   |   98 +-
 .../adminhtml_system_design_theme_edit.xml    |   48 +-
 .../adminhtml_system_design_theme_index.xml   |    8 +-
 ...html_system_design_wysiwyg_files_index.xml |   22 +-
 .../Theme/view/base/page_layout/empty.xml     |    2 +-
 .../Theme/view/frontend/layout/default.xml    |  140 +-
 .../frontend/layout/default_head_blocks.xml   |   18 +-
 .../view/frontend/layout/page_calendar.xml    |    8 +-
 .../Theme/view/frontend/layout/print.xml      |   38 +
 .../view/frontend/templates/html/pager.phtml  |    2 +-
 .../view/frontend/templates/html/print.phtml  |   29 +
 app/code/Magento/Translation/composer.json    |   10 +-
 app/code/Magento/Ui/composer.json             |    8 +-
 .../Magento/Ui/view/base/layout/default.xml   |   16 +-
 app/code/Magento/Ups/README.md                |    1 +
 app/code/Magento/Ups/composer.json            |   18 +-
 .../layout/adminhtml_system_config_edit.xml   |    8 +-
 app/code/Magento/UrlRewrite/composer.json     |   18 +-
 .../layout/adminhtml_url_rewrite_index.xml    |  152 +--
 app/code/Magento/User/composer.json           |   14 +-
 .../adminhtml/layout/adminhtml_auth_login.xml |    8 +-
 .../adminhtml/layout/adminhtml_user_edit.xml  |   22 +-
 .../layout/adminhtml_user_grid_block.xml      |  163 +--
 .../adminhtml/layout/adminhtml_user_index.xml |    8 +-
 .../layout/adminhtml_user_role_editrole.xml   |   32 +-
 .../layout/adminhtml_user_role_grid_block.xml |   70 +-
 .../layout/adminhtml_user_role_index.xml      |    8 +-
 app/code/Magento/Usps/README.md               |    1 +
 app/code/Magento/Usps/composer.json           |   18 +-
 .../Webapi/Controller/Rest/Request.php        |   73 +-
 .../Controller/Soap/Request/Handler.php       |    2 +-
 .../Config/ClassReflector/TypeProcessor.php   |    4 +-
 .../Webapi/Model/DataObjectProcessor.php      |    4 +-
 app/code/Magento/Webapi/composer.json         |   16 +-
 ...ntegration_activate_permissions_webapi.xml |   16 +-
 .../layout/adminhtml_integration_edit.xml     |   36 +-
 app/code/Magento/Weee/composer.json           |   24 +-
 .../layout/sales_creditmemo_item_price.xml    |   12 +-
 .../layout/sales_invoice_item_price.xml       |   12 +-
 .../layout/sales_order_create_item_price.xml  |   32 +-
 .../layout/sales_order_creditmemo_new.xml     |   16 +-
 .../sales_order_creditmemo_updateqty.xml      |   16 +-
 .../layout/sales_order_creditmemo_view.xml    |   16 +-
 .../layout/sales_order_invoice_new.xml        |   16 +-
 .../layout/sales_order_invoice_updateqty.xml  |   16 +-
 .../layout/sales_order_invoice_view.xml       |   16 +-
 .../layout/sales_order_item_price.xml         |   12 +-
 .../adminhtml/layout/sales_order_view.xml     |   16 +-
 .../base/layout/catalog_product_prices.xml    |    4 +-
 ...kout_cart_sidebar_item_price_renderers.xml |   16 +-
 .../layout/checkout_item_price_renderers.xml  |   63 +-
 .../Weee/view/frontend/layout/default.xml     |    4 +-
 .../layout/sales_email_item_price.xml         |   16 +-
 .../sales_email_order_creditmemo_items.xml    |   16 +-
 .../sales_email_order_invoice_items.xml       |   16 +-
 .../layout/sales_email_order_items.xml        |   16 +-
 .../layout/sales_guest_creditmemo.xml         |   16 +-
 .../frontend/layout/sales_guest_invoice.xml   |   16 +-
 .../frontend/layout/sales_guest_print.xml     |   16 +-
 .../layout/sales_guest_printcreditmemo.xml    |   16 +-
 .../layout/sales_guest_printinvoice.xml       |   16 +-
 .../view/frontend/layout/sales_guest_view.xml |   16 +-
 .../layout/sales_order_creditmemo.xml         |   16 +-
 .../frontend/layout/sales_order_invoice.xml   |   16 +-
 .../layout/sales_order_item_price.xml         |   24 +-
 .../frontend/layout/sales_order_print.xml     |   16 +-
 .../layout/sales_order_printcreditmemo.xml    |   16 +-
 .../layout/sales_order_printinvoice.xml       |   16 +-
 .../view/frontend/layout/sales_order_view.xml |   16 +-
 app/code/Magento/Widget/composer.json         |   14 +-
 .../adminhtml_widget_instance_block.xml       |  106 +-
 .../layout/adminhtml_widget_instance_edit.xml |   54 +-
 .../adminhtml_widget_instance_index.xml       |    8 +-
 .../Widget/view/frontend/layout/default.xml   |    4 +-
 .../Widget/view/frontend/layout/print.xml     |    4 +-
 app/code/Magento/Wishlist/README.md           |    2 +
 app/code/Magento/Wishlist/composer.json       |   32 +-
 .../frontend/layout/catalog_category_view.xml |   20 +-
 .../frontend/layout/catalog_product_view.xml  |   20 +-
 .../view/frontend/layout/customer_account.xml |   18 +-
 .../Wishlist/view/frontend/layout/default.xml |   20 +-
 .../layout/wishlist_index_configure.xml       |    8 +-
 .../wishlist_index_configure_type_bundle.xml  |   96 +-
 ...list_index_configure_type_configurable.xml |   22 +-
 ...list_index_configure_type_downloadable.xml |   64 +-
 .../wishlist_index_configure_type_grouped.xml |    8 +-
 .../wishlist_index_configure_type_simple.xml  |    4 +-
 .../frontend/layout/wishlist_index_index.xml  |   76 +-
 .../frontend/layout/wishlist_index_share.xml  |    8 +-
 .../frontend/layout/wishlist_shared_index.xml |    8 +-
 .../view/frontend/templates/shared.phtml      |   13 +-
 .../Magento_Backend/layout/default.xml        |    1 +
 .../adminhtml/Magento/backend/composer.json   |    4 +-
 .../adminhtml/Magento/backend/theme.xml       |    2 +-
 .../layout/catalog_product_view.xml           |    4 +-
 .../web/css/source/module.less                |    7 +-
 .../web/css/source/toolbar.less               |    1 +
 .../layout/checkout_cart_index.xml            |   49 +-
 .../layout/checkout_onepage_index.xml         |   18 +-
 .../Magento_Checkout/web/css/source/cart.less |    3 +
 .../web/css/source/minicart.less              |   16 +-
 .../web/css/source/module.less                |   64 +-
 .../Magento_Cms/web/css/source/widgets.less   |    9 +-
 .../layout/customer_account.xml               |   54 +-
 .../web/css/source/module.less                |   72 +-
 .../web/css/source/module.less                |   64 +
 .../layout/multishipping_checkout.xml         |   14 +-
 .../web/css/source/module.less                |   92 +-
 .../Magento_Paypal/web/css/source/module.less |   12 +-
 .../Magento_Sales/web/css/source/module.less  |  100 +-
 .../web/css/source/module.less                |    4 +-
 .../blank/Magento_Theme/layout/default.xml    |   71 +-
 .../layout/default_head_blocks.xml            |    1 +
 .../Magento_Theme/web/css/source/module.less  |   36 +-
 .../frontend/Magento/blank/composer.json      |    4 +-
 app/design/frontend/Magento/blank/theme.xml   |    2 +-
 .../frontend/Magento/blank/web/css/print.less |   90 ++
 .../blank/web/css/source/abstract.less        |  205 ++-
 .../Magento/blank/web/css/source/forms.less   |   28 +-
 .../Magento/blank/web/css/source/layout.less  |   10 +-
 .../Magento/blank/web/css/source/tables.less  |    7 +-
 .../blank/web/css/source/typography.less      |    3 +-
 .../frontend/Magento/plushe/composer.json     |    6 +-
 app/design/frontend/Magento/plushe/theme.xml  |    2 +-
 app/design/install/Magento/basic/theme.xml    |    2 +-
 app/etc/di.xml                                |  127 +-
 app/i18n/magento/de_de/composer.json          |    4 +-
 app/i18n/magento/en_us/composer.json          |    4 +-
 app/i18n/magento/es_es/composer.json          |    4 +-
 app/i18n/magento/fr_fr/composer.json          |    4 +-
 app/i18n/magento/nl_nl/composer.json          |    4 +-
 app/i18n/magento/pt_br/composer.json          |    4 +-
 app/i18n/magento/zh_cn/composer.json          |    4 +-
 composer.json                                 |    2 +-
 .../Selenium/Element/DatepickerElement.php    |   24 +-
 .../lib/Mtf/Constraint/AbstractAssertForm.php |   23 +-
 .../lib/Mtf/Util/Generate/TestCase.php        |  279 ----
 .../lib/Mtf/Util/Generate/testcase.xml        |  116 --
 .../Backend/Test/Block/Widget/Grid.php        |    2 +-
 .../Test/Block/Catalog/Product/View.php       |   23 +-
 .../BundleProduct/BundleSelections.php        |    7 +-
 .../Fixture/BundleProduct/CheckoutData.php    |   19 +
 .../Test/Fixture/BundleProduct/Price.php      |    4 +-
 .../Test/Page/Adminhtml/OrderCreateIndex.xml  |    2 +-
 .../Test/Block/AbstractConfigureBlock.php     |   18 +-
 .../Test/Block/Adminhtml/Product/Grid.php     |    4 +
 .../Block/Adminhtml/Product/ProductForm.php   |    2 +-
 .../Test/Constraint/AssertProductInGrid.php   |   52 +-
 .../Test/Fixture/CatalogProductSimple.php     |   10 +
 .../Test/Fixture/CatalogProductSimple.xml     |    4 +
 .../CatalogProductSimple/AttributeSetId.php   |   10 +-
 .../CatalogProductSimple/CheckoutData.php     |   23 +-
 .../CatalogProductSimple/CustomOptions.php    |    9 +
 .../Fixture/CatalogProductSimple/Price.php    |    4 +-
 .../Fixture/CatalogProductSimple/TaxClass.php |   18 +-
 .../Handler/CatalogProductSimple/Curl.php     |    4 +
 .../Test/Repository/CatalogProductSimple.php  |    1 +
 .../ProductTypeSwitchingOnUpdateTest.php      |  161 +++
 .../ProductTypeSwitchingOnUpdateTest/test.csv |   12 +
 .../Test/TestStep/CreateProductsStep.php      |   22 +-
 .../Checkout/Test/Block/Cart/Sidebar/Item.php |   17 +
 .../Constraint/AssertCartItemsOptions.php     |   61 +-
 ...sertProductOptionsAbsentInShoppingCart.php |   82 ++
 .../AssertProductQtyInMiniShoppingCart.php    |    6 +-
 .../AssertProductsAbsentInShoppingCart.php    |   69 +
 .../Magento/Checkout/Test/etc/constraint.xml  |    9 +-
 .../Magento/Checkout/Test/etc/scenario.xml    |   64 +
 .../Constraint/AssertTermAbsentInGrid.php     |   69 +
 ...out.php => AssertTermAbsentOnCheckout.php} |    8 +-
 ...rtTermsInGrid.php => AssertTermInGrid.php} |    8 +-
 ...nCheckout.php => AssertTermOnCheckout.php} |    6 +-
 .../AssertTermSuccessDeleteMessage.php        |   72 +
 ...e.php => AssertTermSuccessSaveMessage.php} |   10 +-
 .../Test/Fixture/CheckoutAgreement.php        |    2 +-
 .../TestCase/CreateTermEntityTest/test.csv    |    8 +-
 .../Test/TestCase/DeleteTermEntityTest.php    |  123 ++
 .../TestCase/DeleteTermEntityTest/test.csv    |    2 +
 .../TestCase/UpdateTermEntityTest/test.csv    |    6 +-
 .../Test/etc/constraint.xml                   |   22 +-
 .../Product/Edit/Tab/Super/Config.php         |   45 +-
 ...ductAttributeAbsenceInVariationsSearch.php |    3 +-
 .../AssertProductAttributeIsConfigurable.php  |    3 +-
 .../CheckoutData.php                          |   22 +
 .../ConfigurableAttributesData.php            |   13 +-
 .../Page/Adminhtml/CatalogProductEdit.xml     |    9 +-
 .../Magento/Customer/Test/etc/scenario.xml    |   64 +
 .../Product/Edit/Tab/Downloadable/LinkRow.php |   17 +
 .../Product/Edit/Tab/Downloadable/Links.php   |   16 +
 .../Test/Block/Catalog/Product/View.php       |   23 +-
 .../CheckoutData.php                          |   16 +-
 .../DownloadableProductInjectable/Links.php   |    4 +-
 .../DownloadableProductInjectable/Samples.php |    4 +-
 .../DownloadableProductInjectable/Curl.php    |    7 +-
 .../Test/Block/Adminhtml/Order/Create.php     |   62 +
 .../Block/Adminhtml/Order/Create/Form.php     |   56 +
 .../Block/Adminhtml/Order/Create/Form.xml     |   38 +
 .../Adminhtml/Order/Create/GiftOptions.php    |   34 +
 .../Adminhtml/Order/Create/GiftOptions.xml    |   38 +
 .../Block/Adminhtml/Order/Create/Items.php    |   62 +
 .../Order/Create/Items/ItemProduct.php        |   81 ++
 .../Test/Block/Adminhtml/Order/View/Form.php  |   31 +-
 .../Test/Block/Adminhtml/Order/View/Form.xml  |   38 +
 .../Adminhtml/Order/View/GiftOptions.php}     |   13 +-
 .../Adminhtml/Order/View/GiftOptions.xml      |   38 +
 .../Test/Block/Adminhtml/Order/View/Items.php |   62 +
 .../Order/View/Items/ItemProduct.php          |   72 +
 .../AssertGiftMessageInBackendOrder.php       |  102 ++
 .../AssertGiftMessageInFrontendOrder.php      |   20 +-
 .../AssertGiftMessageInFrontendOrderItems.php |   22 +-
 .../GiftMessage/Test/Fixture/GiftMessage.php  |   18 +
 .../GiftMessage/Test/Fixture/GiftMessage.xml  |    5 +
 .../Test/Fixture/GiftMessage/Items.php        |  102 ++
 .../Test/Page/Adminhtml/OrderCreateIndex.xml  |   39 +
 .../Test/Page/Adminhtml/OrderView.xml         |   39 +
 .../Test/Repository/GiftMessage.php           |   50 +
 .../TestCase/CheckoutWithGiftMessagesTest.php |  105 +-
 .../CreateGiftMessageOnBackendTest.php        |   73 ++
 .../CreateGiftMessageOnBackendTest/test.csv   |    4 +
 .../TestStep/AddGiftMessageBackendStep.php    |   91 ++
 .../GiftMessage/Test/etc/constraint.xml       |    3 +
 .../Magento/GiftMessage/Test/etc/fixture.xml  |    6 +
 .../Magento/GiftMessage/Test/etc/scenario.xml |  124 ++
 .../Catalog/Product/View/Type/Grouped.php     |   48 +-
 .../GroupedProductInjectable/Associated.php   |   26 +-
 .../Tax/Test/Block/Adminhtml/Rule/Grid.php    |    2 +-
 .../Test/Page/Adminhtml/UrlRewriteIndex.xml   |   44 +
 .../Block/Adminhtml/User/Edit/PageActions.php |   52 +
 .../AssertAccessTokensErrorRevokeMessage.php  |   71 +
 .../User/Test/Page/Adminhtml/UserEdit.xml     |    2 +-
 ...lAccessTokensForAdminWithoutTokensTest.php |   97 ++
 .../test.csv                                  |    2 +
 .../app/Magento/User/Test/etc/constraint.xml  |    6 +
 .../Controller/Adminhtml/UrlRewriteTest.php   |   58 +
 .../Magento/Bundle/Controller/ProductTest.php |    6 -
 .../Block/Adminhtml/Product/Edit/TabsTest.php |    2 +-
 .../Catalog/Block/Product/ViewTest.php        |    2 +-
 .../Catalog/Controller/ProductTest.php        |    7 -
 .../Catalog/Helper/Product/ViewTest.php       |   27 +-
 .../Block/Advanced/ResultTest.php             |    2 +-
 .../CatalogSearch/Block/ResultTest.php        |    2 +-
 .../Block/Onepage/Payment/MethodsTest.php     |   12 +-
 .../Controller/Adminhtml/GroupTest.php        |    2 +-
 .../Controller/Adminhtml/IndexTest.php        |   12 +-
 .../Downloadable/Controller/ProductTest.php   |    6 -
 .../View/Element/AbstractBlockTest.php        |    2 +-
 .../Framework/View/LayoutDirectivesTest.php   |   84 +-
 .../Magento/Framework/View/LayoutTest.php     |   27 +-
 .../Magento/Framework/View/Utility/Layout.php |   16 +-
 .../arguments_complex_values.xml              |    3 +-
 .../layout_directives_test/get_block.xml      |    8 +-
 .../layout_directives_test/ifconfig.xml       |    2 +-
 .../_files/layout_directives_test/render.xml  |   12 +-
 .../Promo/Quote/Edit/Tab/MainTest.php         |    2 +-
 .../Block/Catalog/Category/EditTest.php       |    6 +-
 .../js/testsuite/mage/suggest/suggest-test.js |    4 +-
 .../Test/Legacy/_files/obsolete_classes.php   |    1 -
 .../Adminhtml/Cache/CleanMediaTest.php        |   44 +-
 .../Adminhtml/Dashboard/TunnelTest.php        |  206 ++-
 .../Adminhtml/System/Account/SaveTest.php     |   14 +-
 .../Adminhtml/System/Config/SaveTest.php      |   39 +-
 .../Magento/Backend/Model/ViewTest.php        |   90 --
 .../Category/Widget/CategoriesJsonTest.php    |   33 +-
 .../Adminhtml/Category/Widget/ChooserTest.php |   33 +-
 .../Product/Action/Attribute/SaveTest.php     |   13 +
 .../Adminhtml/Product/MassStatusTest.php      |   17 +-
 .../Adminhtml/Product/NewActionTest.php       |   41 +-
 .../Controller/Adminhtml/ProductTest.php      |   19 +-
 .../Catalog/Controller/Category/ViewTest.php  |   35 +-
 .../Model/Adminhtml/Stock/ItemTest.php        |    6 +
 .../Initializer/QtyProcessorTest.php          |  148 +++
 .../Initializer/StockItemTest.php             |  260 ++--
 .../Controller/Onepage/SaveBillingTest.php    |    4 +-
 .../Controller/Onepage/SaveShippingTest.php   |    4 +-
 .../Magento/Core/Model/Layout/MergeTest.php   |   33 +-
 .../Core/Model/Layout/_files/arguments.xml    |   86 +-
 .../_files/invalidLayoutArgumentsXmlArray.php |  150 ++-
 .../_files/layout/catalog_product_view.xml    |    4 +-
 ...catalog_product_view_type_configurable.xml |    4 +-
 .../Model/Layout/_files/layout/default.xml    |    4 +-
 .../_files/layout/fixture_handle_one.xml      |    4 +-
 .../_files/layout/fixture_handle_two.xml      |    4 +-
 .../fixture_handle_with_page_layout.xml       |    8 +-
 .../Core/Model/Layout/_files/merged.xml       |   28 +-
 .../Selector/SelectorList/AbstractTest.php    |   12 +-
 .../Downloadable/Helper/DownloadTest.php      |    2 +-
 .../Magento/Framework/App/ViewTest.php        |   64 +-
 .../Controller/Result/ForwardTest.php         |  126 ++
 .../Framework/Controller/Result/JSONTest.php  |   56 +
 .../Framework/Controller/Result/RawTest.php   |   69 +
 .../Controller/Result/RedirectTest.php        |  116 ++
 .../Model/AbstractExtensibleModelTest.php     |    2 +-
 .../_files/ExtensibleSampleInterface.php      |    2 +-
 .../View/Layout/BuilderFactoryTest.php        |  123 ++
 .../Framework/View/Layout/BuilderTest.php     |   91 ++
 .../View/Layout/Generator/BlockTest.php       |  180 +++
 .../View/Layout/Generator/ContainerTest.php   |  205 +++
 .../View/Layout/Generator/UiComponentTest.php |  170 +++
 .../View/Layout/GeneratorPoolTest.php         |  169 +++
 .../View/Layout/Reader/BlockTest.php          |  191 +++
 .../View/Layout/Reader/ContainerTest.php      |  163 +++
 .../View/Layout/Reader/FactoryTest.php        |   72 +
 .../Framework/View/Layout/Reader/MoveTest.php |  126 ++
 .../Framework/View/Layout/Reader/PoolTest.php |  100 ++
 .../View/Layout/Reader/RemoveTest.php         |   90 ++
 .../View/Layout/Reader/UiComponentTest.php    |  125 ++
 .../Layout/ScheduledStructure/HelperTest.php  |  171 +++
 .../Magento/Framework/View/LayoutTest.php     |  215 +--
 .../Framework/View/Page/BuilderTest.php       |   69 +
 .../View/Page/Config/Generator/BodyTest.php   |   89 ++
 .../HeadTest.php}                             |   63 +-
 .../Framework/View/Page/Config/ReaderTest.php |  115 --
 .../View/Page/Config/RendererTest.php         |    4 +-
 .../Framework/View/Page/ConfigTest.php        |  557 ++++++++
 .../Framework/View/Page/Layout/ReaderTest.php |  141 ++
 .../Framework/View/Result/LayoutTest.php      |  202 +++
 .../Framework/View/Result/PageFactoryTest.php |   64 +
 .../Framework/View/Result/PageTest.php        |   98 +-
 .../Magento/PageCache/Helper/DataTest.php     |   53 -
 .../ProcessLayoutRenderElementTest.php        |    6 +-
 .../Magento/Payment/Helper/DataTest.php       |    6 +-
 .../Product/Edit/Tab/Price/RecurringTest.php  |   49 +-
 .../Tools/Di/_files/app/etc/di/config.xml     |    2 +-
 .../Api/{ => Data}/AttributeInterface.php     |    2 +-
 .../ExtensibleDataBuilderInterface.php        |    8 +-
 .../{ => Data}/ExtensibleDataInterface.php    |    6 +-
 .../Api/Data/SearchCriteriaInterface.php      |   62 +
 .../Api/Data/SearchResultsInterface.php       |   52 +
 .../Magento/Framework/App/Action/Action.php   |    6 +-
 .../Magento/Framework/App/ActionInterface.php |    2 +-
 .../Magento/Framework/App/FrontController.php |    9 +-
 lib/internal/Magento/Framework/App/Http.php   |   16 +-
 .../App/Response/RedirectInterface.php        |    8 +
 .../Magento/Framework/App/RouterList.php      |    2 +-
 lib/internal/Magento/Framework/App/View.php   |   48 +-
 .../Magento/Framework/AppInterface.php        |    2 +-
 .../Framework/Controller/AbstractResult.php   |  109 ++
 .../Framework/Controller/Result/Forward.php   |  124 ++
 .../Framework/Controller/Result/JSON.php      |   88 ++
 .../Framework/Controller/Result/Raw.php       |   59 +
 .../Framework/Controller/Result/Redirect.php  |  118 ++
 .../Framework/Controller/ResultFactory.php    |  125 ++
 .../Framework/Controller/ResultInterface.php  |   62 +
 .../Model/AbstractExtensibleModel.php         |    3 +-
 .../Service/Code/Generator/DataBuilder.php    |    2 +-
 .../Service/Data/AbstractExtensibleObject.php |    2 +-
 .../Framework/Service/Data/AttributeValue.php |    2 +-
 .../Service/Data/ExtensibleDataBuilder.php    |    6 +-
 .../Service/SimpleDataObjectConverter.php     |   11 +
 .../Service/V1/Data/SearchCriteria.php        |   14 +-
 .../Framework/View/Element/AbstractBlock.php  |    9 +-
 .../View/Element/UiComponentFactory.php       |    1 -
 .../Magento/Framework/View/Layout.php         | 1159 +++--------------
 .../Magento/Framework/View/Layout/Builder.php |  176 +++
 .../Framework/View/Layout/BuilderFactory.php  |  105 ++
 .../View/Layout/BuilderInterface.php          |   35 +
 .../Framework/View/Layout/Data/Structure.php  |  143 ++
 .../Framework/View/Layout/Generator/Block.php |  234 ++++
 .../View/Layout/Generator/Container.php       |  152 +++
 .../View/Layout/Generator/Context.php         |   70 +
 .../View/Layout/Generator/UiComponent.php     |  140 ++
 .../View/Layout/GeneratorInterface.php        |   43 +
 .../Framework/View/Layout/GeneratorPool.php   |  174 +++
 .../Magento/Framework/View/Layout/Proxy.php   |   10 -
 .../Framework/View/Layout/Reader/Block.php    |  294 +++++
 .../View/Layout/Reader/Container.php          |  142 ++
 .../Framework/View/Layout/Reader/Context.php  |   70 +
 .../Framework/View/Layout/Reader/Move.php     |  100 ++
 .../Framework/View/Layout/Reader/Pool.php     |  102 ++
 .../Framework/View/Layout/Reader/Remove.php   |   58 +
 .../View/Layout/Reader/UiComponent.php        |  136 ++
 .../Layout/{Factory.php => ReaderFactory.php} |   26 +-
 .../Framework/View/Layout/ReaderInterface.php |   44 +
 .../View/Layout/ScheduledStructure.php        |   35 +-
 .../View/Layout/ScheduledStructure/Helper.php |  251 ++++
 .../Framework/View/Layout/etc/body.xsd        |   12 +-
 .../Framework/View/Layout/etc/elements.xsd    |    9 -
 .../Framework/View/Layout/etc/head.xsd        |   11 +
 .../View/Layout/etc/page_configuration.xsd    |    8 -
 .../Framework/View/LayoutInterface.php        |   11 +-
 .../Magento/Framework/View/Page/Builder.php   |   98 ++
 .../Magento/Framework/View/Page/Config.php    |   64 +-
 .../View/Page/Config/Generator/Body.php       |   83 ++
 .../{Generator.php => Generator/Head.php}     |  111 +-
 .../Framework/View/Page/Config/Reader.php     |  181 ---
 .../View/Page/Config/Reader/Body.php          |  109 ++
 .../View/Page/Config/Reader/Head.php          |  126 ++
 .../View/Page/Config/Reader/Html.php          |   81 ++
 .../Framework/View/Page/Config/Renderer.php   |    4 +-
 .../View/Page/Config/RendererFactory.php      |   70 +
 .../Framework/View/Page/ConfigFactory.php     |   70 +
 .../Framework/View/Page/Layout/Reader.php     |  108 ++
 .../Magento/Framework/View/Result/Layout.php  |  132 +-
 .../Framework/View/Result/LayoutFactory.php   |   61 +
 .../Magento/Framework/View/Result/Page.php    |  184 ++-
 .../Framework/View/Result/PageFactory.php     |   21 +-
 lib/internal/Magento/Framework/composer.json  |    2 +-
 lib/web/css/source/lib/responsive.less        |   15 +-
 lib/web/css/source/lib/tables.less            |    4 +-
 lib/web/css/source/lib/utilities.less         |   16 +-
 lib/web/css/source/lib/variables.less         |   30 +-
 lib/web/mage/backend/suggest.js               |    4 +-
 1359 files changed, 30243 insertions(+), 15374 deletions(-)
 create mode 100644 app/code/Magento/Authorizenet/README.md
 create mode 100644 app/code/Magento/Backend/Model/View/Layout/Builder.php
 rename app/code/Magento/Backend/Model/{ => View}/Layout/Filter/Acl.php (97%)
 create mode 100644 app/code/Magento/Backend/Model/View/Page/Builder.php
 create mode 100644 app/code/Magento/Backend/Model/View/Result/Forward.php
 create mode 100644 app/code/Magento/Backend/Model/View/Result/Page.php
 create mode 100644 app/code/Magento/Backend/Model/View/Result/Redirect.php
 create mode 100644 app/code/Magento/Catalog/Controller/Adminhtml/Product/AbstractProductGrid.php
 create mode 100644 app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessor.php
 create mode 100644 app/code/Magento/Centinel/README.md
 create mode 100644 app/code/Magento/Customer/Api/AccountManagementInterface.php
 create mode 100644 app/code/Magento/Customer/Api/AddressManagementInterface.php
 create mode 100644 app/code/Magento/Customer/Api/AddressMetadataInterface.php
 create mode 100644 app/code/Magento/Customer/Api/AddressRepositoryInterface.php
 create mode 100644 app/code/Magento/Customer/Api/CustomerMetadataInterface.php
 create mode 100644 app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/AddressInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/CustomerInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/GroupInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/RegionInterface.php
 create mode 100644 app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
 create mode 100644 app/code/Magento/Customer/Api/GroupManagementInterface.php
 create mode 100644 app/code/Magento/Customer/Api/GroupRepositoryInterface.php
 create mode 100644 app/code/Magento/Customer/Api/MetadataInterface.php
 create mode 100644 app/code/Magento/Customer/README.md
 create mode 100644 app/code/Magento/CustomerImportExport/README.md
 create mode 100644 app/code/Magento/Dhl/README.md
 create mode 100644 app/code/Magento/Fedex/README.md
 rename dev/tests/integration/testsuite/Magento/Framework/View/_files/layout_directives_test/get_block_exception.xml => app/code/Magento/LayeredNavigation/view/frontend/page_layout/1column.xml (64%)
 create mode 100644 app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-left.xml
 create mode 100644 app/code/Magento/LayeredNavigation/view/frontend/page_layout/2columns-right.xml
 create mode 100644 app/code/Magento/LayeredNavigation/view/frontend/page_layout/3columns.xml
 create mode 100644 app/code/Magento/OfflinePayments/README.md
 create mode 100644 app/code/Magento/OfflineShipping/README.md
 create mode 100644 app/code/Magento/Ogone/README.md
 create mode 100644 app/code/Magento/PageCache/Model/Controller/Result/BuiltinPlugin.php
 create mode 100644 app/code/Magento/PayPalRecurringPayment/README.md
 create mode 100644 app/code/Magento/Payment/README.md
 create mode 100644 app/code/Magento/Paypal/README.md
 create mode 100644 app/code/Magento/ProductAlert/README.md
 create mode 100644 app/code/Magento/RecurringPayment/README.md
 delete mode 100644 app/code/Magento/Sales/view/frontend/templates/order/print.phtml
 create mode 100644 app/code/Magento/Sendfriend/README.md
 create mode 100644 app/code/Magento/Shipping/README.md
 create mode 100644 app/code/Magento/Theme/view/frontend/layout/print.xml
 create mode 100644 app/code/Magento/Theme/view/frontend/templates/html/print.phtml
 create mode 100644 app/code/Magento/Ups/README.md
 create mode 100644 app/code/Magento/Usps/README.md
 create mode 100644 app/code/Magento/Wishlist/README.md
 delete mode 100644 dev/tests/functional/lib/Mtf/Util/Generate/TestCase.php
 delete mode 100644 dev/tests/functional/lib/Mtf/Util/Generate/testcase.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php
 create mode 100644 dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest/test.csv
 create mode 100644 dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductOptionsAbsentInShoppingCart.php
 create mode 100644 dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertProductsAbsentInShoppingCart.php
 create mode 100644 dev/tests/functional/tests/app/Magento/Checkout/Test/etc/scenario.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermAbsentInGrid.php
 rename dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/{AssertTermsAbsentOnCheckout.php => AssertTermAbsentOnCheckout.php} (97%)
 rename dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/{AssertTermsInGrid.php => AssertTermInGrid.php} (93%)
 rename dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/{AssertTermsOnCheckout.php => AssertTermOnCheckout.php} (97%)
 create mode 100644 dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/AssertTermSuccessDeleteMessage.php
 rename dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/Constraint/{AssertTermsSuccessSaveMessage.php => AssertTermSuccessSaveMessage.php} (87%)
 create mode 100644 dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest.php
 create mode 100644 dev/tests/functional/tests/app/Magento/CheckoutAgreements/Test/TestCase/DeleteTermEntityTest/test.csv
 create mode 100644 dev/tests/functional/tests/app/Magento/Customer/Test/etc/scenario.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Form.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/GiftOptions.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
 rename app/code/Magento/Backend/Controller/Adminhtml/Noroute.php => dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.php (67%)
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Form.xml
 rename dev/tests/functional/{utils/generate/testcase.php => tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.php} (83%)
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/GiftOptions.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Block/Adminhtml/Order/View/Items/ItemProduct.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Constraint/AssertGiftMessageInBackendOrder.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Fixture/GiftMessage/Items.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderCreateIndex.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Page/Adminhtml/OrderView.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/Repository/GiftMessage.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CreateGiftMessageOnBackendTest/test.csv
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestStep/AddGiftMessageBackendStep.php
 create mode 100644 dev/tests/functional/tests/app/Magento/GiftMessage/Test/etc/scenario.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Page/Adminhtml/UrlRewriteIndex.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/User/Test/Block/Adminhtml/User/Edit/PageActions.php
 create mode 100644 dev/tests/functional/tests/app/Magento/User/Test/Constraint/AssertAccessTokensErrorRevokeMessage.php
 create mode 100644 dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest.php
 create mode 100644 dev/tests/functional/tests/app/Magento/User/Test/TestCase/RevokeAllAccessTokensForAdminWithoutTokensTest/test.csv
 create mode 100644 dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/UrlRewriteTest.php
 delete mode 100644 dev/tests/unit/testsuite/Magento/Backend/Model/ViewTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator/Initializer/QtyProcessorTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Controller/Result/ForwardTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Controller/Result/JSONTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RawTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Controller/Result/RedirectTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderFactoryTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/BuilderTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/BlockTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/ContainerTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Generator/UiComponentTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/GeneratorPoolTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/BlockTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/ContainerTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/FactoryTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/MoveTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/PoolTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/RemoveTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/Reader/UiComponentTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Layout/ScheduledStructure/HelperTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Page/BuilderTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/Generator/BodyTest.php
 rename dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/{GeneratorTest.php => Generator/HeadTest.php} (71%)
 delete mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/ReaderTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Page/ConfigTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Page/Layout/ReaderTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Result/LayoutTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/View/Result/PageFactoryTest.php
 rename lib/internal/Magento/Framework/Api/{ => Data}/AttributeInterface.php (96%)
 rename lib/internal/Magento/Framework/Api/{ => Data}/ExtensibleDataBuilderInterface.php (83%)
 rename lib/internal/Magento/Framework/Api/{ => Data}/ExtensibleDataInterface.php (88%)
 create mode 100644 lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php
 create mode 100644 lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php
 create mode 100644 lib/internal/Magento/Framework/Controller/AbstractResult.php
 create mode 100644 lib/internal/Magento/Framework/Controller/Result/Forward.php
 create mode 100644 lib/internal/Magento/Framework/Controller/Result/JSON.php
 create mode 100644 lib/internal/Magento/Framework/Controller/Result/Raw.php
 create mode 100644 lib/internal/Magento/Framework/Controller/Result/Redirect.php
 create mode 100644 lib/internal/Magento/Framework/Controller/ResultFactory.php
 create mode 100644 lib/internal/Magento/Framework/Controller/ResultInterface.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Builder.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/BuilderFactory.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/BuilderInterface.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Data/Structure.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Generator/Block.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Generator/Container.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Generator/Context.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Generator/UiComponent.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/GeneratorInterface.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/GeneratorPool.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Block.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Container.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Context.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Move.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Pool.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/Remove.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/Reader/UiComponent.php
 rename lib/internal/Magento/Framework/View/Layout/{Factory.php => ReaderFactory.php} (67%)
 create mode 100644 lib/internal/Magento/Framework/View/Layout/ReaderInterface.php
 create mode 100644 lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Builder.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Config/Generator/Body.php
 rename lib/internal/Magento/Framework/View/Page/Config/{Generator.php => Generator/Head.php} (60%)
 delete mode 100644 lib/internal/Magento/Framework/View/Page/Config/Reader.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Config/Reader/Head.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Config/Reader/Html.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Config/RendererFactory.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/ConfigFactory.php
 create mode 100644 lib/internal/Magento/Framework/View/Page/Layout/Reader.php
 create mode 100644 lib/internal/Magento/Framework/View/Result/LayoutFactory.php

diff --git a/CHANGELOG.md b/CHANGELOG.md
index da0af54df5b..95e44d1f609 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 5e226f33c31..e4b264fd749 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 1d70a00559f..89971c9e1d6 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 c92a48d379a..76afe98ae59 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 b75b9c4d5ea..30a1215ccbf 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 4a865d68354..3718bab0174 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 00000000000..380161d8b26
--- /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 e24e4b0d690..f44c2948e8c 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 05f4ef76f5f..ff065f4c67b 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 a2b25725805..e8b018e61d6 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 39d60fbfb87..c2901a437c5 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 381771d00cf..b6c3145dd73 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 720e2637d35..c1c769c0c09 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 eb016104a30..4b13b9865be 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 5271dc47cfe..a79c121b890 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 2dbaade6560..8f8d2980c7d 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 2360add53c7..f44cdcf051a 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 dda65860272..cc87cd5e5e2 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 8d1da09fc70..6e12fb648dc 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 8ef510942fc..3dec3c5a9cb 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 dc52d6b9e19..571553d886c 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 19e394bee80..15191b06c16 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 dded0cc2ace..573965e7c46 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 117534aec60..e2389e3efa1 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 ff2246e7712..208a66ae818 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 fc52886e3bb..8ba37d14968 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 033aa1bd346..178138edb19 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 e5a50b3497f..3cfa2b4bb13 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 3da4cce967f..5a92491c58e 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 410d88e3fad..0142ad7facd 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 54b10dd4f51..7bbd3aacf30 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 571a06326db..3e3a2efa3bb 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 bf7bee63c0a..851e5fc747e 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 4a2da63ff01..504ac6b435a 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 8a60d9f3114..33b410249a2 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 41e78bbc823..82b34bbe954 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 7483782b357..fb0b8023d46 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 ee7a23763e3..80bec85f132 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 8c0c58d2d7c..e455e44f9d0 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 1d5f788a1a4..303f2a0dc54 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 f6d54e520c9..a0db2f37937 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 1b5d451e51c..0e73fdc16ce 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 a0cffac4912..1d9355459ca 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 ed7a44aff92..a75066b293d 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 1dd2083c8e2..f8a647128a8 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 a2bdea502fd..8f0ea01c57c 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 611118991f2..64daee0b4b8 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 e434d543c56..319aa383099 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 121cbdf223b..50ced32ca22 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 97cb56eb785..05f2cbe41b0 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 6a70112da9e..f72724aff55 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 c96ba5ddf40..9e072cee54e 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 c44c9c102be..db1ee31139c 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 1416a260cd0..6295ade86f1 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 2e969699f46..af5b9b95e60 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 5995c756ec4..fc3c7b25b93 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 ee1c4e32430..5d62cb11af7 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 1fd7a689724..4cdaa0d1a22 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 9a99a2925e0..79f1824504f 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 be99235d5ef..3c9ce69f83d 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 1d0e0e9d720..bb846b7794e 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 43b5e9e33e1..a1d0ad76578 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 fa375b2df52..99e0157d237 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 f446c022850..b2f2998ad78 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 093fe0799be..63fd62ff33b 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 15e460caad4..582698885de 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 d091c7cf092..e5b285764c8 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 c379532f889..96ae959dce6 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 66401200364..fa8007ec432 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 444ae523473..057ce46e5bc 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 e6f2f64279a..9efad804133 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 25942e3ff38..b785ebc1ea8 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 640d0042d2a..047443123ed 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 843511c4cf6..e36eceb4148 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 61515a7dc1a..3a8e592362c 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 69498fb1847..4fc43775a04 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 4151a520c2e..36edb08211b 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 00000000000..4ef601f6d7f
--- /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 adc785fe25f..feea4cddbdf 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 00000000000..a56dae42673
--- /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 00000000000..1b78fb9bec6
--- /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 00000000000..586529b33f7
--- /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 00000000000..2ea91b153a9
--- /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 efb4d4cfa36..7fcea80adbc 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 77a925ea493..260504af39f 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 3f9472326c0..0e2c361d2ee 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 9eaa8698a7b..2a408b1c734 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 721dfac9347..072403869a6 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 b5d1a8f6c23..4237b69e97b 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 6553279dd24..cecbcd22da3 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 d100395eaaa..2a9f55ee4c3 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 647f7d49d75..edd298c4db3 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 f1ef18c0001..f4ab5f301b1 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 5178a0ed969..a303c668db9 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 83a1c645e76..12e42781412 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 d488a6b9b6f..4d341a11e88 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 25677d50a2a..c1ec0818d0f 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 e742f386a79..93dddcae8d2 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 ec5df7a0bef..9e127b99d3e 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 1c6f65c7583..4b2ffdb6e35 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 c0974bb0d58..1e1563be736 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 384a98560b8..2916133e107 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 88db1184bae..39dd2a895b9 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 26a37c355cf..ed654238431 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 66ffc279f9b..1f5e0dadc52 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 75dfecb85aa..ce714e9e8af 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 9247f50f0d5..4a895da3a8f 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 8f5754f8e07..f134ec476bc 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 75ce88120e7..d25918f13b0 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 3e66d54fab0..79c14b594e4 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 d0e94cec88d..99a9eadd3bb 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 e13942eeac5..b62dbfcc87e 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 368eaa90612..7c2c30a21d0 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 5a0e35e6594..4fa8918b6f1 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 20d9502c432..aa79ebcb911 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 9d52b379852..76f43768873 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 b7feb584e76..019d77d9521 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 744574b9303..c68bdc91903 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 744574b9303..c68bdc91903 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 ea161eb768a..e344fef4a59 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 707953eda0d..1af91200f17 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 707953eda0d..1af91200f17 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 00acf1b136a..6967e37de79 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 df0273413e3..5c9bb8cfbf8 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 17e6d8e1c1d..134b7b3dd8b 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 2ea0c9e26c5..5704e1868b8 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 c45d3a1bfe6..021d779958d 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 c14c78e1631..c46d35b59e6 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 852baa81048..a1486e82987 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 e5fd17e9a08..0481482c8b7 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 e1f9c6408d0..45504603452 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 bbf146b0a16..a9b7e44ac6c 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 c9ca45b4870..0cbc413d7e1 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 562d098a428..9da404a95fb 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 9b24e58d133..4bcd613ba07 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 a74b7956a15..5a087899233 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 9e77fa0f6cd..bf6be5d7d4b 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 9a62079c5d0..9163b227634 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 d40576349c4..d5bab5ada9b 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 32380969570..b6838d68147 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 70aa2dd64a5..187082d9edb 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 cd50ebb403d..947d7ec971d 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 6176e3417d4..b32fb83ff02 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 fcf55a14d64..09090d43ba3 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 528866f9e92..0ca71cbb3b0 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 8ce1ef4cb7c..8ce7230ed9f 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 2ad9953d90d..3bc90b5d700 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 5e3fc45b43d..e1210e5a4f2 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 e31b4b16776..0185b91bd91 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 995142f9691..ce84bd4e4db 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 fccbd63f7ad..7b43146151a 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 cfd9481f016..af2dc20ea7a 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 619402350c2..2131f17208a 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 9fa9242cc43..3158947360e 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 2b86c38f869..a71f2020e85 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 f1a823a1ea8..a961fa2791a 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 342bdba301b..e8ed2705c2d 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 7508103f431..ec8b5c80d1a 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 87b4e3f84cb..60c261bba3b 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 f9bfbb38821..5cce953b9be 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 9c0a81bba6b..aa15a2b6e36 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 59dcbb4211e..05c030cdf95 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 f0b55d088e5..5d13ece0283 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 46afd2d586f..8dffed42962 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 6f5e2e20a67..cd0cde6da69 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 d816d429a79..a4e5cea335e 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 7f6d8a0a128..a239186a321 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 35e97e14179..b9e3bda8e78 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 0f069b2c56e..bfd4c2440d4 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 5c2292e8201..3bf1a841480 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 fcea9b292c7..cc647bc158e 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 9d3ead8200f..f3958b92242 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 fcc0436c372..8c03dc92abc 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 30cb4fcd30c..433e21400c6 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 f2b6c49eebf..aff431dfb62 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 00000000000..0b9c48b3de8
--- /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 9588f8c19b5..68f3cf6823f 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 f474824abbc..f3602977ff0 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 07eedf8cc69..e058fd04d23 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 d77522c516b..214e5904abd 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 34a46d46aab..33250e26650 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 e2e1ee921ca..c90b43f9bff 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 1585f372958..83a3d14ff85 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 ad1b41d5848..fd0dec8f630 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 5ba8135f026..9bb8eb9405e 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 883d85470bb..dedcc149c95 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 7bd0bad0ab4..0b9008996ed 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 694f4dd33b3..1be31bef691 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 17bf2e992c3..6eb21e6a00d 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 e337e787c00..a1226c5d548 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 1873182c891..c84b5ef9537 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 018e204207f..6ad0498f19a 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 22aa08f5ea9..6a45f6d4fae 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 e9405132202..de8468958cf 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 e2f7345b4f7..eb9f9c16a48 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 bcd2261590d..83d4b4bb497 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 eee14a3d7da..cfedd163340 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 b94c6bdb341..4f55f19b8a9 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 6ec4165a4a3..444a7de6761 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 cf26ec6ee1c..3cbf38d9d67 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 5e33ba33473..0fb527babde 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 6b7fc6a31a8..c30cd59f508 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 3c1d34b33a1..eb5f45c3043 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 fb4b4a87572..bddcf3b5118 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 2c4327e6969..775fd451045 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 423a0b66946..7dbeb41ea8d 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 b83a9e076b9..cafe26ca2e5 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 4f2577a9d62..2458a9f6e70 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 db8557897d8..cabf5018f86 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 071db65a981..75246c21b58 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 1e8567fec76..7fa11aca9eb 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 58e9f6ab438..7911ab2354d 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 c5dbe1569d9..3bb7a9aaf63 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 ebcc99af3d5..0074e2fee31 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 48489b98fcd..4e75e13522b 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 884f386fe10..d5f4692587c 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 0d169fa91ed..32f278899c1 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 83457867851..a6fe7991178 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 967cc931b47..c3cff2d05f3 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 3351bb8577d..900489a154b 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 ef119e611cb..4f927a51e5c 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 0d79d137a5b..63fc24cf4eb 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 1c583863ab9..f1c16e7a12d 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 d814773bb34..2c64c613bc1 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 ba8d8efe36d..c077ff0c66f 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 cebf3b5340a..42f2fa30fae 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 61ffc81e66f..e9fe01219ea 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 b4c2478c5c9..bfa123880ff 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 8e160cf3746..6cf37ab74e9 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 b5773bd29a2..7376a50b0a6 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 e9ee09ceaa9..960c620f4bb 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 c15d2d0ceea..89194dacc1f 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 7279d6433d8..6f3bd031679 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 94e39a55434..b8d47aba4cb 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 6cb1d4a83ee..0a642eeccb5 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 098fe9b68d8..abe7a9d967f 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 a902d9089eb..8ce25768bf5 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 91dfa3bbae3..ca45436b239 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 3a4f710a23b..cdb585dcaff 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 316b3ea887b..55128756aad 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 aaaa6794acf..882d8a8721b 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 58783b06041..de8515b18ab 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 8d2896f586a..53734e971bb 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 21c795a64bd..523e983f913 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 64c427798ae..6d9ca2338e3 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 f58811f5c2f..b586be8f914 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 f58811f5c2f..b586be8f914 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 ca680bedef2..0d933a8a92a 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 204273f1ef5..772185ef9d2 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 706558a3cf1..ed654238431 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 719929e9864..4f9384b0b9e 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 c4a40f40abc..f21a4c286d1 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 e3f2fc81e04..7e0cc292e60 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 786d9d62f16..040ea449584 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 e53bfbc04bc..23ae477683a 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 985741c6774..53ebe6805b9 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 48619f2434f..226caa2128e 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 8aef6a6e4b9..2a64f5a7daf 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 94886c4777e..ea2ece0905a 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 b2ee4d908e2..be52aced3e2 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 5ad6d688019..7729036c6a4 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 00000000000..bf57349d274
--- /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 bbf9c0448b3..4a1b5a661c7 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 436680533d2..e4d8ae6f936 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 50a2ad72f26..cedbdbc01a9 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 7ebe66809de..c8062a07f9e 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 40889d94057..02e4ecc4ff3 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 79de5bd79b6..e68e11d2e58 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 7eb2c87066d..9230125c3be 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 5539ac7e891..e7f21fa4506 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 a25434f2798..655056cbbde 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 55dd53007de..279e39d6c48 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 97e6604237e..0e75c7cda59 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 c3226e3cb96..4b29ff64c59 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 0ba5c0450a3..995be651b9f 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 9561d10175a..79de720e844 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 31345ce122f..13d474969bd 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 f03975c8561..5f87524ef2c 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 836601c0fe4..d16fd733c3b 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 00000000000..f0b3f3f7bd2
--- /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 259048544ab..fed59975419 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 dd4c09f2ad6..1ffc773a385 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 29f54a161fe..0a180d69a8d 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 28c853b56d8..78c4473cfd8 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 2d23bfc62c3..bb9029d85c7 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 8ea8d0eec63..7f6a9f01c5f 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 3d41f0ec322..ffb9a220da5 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 f387ff7e8c1..3935f4e2557 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 42005283eef..9e041a44031 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 5f1c4458e09..c038af054af 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 3414da599bd..89afa5694f6 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 3414da599bd..89afa5694f6 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 0bcfbcb229a..6e874414fd3 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 72cf09370b8..f4999a2ed34 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 db64978132a..083c782c598 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 a94778300f4..c668d5feb39 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 38b868258bd..c49d416a9a9 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 099528659ec..b3cf9320a5e 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 c294cb1f9ac..f80131f63ad 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 d71cadfb6dd..9f6fd9aed1f 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 d709bb50021..561a2f5c52e 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 ef46975f196..936a2a43768 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 d8583c588f8..a1c2e9d6380 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 98b5265bd34..e205c9a2cb8 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 7a15a498ac9..4f17555caa0 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 9a4fbdd92c1..90c0a5afc4d 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 d6f57db2366..21fcc1ef1ae 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 8b0f31e2dba..58ac39ba67e 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 61fac6d51e2..0b5c3c5d6bc 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 20c2fce40ce..5f4431eb6ab 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 f8ac576a95d..c5d6303e133 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 921322bda8b..fc699375f82 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 2b82e637e57..dfd2b2d3a0a 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 4e0eef6b396..298a2a781a6 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 e2c1fea67e0..c1972b724c3 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 e2c1fea67e0..c1972b724c3 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 7d2f60a4c80..2f4022b2efc 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 525f8e92305..2b5923546f9 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 d021717c894..62fdca41185 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 957342f7738..91b64bb3b15 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 e9e74c3dd24..019f014b897 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 29bb9e9f047..2e640c408f3 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 618ce5c81b9..4197a1f3114 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 bf3d3473647..363c7bb3a32 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 56397a6e711..a9d80999647 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 369394cdf3c..6b519ec3b21 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 d3dcb3de1e8..274227dfd4a 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 d51e83b6d36..11e1bc28e93 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 07909c50537..305ccbcf8db 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 bede1914e15..004f272b1c0 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 ddfc2668cb3..354521e442c 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 706558a3cf1..ed654238431 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 6c63a63f593..fd023b12220 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 2caf5e96352..43d2b8fd4b2 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 b536fcfea12..fe5dafeb368 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 447b9bc1dea..b16bdb2b774 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 2ceb7fecedb..52df252054d 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 45c110a4cfb..975ca7566f2 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 8e9e19b1cd5..296c6d1fcc4 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 9936ee8bc20..663b596b6de 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 339aa7d30c3..cb0a0d82ac6 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 8e9e19b1cd5..296c6d1fcc4 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 3de64f391f5..49baea81cef 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 fadab3f38eb..e1123470b78 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 8e9e19b1cd5..296c6d1fcc4 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 84348b125a8..6262dac74ba 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 754470b8da2..50f52bcd041 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 cbbcbabe82f..13366527331 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 eb385afb160..a6759fc3b1c 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 11fba2f0873..38fba8d1aee 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 93c08d22d69..8495841bb87 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 64a6af6adc0..143a51fb6f9 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 a8f1e562d78..781e2924388 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 cbb006b9c3e..4e9915d13e5 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 695029dc137..e145c2943ff 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 ef5a8494570..b19ce4ecde7 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 53d46e89796..cbc749a5bf0 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 953c93c3365..9d232c2af2a 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 b29d8f31f33..fb8f5f51207 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 00000000000..cff1135d78b
--- /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 00000000000..11b320e98b0
--- /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 00000000000..92fbea73856
--- /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 00000000000..f7a1e069815
--- /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 00000000000..c7c2448567f
--- /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 00000000000..cab779b8f69
--- /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 00000000000..5116c7a1a42
--- /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 00000000000..c73da297a2b
--- /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 00000000000..76956a33f39
--- /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 00000000000..68d6a863275
--- /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 00000000000..702c2bea45b
--- /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 00000000000..901776333ba
--- /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 00000000000..61b28e75ef7
--- /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 00000000000..ffcb8f27596
--- /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 00000000000..f8895e8d762
--- /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 00000000000..a8a36ac8bab
--- /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 00000000000..a89bd29c2fb
--- /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 00000000000..63197ef988b
--- /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 03c3636ed81..89289194a1d 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 195496d8d87..3fad639bdca 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 00000000000..f3de8700173
--- /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 52aa6be08a9..d3d73a01734 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 98b8e7034d8..636c9878107 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 94c4dc96e2d..b79356d0f08 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 4308398117b..854d147619a 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 5e440b2ebab..8d19b1624d7 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 a10fef9f7f1..547edb9e6af 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 1583c586353..5145af4f967 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 3fbd053f887..94db943f0a8 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 49482d28ca8..556ec156026 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 4bf5a631e73..12e1460a659 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 7cec5d48ca8..8e361bb4fea 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 fd0c4a6d112..8539dd455bf 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 233afffab26..6e5bb7e3fc8 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 8c7a3d96ec8..242afb23960 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 e101de356d8..3271f5481d5 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 3ad7210093c..7332bd8e83e 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 58fc121782d..5f6ec4c13a8 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 29a96a4d6d6..d5afa6295e3 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 c9159675d91..8d80fc53f73 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 0fcd958c95b..08fa79ffa2b 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 00000000000..88c21e1e6fd
--- /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 364a34ece0f..4ed72ac9b8b 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 3d849759843..2610f09e6fc 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 3d849759843..2610f09e6fc 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 57ca2d8cefb..891ba65fcdf 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 393c9acaffa..8183ac314b0 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 437d8353cc4..7bd931ef045 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 ad4e7f42bde..10ad40fbd35 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 ec577a515dc..5c683704e0e 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 bd87be2c15b..ba73337b7a0 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 00000000000..dd890e936dc
--- /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 f08d5176930..38c788bfcc1 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 90f5c107c09..eb97b0d4378 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 aea7205e04a..380da5dd9d4 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 be2ab99cc77..cf0b3c8a8e2 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 bb5bd6ce120..8297bba95ef 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 bb5bd6ce120..8297bba95ef 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 30f822d9f24..0d2cb779b49 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 bb5bd6ce120..8297bba95ef 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 80f9ddfa3d6..590beebe9ba 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 2487c0f8cdb..f04daedbce8 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 2487c0f8cdb..f04daedbce8 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 6a6a9cca4ac..ff64e501984 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 6111b9957b1..09568a63da5 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 6111b9957b1..09568a63da5 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 ba09092de3f..4805a2c41d4 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 8e19053b5e2..946f3cad464 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 6ad0d48d932..7dc3d3f80dc 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 71d0f188b85..41f332356e5 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 d5b93ff7bf6..cfc6bde7d6c 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 602e31c2b44..d24c1538f35 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 d37c5a93044..ea24b2c6507 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 a2a7cbb283d..e3a036c3123 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 1db5ed471e3..b856127c048 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 8d516c4760e..65959aede51 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 efa0545fdd8..b5664e26a04 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 28fba6b3cb0..4d03c0bd2aa 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 755331cb482..42f41ec55e5 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 16547044fa5..8293fbc5928 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 61db3d7f392..6da7463942a 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 e64824cb739..a10ea283679 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 c6f1071216d..7ef6535ed3f 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 60166ac7b2b..9859f2cc6d4 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 2a9418920e1..578e57389ef 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 02bb06e747a..26ed8b06aec 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 62dfb148d2d..a9c5acb82c5 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 c097c3515f0..8fb5221e91a 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 fc18f0c56c0..71f7cb1974b 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 46b9e5481a2..db0b497d773 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 82a538e9635..9a831497ce6 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 1549a791c0b..ba538dd16ef 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 12368d58fa2..951f121eba7 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 8107c1e00de..3de9d1e902a 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 fe3c8049cd5..201215c44cd 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 538a74d73bb..e17abff0071 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 00000000000..ae9ba8e2960
--- /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 fecb102ae3b..360d368ae32 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 2f11b383ee6..d656097e3ad 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 f81900e3987..c8ecc390c16 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 f81900e3987..c8ecc390c16 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 f81900e3987..c8ecc390c16 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 84c3c06ad63..78863c4502d 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 b0991ae3b4a..750f469cb8b 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 771022f1eff..ede28fd0d8b 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 a3c047e0519..1602b53b1f1 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 8f228b649f3..9ceb77e7247 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 2b1c7d83207..0f597bfd453 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 21b5bc5e38c..55c897a76e0 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 bb6873e23ad..7dd544c19e8 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 91a83d5bac4..8d527a6b6b3 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 9167cac8098..f8499d20247 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 9a0c00b8d54..a91f107dfab 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 b099630b9d5..5412013c680 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 a0600a8c319..c5e4c760d1e 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 a7e7f571bc7..b2cb89290a6 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 281d1e56d2f..d0c6d06d9dc 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 7154d2ab1e1..84cfe255c75 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 d30281c7729..bffb6804480 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 09b353c8326..572384ad0c9 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 de004287bbd..32f3a8b0c2f 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 e26f78d9cd0..af4697006d5 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 d7eb6329e38..389e5906882 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 d7f5b87fced..4d08fc48877 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 0d378f8b19a..3ec627616ff 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 0d378f8b19a..3ec627616ff 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 40c89c4e475..86c9d0d6dc6 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 0d378f8b19a..3ec627616ff 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 0d378f8b19a..3ec627616ff 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 5839c6fae23..4ceb8d80d1c 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 0d378f8b19a..3ec627616ff 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 682cdc69cbe..dcbed312f8d 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 6096237b090..7fb78afd3ae 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 506bf1718da..12da5e9a78b 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 e28ab0ee9be..c1ce2219f26 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 f86ce5c6a10..18df2b5f849 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 8cc71488422..d664b2bf2a9 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 11fccaa4109..a0b1d8caef9 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 46c53cfc130..050eefe8bf1 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 675f206e4f3..edea824faa3 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 e697612034c..fb453a2fbce 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 c28802936da..512e144ef34 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 e697612034c..fb453a2fbce 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 2da4237857c..7a748b429aa 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 6763f97aa42..57bd922c5cd 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 9b1db40e5ef..b536fb121a7 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 fdbef13de24..8df896026a0 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 c1ded611880..f43d36539dc 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 126b9f51427..a8a10f5e6d9 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 0905015002e..29409c1ade1 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 d07c5087acd..1adae7c2e95 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 da4b7e44fac..ffca0141a2e 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 464c563ece8..3eb7a4e7608 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 a7011031a7b..e8570cbba88 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 114704ab234..a5b2f3d0159 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 14d756faa8b..8ea495539b1 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 68903158c40..1e7a486d77a 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 926dc03ac01..efbc5c38998 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 789941b22da..569bfd08bf5 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 68c297e7be7..ce0e0cb0489 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 3a54525dece..0a3ed052821 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 16623b926c1..c0346681df3 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 310e194d57c..e429758f03b 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 82ffd3d2525..272ebea7b66 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 96aa757a73d..ffd074ea7b3 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 54f96795960..22426946b52 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 eb3114fb730..e0f2da887ce 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 f663cb76215..4ea17846df3 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 410e4c2b287..2f6c8e2219f 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 545e86586b9..f2b522c3b26 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 706558a3cf1..ed654238431 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 a4c9f762b65..cee0858beff 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 f755468c9d9..652df27893c 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 8a61895abf5..ed6a06f4412 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 84492d68410..bc17246516a 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 00000000000..1357dca043e
--- /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 00000000000..60523798c98
--- /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 00000000000..41ac38458e9
--- /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 dd51872c27b..c84df82df44 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 4af247fe696..fbe6fa112cc 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 3c464b5b86d..ba54de59490 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 393cf94bcb9..20d701c86dc 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 412fd66c249..666392ad55e 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 42d5c75c23c..d0394612472 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 fb3f982b148..38b5bcbf3af 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 2a3ed593844..600f2ab2eb2 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 b32eb2095e5..e600bbd9f31 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 7a9b18310eb..ecbd0a3b84a 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 7a9b18310eb..ecbd0a3b84a 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 6e217b14c0b..7fed1e1a490 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 7a9b18310eb..ecbd0a3b84a 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 7a9b18310eb..ecbd0a3b84a 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 5dc7606b9e4..22a46764362 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 387ebce9dff..7005448fc08 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 2d12ad2c42d..0e009c250f7 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 875a8e0f5d4..46e14f54c10 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 c5bcdcee81f..d9a47e655d3 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 c5bcdcee81f..d9a47e655d3 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 c5bcdcee81f..d9a47e655d3 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 2afe71ca06b..9fe7e3d1c89 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 03ae94aa6ec..c2fd5133459 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 18c7d65ef50..e8a3480cf51 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 d8187323bdd..2cfbd16f255 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 7be0dc65ed0..7656d86bc35 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 6b4e23f0fb9..b027e6d01f8 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 1acdd242f1f..99f806da4c3 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 e8aa583a078..94ad8ddd917 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 b3471c835c5..4b66aaeec4a 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 479dadbb5b2..3306df8d9ed 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 c8b2aab23f1..d37a985de67 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 c8758d5e7fe..ce46b58c92a 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 62246576f0e..5e02b419d08 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 37a53f1a41b..47196c16860 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 ffb18b54235..e21a4468041 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 a214c13248a..f7f42ac062b 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 766b3c130db..e6f33e72815 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 de3b3eefb5b..81708f4c40c 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 a794983aa28..2aea13745e9 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 4a0c41bae0b..e0a8bbe6a55 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 25a38acf6b4..e0b37533d96 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 49f433cf6e5..4cfcacd3220 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 32f81f575cc..fc03ee38027 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 91cd02eaba6..33f0cdcbb30 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 40c0719855c..235afc7eb21 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 2848a297bff..9bfc79441e8 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 a1e2c946722..3a0481969fd 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 54aacfec6e1..1c90cb174f6 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 f3788862ccd..d0a101eabf9 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 1e069ffb69e..92c69ce2bbd 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 2682a0d9d44..f11023b9d44 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 336a9fd0439..0b7df028d2b 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 336a9fd0439..0b7df028d2b 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 0dc3e954748..d1f92978c8f 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 b3f1a249f4b..ea25023bc3f 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 1e069ffb69e..92c69ce2bbd 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 4d6c92e79fa..3ce8d1de58c 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 445bc811daa..c353dafb57f 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 1a7095f9563..4d6998dec8b 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 00000000000..2fe56f4276e
--- /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 1296d8eb4db..3c2931a9f97 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 00000000000..561ad8692c2
--- /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 7e76bd9cad1..495d293b7df 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 00000000000..8bfa7fde90c
--- /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 4c0e0a5e85f..c7f1e983301 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 c39d0a8e406..dedc4853d54 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 415c897605f..2f7d28356d3 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 3a09798a9c0..f060728dc00 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 bb02335b51a..e3f07c682e3 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 65997321716..256eae35f39 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 624b9e1e3d9..b3a89552f1d 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 00000000000..6f119559ad6
--- /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 a24e27e9127..b1f8f62e44d 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 a7436ff4386..173f05e07d6 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 c2ea16a521e..82ac58baf5e 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 133002c70d0..7aa74bac71d 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 84a4ff51112..58d15921350 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 00000000000..554fb0f97c2
--- /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 469fa538aaf..79620286d96 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 c7b83e1c581..428ed3ff8db 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 f4e6db4ef45..e595b00ef89 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 00000000000..a016bead043
--- /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 21703f3a7c3..9b965355aa3 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 ac25bb48acd..3f2bad1af62 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 00000000000..8f4453ae0a0
--- /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 d729bdac674..09d9c8a74bf 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 8d942d2b3fa..1e67a91abfa 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 0620b86fccc..f099c7695dd 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 1dd347c3286..d535e0510ed 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 607c49ada29..0be09ad483f 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 0148681b509..2079cfc2063 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 d71070eeba3..b3fead16a31 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 40e720a397e..4b960019496 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 e85dd9a605d..17401541192 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 15bfad81b1e..ec394af3c26 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 8aa8424e65f..c0a2a5dbeb6 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 9f0f2c774d4..3d938b0eaae 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 235cb3df777..3877edf3894 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 2edb5c16248..33207e01f55 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 a31cd9369a3..2fbf57841ad 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 902cf4d8ba5..daae7dfc6a0 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 d25fa81b097..baa91c2b9a3 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 cd1279e90e1..c5bde2b68d4 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 cb4e83e1828..70c1d7f4abd 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 9bae2df213f..1c10927ef28 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 c6fe52b7e8d..96c1392c7fa 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 2d28f474647..a846af928af 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 c00d7821a1b..c3ab69a918a 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 0197df7ef99..d1f4c5b93e1 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 c89a294d03c..6ef9a38f66d 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 c89a294d03c..6ef9a38f66d 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 00000000000..7d5f51e8699
--- /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 6fcaf9d53f0..6f7242980e3 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 ed49a6f388f..72caa3c3e5d 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 def4ed53a11..f012fad6e8b 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 00000000000..10a9fb3883a
--- /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 8b43ed52901..9b1c2893c7c 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 6d6e11bfe25..87b62e503c4 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 d5df221fc1d..787c7bcecae 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 ced7a8926d2..a87b96842c9 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 9037e2751a0..e58dc9fa796 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 a9265e0f550..e5418e0e17e 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 987e9bca14e..7185cf8736c 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 f9a20db4186..17cf9a35d58 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 e7f6dcc1014..c76dd86a8ff 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 55975d5e8eb..14a53443190 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 4b69a859b4d..5575c013b04 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 6d2199a981f..5b6725a76b3 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 f2187e9784f..3ca312b08e5 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 3f4f88a41fb..05576ea8e8b 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 b9b1f1eec7a..cca5895ac9f 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 b9b1f1eec7a..cca5895ac9f 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 ca9c14e82de..1e2322f2c68 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 e90d4cf4d31..4712b7d6c24 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 dc5c3300bba..ff772442808 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 7a6615b043e..3616c7d4016 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 aa603eb031f..395905174c3 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 aa603eb031f..395905174c3 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 3f1505d423f..b51443e08bf 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 3f1505d423f..b51443e08bf 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 6959239f251..19c4cc08eb1 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 6959239f251..19c4cc08eb1 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 305ee1396cc..0390d6de7a5 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 c5026a3b0a7..9678f780164 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 4e82fd2f2e6..af4b2edd2b6 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 a89a6863c42..24319e03833 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 239da5a69d5..2f164a7eb17 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 6b356004ad8..2db658f6f6a 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 9ead95eb9f0..f43e643da40 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 0016d74d32a..97f8d93df61 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 e754cd34339..7e6d04453c0 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 e754cd34339..7e6d04453c0 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 4be8f7f0e19..7385f2a0978 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 0070f3f8501..2c96bbf8aae 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 701fccd6e60..29394c1db77 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 6ac75014803..596d776b59e 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 7d2e2139325..6d31359c52d 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 55e31436ba5..359470fec3f 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 a3afdbd8d36..d35bef83ed7 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 d92fd1ebd40..45d8e41a116 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 d92fd1ebd40..45d8e41a116 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 9ca4c5771fa..2176cc5fde5 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 9ca4c5771fa..2176cc5fde5 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 9b51a73f9e5..14cc3632507 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 0522db93b7b..d9bf82e0bc5 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 1f3b1eabc00..57755482c9f 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 da801e281e3..61adf42b807 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 3e96be9df1d..bf299aad46a 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 179d9dc85e4..6438705b001 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 8d97f26cbe3..61dff4e1a86 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 1d55b720b2d..0eeeb4f5cda 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 bb63b5cf935..bc36ce2d860 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 e7feefe8c11..e8ba689e639 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 c6c3bb35954..d4e27af0318 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 7b6b8ddf389..d739939475b 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 2aa1f60d49f..a562b74c7bd 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 706558a3cf1..ed654238431 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 2d9694c18af..f68102891f3 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 09af3ad5985..25dc1cf93be 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 64d8b592d43..c720f19c152 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 340c8d0b9c6..d2fb79c92bd 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 6fc27111000..e29822002e0 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 afdabd0db88..1ae8c07d51b 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 4614418075f..2c897fe969a 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 fe009caa541..a303c668db9 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 31f990a2b6f..b8a37163bf7 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 895bc1772a2..2c5cd6507a8 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 cf21794e598..84d57be5441 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 14582a24328..e66b3dd75b4 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 c712ef6af7e..0a094e7361b 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 e17c26ffaad..05fc6378b38 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 7004ac73eea..bdad11bdc91 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 e5692d1b512..f7adef9cabd 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 85c286aa745..af712bcaea7 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 41d899ed83a..d6ca9b93919 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 23905fac26f..50ab3ff226b 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 34ba3cb190d..cf505b7d1c7 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 fd04231a16d..ea26f97b4d5 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 f6540bcc6cf..77b9213ab17 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 45b2bda318a..66415012a2a 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 448c87f7b46..952040ed37c 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 4b7e8fb468f..d4c71df4b49 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 15f85670e18..6f2dc11759e 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 085ad674d94..85520df4880 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 a19be6098fb..7d7792f0ecb 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 321b5a7c7c5..c5a59b68d05 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 671c8364935..bd75dc0eeff 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 3d99d510c79..45050cb764e 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 d5d9b9e364c..a4b8fec4533 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 e3625aa7fa6..c67b52a7cc2 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 b16c4eefc6c..047b5dd3cf3 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 a13bc1fea58..bd064e27f46 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 52b038d41a6..62a2d1a82e9 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 97df1557a77..fabc71b4a13 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 97df1557a77..fabc71b4a13 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 a859535ddc5..5b82021157b 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 6f113e37780..748004c9e53 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 ebe4a2fa39b..01c7e2aa2c2 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 d20e5722abb..4318f0a5c1c 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 d20e5722abb..4318f0a5c1c 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 f5c421be0bc..9b73ec5c043 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 fa36747ffef..51cdeadc660 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 fa958be9975..2f5aa3d2b88 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 ab43361e26a..82e6f016f79 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 8d2a90ae811..dcf94dd01aa 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 39799b73f23..6ab00146081 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 3d0966da8ca..f28ce29c829 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 052c3124138..8c850f240c7 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 8691e19bcbd..bdf6e8d3d25 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 2e7b5d12041..077027b12ec 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 d3706597096..b388f85cb76 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 3a169219bec..80fea566a3c 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 fa9415e9ba2..26cc0ed667f 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 48b5bd116bf..21e4b0e635b 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 23cf50374db..526660a9e49 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 f700432cf48..533e7e84958 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 10c9e163adf..8ddaaac7367 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 589e42fb30a..630dde38d84 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 8fe6191774e..908d7bb5a15 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 f77db323beb..b1630e321fd 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 a6a2e909259..98359af1894 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 c255ffb0a46..d8af6bbcbb0 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 21ef9600692..e044147eca1 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 932bfc33cfb..c2ba37cc790 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 24e5bebccc0..47f4178b4a3 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 fee756b231d..f14e96ebad9 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 1c1a178d71a..78d18f24fee 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 d1bc84add55..22d27aa2a90 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 9010c882f6f..4a34587baa0 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 f0d16c0c115..5ef5cfd00e6 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 a1653f38fcb..f49a1da37bd 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 44dd904d98c..a8b547b1c0b 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 cfc91568db9..c4ba095221e 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 f17a700c950..1bd7fa8b4c2 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 9cf3e6b6cfb..6dfdeb349c8 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 794ad82076e..18b0afe8677 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 6bcba10263b..0777f02f490 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 2d23bfc62c3..bb9029d85c7 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 63cf82fa781..6d20f869f64 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 63cf82fa781..6d20f869f64 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 a8a79e04ab6..81fb7e3454a 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 d28eb1d0057..9eaa3434b78 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 76c474b9f05..ef8d4249de8 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 c2224749b33..5e8511dcc9e 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 10017a11c29..233709f8dfb 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 fd84471a5ec..0b6a51f81a3 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 3ab8c039d09..11d241b95a2 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 25eafab7353..7a0d33bf07b 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 086bc8ec9a2..b425a06f9f2 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 c617a35b6bb..0e457b706e2 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 cea5cfed4f3..05466624c13 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 48a1b528860..74be1b2b175 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 bc93126cf51..e968f97eee4 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 d6530b05a73..05d6e9c847c 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 e216116caaa..821d9e83080 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 0047f983c8f..3f8eaeb12e7 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 049b6459166..3f8eaeb12e7 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 e2c0f329ecb..5c183a091bd 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 868a4917663..928742cf788 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 f795b20fdc1..a0dd92c6109 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 ba50a4c051c..3bde53abca2 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 8d34e2c4b2a..1eb8e7782e5 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 7bce3e58008..2a747251c15 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 14910fda331..12671771f99 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 8c8566c3bc6..7d704ae8fd7 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 433f4781ee3..41d164460e9 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 24d02124f74..b1d318ed0f9 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 53aae5949a9..440ada6b871 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 f74e85bd88c..a3d4e2ca703 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 36acc11f473..bebd778c83a 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 6fe9b9cd7ca..48b00376545 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 c745088e18e..aec558aef80 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 d44b6636845..a025e61fe92 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 ae237018830..50116d4410e 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 fca3a41a3b2..e7bdd77635d 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 6441cb728ca..fb8b88a33df 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 dedf34fc310..6a0bbcf0ac3 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 72589c5d5b8..da11c3efaea 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 4c27d4f5488..74ca4d7570e 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 08863cf3164..556a5a7b168 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 522604804b0..bb35180e608 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 0d8079a93af..38946f3631d 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 41068ee3a22..cf828171159 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 0f4111acc21..b18e97581b5 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 e0ddc255215..9a27810729c 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 9fdd536ee84..4f20c7899f2 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 2e9fe5933cb..26d37414ca8 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 b94f3e87cd0..069774210ab 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 2a8bf18e2b3..d35ae2d57d6 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 44e920981a1..5ad4d941f6e 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 0505510fc26..48901eebdc4 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 d75db1f7668..6dd8f63546d 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 0cdfbe42221..e634a64b0d4 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 98f6b087a58..baa4be5378f 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 d2937594cd4..cc42e4aa370 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 05dfa6fc45c..308d77a9f75 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 0afd5aad70a..2ee102cd581 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 3600977f83f..d1b8cf420cd 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 93973115fe6..52767bf1270 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 2a29812528c..ad255a1c86d 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 9c80cd6b082..b24d70d7e7a 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 db93ead85e7..56f2e61ec2c 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 402d04b0a5c..94b82fb33b4 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 34511268ffc..5c6bda69699 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 1b8d243dab6..967ffb5619c 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 1dea95386fc..bf384f81864 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 26f95697dec..b530f7d870a 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 8508a406e96..56d0d3af2c2 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 0c2d141bfec..87b52721795 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 d12df748933..75a7a3424c7 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 3ac897b4790..77ead97e01f 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 ea69f6635dd..d6019617745 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 fa70c0b03dc..1e2d473bde2 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 49e3618ecbf..6e4ff08b9c3 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 b3e708bf8b8..dabb1d4f188 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 0ca19d4cd61..8fbaac1ba6e 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 1d2073d39ba..00000000000
--- 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 58cdda0f2c4..4e14644b213 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 d9e7a05e76b..246bc7bac1c 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 67091ed4ca3..2077d1f23d9 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 caf54b3b9b3..5d63deba6f7 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 a5f1ceecc0c..24d5c7383de 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 096ef21e0f7..258d434a79e 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 45407067608..8d6d832cd61 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 6cce4de8ff6..a53b5480102 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 5eb66a37ccb..cfd5e13cc78 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 3033f1a3e8c..5501d0c01d9 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 8250fb33bdd..dfbbc2e9c12 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 1bec9443a92..c730da3c342 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 a6b53192d12..dbde8f5b8a6 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 b9e00b949ed..9cfc7f0bc4b 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 0575a8e562f..b705d45a31f 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 8cc62a2f486..5d1438ae841 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 2bbad0862f7..51805186462 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 c155cfc008a..e3269ead358 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 9024dfecb5f..033b43977dd 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 11e932b3057..44ddd2a0663 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 e96ecb33145..2c8567216a5 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 f9517381f4c..cb6028fac9f 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 2c3a12bd32e..a69943725c9 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 bcb5f810022..e9966c272a7 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 00000000000..3de38fe9f9d
--- /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 d2026c84fdd..ab35dfe1ffa 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 a1f2f2324a0..1f97139ef37 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 bd22549f640..96fd59b63ed 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 0e41a03e6d1..b8e4e9f6f2a 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 00000000000..54dd5f64244
--- /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 6eff5fb3b84..ba8d4194e89 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 312847e37d4..e1d9cb0adc5 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 f2bed590593..897935b5dea 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 e572a752c1a..bb5ced5d63a 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 f2bed590593..897935b5dea 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 1b2a64ad2bc..131da748a6b 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 29dd4d49b89..b6771b0a260 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 1aee36dd4b3..b16c9b1af4a 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 8539818ed1c..f45f0f50df3 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 8f3e80e20c6..eb788f57884 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 8539818ed1c..f45f0f50df3 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 8539818ed1c..f45f0f50df3 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 e7762b5c6c1..f832f1a40b0 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 8539818ed1c..f45f0f50df3 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 ab48dd503e1..0aec0b5a38c 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 55f3d5187a9..667d4c51303 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 4e1964180e6..d755b37e5c7 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 78bdfbe9be6..e9d89e4571e 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 7ecc4770361..9db24d23096 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 44b387f28b5..6320eec7a0c 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 8f6f8555cc8..9f958460404 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 a9a392271ae..3a9e2b96925 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 5a9e2449333..33700d0592a 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 d1ec4f8766c..dcc259ffc1e 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 039a27d116e..4d22b08ee51 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 d6f150987da..be09af8f3df 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 74cd0e51e1d..15d6fa8ed66 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 666f78f949f..4202a022cb1 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 05eaf013f6c..17cf1de91b5 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 5315724aafc..ce7e1f2c1bd 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 5315724aafc..ce7e1f2c1bd 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 56547dc01fe..976d97772d5 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 94671b90120..09d7510624a 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 73d6a4497e7..0c23aaf3b74 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 35e1018a5cb..f1ffaede81c 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 07942c49608..c3209e86922 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 38d5aa616ab..ca31379925e 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 159b6dd6b0f..5ec5999a94b 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 477f050ae49..12c3aa55744 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 842e7abdd64..af6d08444b2 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 fce8c2b4b12..5dc24c2a5c3 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 989bb8e135f..df6bab9d93d 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 4869de1a5cd..47930195b40 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 8829604ec41..2379f05f9e4 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 0987ad228aa..d36b856dbc8 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 08c4a580d3e..d9480153a73 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 8f64fc588fe..9bf3765ea2d 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 39efd395be0..2b96742c35f 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 46eabdb3f21..e8f65711508 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 951085c463e..b42eb6e739e 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 28eedaa4f0b..da642803bd2 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 036309d1fdf..ec9999cd068 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 91b513079c5..8b65b502cb8 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 71fa3b8e111..05e9081194f 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 00000000000..6a549e3c239
--- /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 85171d2ccfe..ee47a3ae122 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 00000000000..48b92c20b98
--- /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 3b75c0d8e27..d1b8ab8ea65 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 1e674987613..45d8eceb726 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 f8c0a0b4a0e..48ba0b2bda1 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 00000000000..ddf125ea66b
--- /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 bb6c52f7e06..04b84901b25 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 f9051278765..f355658ea73 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 3946a9f2ae4..4e321ab1b9b 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 d0f2e2a7aae..b10a6d56be0 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 e56f90a71f9..a5af18ba552 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 dae8d36b33b..05f27019ce2 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 0e1a4cf3dc1..5738bc3b77b 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 c74257d7024..f1fd39f1945 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 e60f6cbf20d..abae60b48c1 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 a81d29d2925..cc01d4f9f3b 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 19c272a3dfa..42e9c359866 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 48dd3f8d589..726d44ce8ee 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 00000000000..03d806c0357
--- /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 4720de63b18..fc50c5cb50e 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 ffa2c62e932..367bb8e83c5 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 6e59823cdbd..d687f7fa50d 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 e71a9a49f17..ea2581b3629 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 33c56024594..6189543202e 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 a3f63e1b46d..8cd768b4e04 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 f8c462b1ae7..ec7e00c8465 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 2d875c271c7..083480b7645 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 77e4d7ee441..8c696bf9f40 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 be5df570d77..e6ce157d029 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 c50b2936c42..cbec764b218 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 aed850690ac..25641b8a476 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 b3c99277f57..a1bd6b76c1f 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 b3c99277f57..a1bd6b76c1f 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 97acf7958cc..9092d5c2e19 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 97acf7958cc..9092d5c2e19 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 0b2188e8d18..8aecf7a9cfa 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 d49416bc9a0..63de4dedeb0 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 f84aa036b7f..8d044f31752 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 6682489a824..447d998a946 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 89a16579152..0c5be0fbba3 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 706558a3cf1..ed654238431 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 2e545b4e555..f5ba6bb9b88 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 d49416bc9a0..63de4dedeb0 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 d49416bc9a0..63de4dedeb0 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 d49416bc9a0..63de4dedeb0 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 28e0e3194bf..1e27c351be7 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 d49416bc9a0..63de4dedeb0 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 b3c99277f57..a1bd6b76c1f 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 97acf7958cc..9092d5c2e19 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 d49416bc9a0..63de4dedeb0 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 ee31ea45b45..fba71ba0cca 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 572b4243ffa..5500da7140f 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 d48208fa3ce..34b566a5120 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 5de2bdecf05..49180b76f7a 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 706558a3cf1..ed654238431 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 706558a3cf1..ed654238431 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 00000000000..1caed125814
--- /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 1e26e1d4793..a244ab1d6fc 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 7c44d55928c..de8723cc5f9 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 7c44d55928c..de8723cc5f9 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 027bed8e32a..ba26f1e04f5 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 7fe65f769c3..6f283ffc62a 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 fe9b968ad26..bf68244e784 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 a76ecbda808..f275f2e67b0 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 5a3eee9f9c7..34a5af88786 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 1975908eee6..6bacd08897f 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 67e061278df..d9febb501bf 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 706558a3cf1..ed654238431 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 5d029adfffc..ae04d9cf74a 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 39b2ae358da..829186115d5 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 ef50cfbacd4..80425c76276 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 6620bdcab6a..95031f47d86 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 6dfb78758a9..373b00c5814 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 2cece03aef0..857fbb7947e 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 ffc2c17d010..b02fedb1371 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 91fdd0f0129..628d8febea7 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 740dff467f1..f3b185bd801 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 bb781d36446..23b02a0b1ce 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 cc66f1dac05..00c4f37dc87 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 eb7e2fa2efd..a7595a8b956 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 09db4e38533..91735dce9d3 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 2bc8a723f20..22e40949327 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 67670a0dd04..b3aaeb64795 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 d7864edc5e4..8b03682a153 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 45589c35534..383c1d658e6 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 b8bad12544f..b39de5b6008 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 2e3a5b2bf46..fd5cc68dd5e 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 5f2378c6b5a..bb6b8710ca1 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 2823bf4aa6c..3a25ffa50c9 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 3664cba749a..b483c4c3536 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 9af81ddf25b..6f647382de2 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 29c48d29d9b..2b376cc8e5c 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 b05cec4dfb2..243f9773daa 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 93ab2d6bee4..147a3fd65f6 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 cf249d63ab3..180d1f20051 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 0587e31ff58..4bd7756956f 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 bef4c22e8cc..c0df4cc5bb4 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 300de673c8d..c78ae331cb8 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 2ff5714d336..e64e35a527d 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 1da2ea7b287..68d56fcdda2 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 95aac6d1fe4..23b23a73ba0 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 2f4d38a359f..256e2a146ea 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 6f8d309709c..823fdeff7f4 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 414a86f35d5..128997e1ad1 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 d3863710ee8..3e51f53e2a1 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 1af71cdef8d..f9a39ea7107 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 a77cb7c628f..a8f3e14e5a9 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 7edb862a4cd..a26529f6fa3 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 720bbf2ee72..dce772e9fd5 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 c88686b4d7d..2e2c1cefdfc 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 adee97fc7b0..1e96fab82da 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 de4c770dc60..63b823e5d54 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 ce14b41eec2..adb63f32172 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 694f1f684bd..ec0e7ec71a8 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 218249b198d..f0bf973c266 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 5d1f89325ac..0df09414428 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 5247d1821ce..9e9f2e3132f 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 cc2b06011c8..00000000000
--- 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 e98ae08401e..00000000000
--- 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 6a3dc743dfb..567b715088c 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 7908bd66a94..2b95d3fe470 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 df5eb27890f..4ae171f4456 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 7a49920da14..efbc3c0daf5 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 9acf53df98d..dc2b8ceac32 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 7b2533af134..20e76d85f03 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 a7a227b0ce8..9a7d9969a60 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 6733df818be..3e14b58ae0d 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 92061c60d89..00671d7433c 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 7b1a718a69e..8f4283551d8 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 357fe6c9172..65943abe37a 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 228348ab7e9..058ae44ace2 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 f2da24e6a9c..d93f03a9423 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 2f56ec5b943..07f6362e39d 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 c4bd3cda848..ff049f45da0 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 aa37a97e490..b7ced851ab6 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 d29a96ea5b9..befac0d4dcd 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 2b1b5b38dd5..b670528f8f5 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 2e052c113e0..701b6b75486 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 00000000000..6e3b40ed332
--- /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 00000000000..3ec77ae260b
--- /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 5f59e851591..988e29f88ce 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 03f526fcc1d..5f40c5eca3b 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 b698fbe9b1d..2e780cd9966 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 00000000000..f2ebe09ee8f
--- /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 4fcbc3cfe7b..04cab631753 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 00000000000..24fdd23ec3e
--- /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 c954f35e537..6cbc520d38f 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 00000000000..40465a44a5c
--- /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 00000000000..a6537c07b47
--- /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 a7c3f2be698..ffc1818f873 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 f8a80c7b3db..aef53014f15 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 6e69cad7f44..bc7260392f7 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 00000000000..6205758ccc2
--- /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 10d50064dc1..a5f3c8cfc57 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 e6f21ecdcf8..6794e68309b 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 94adb80e4ae..45ac149ca42 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 00000000000..586fd57b5a7
--- /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 00000000000..6824357498e
--- /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 7911ad0d081..5c9fa47f3d8 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 0625ce00faf..50af29896ff 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 dc1c9d1cdc7..1291e96f4ff 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 94a471ebddf..148e661839c 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 c04069b4418..6e5074d83fa 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 cf5789fef46..1bf635fa875 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 ed17c18f973..786bdbc5b5f 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 86c3d612545..c489a730667 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 00000000000..7d8f1656bbd
--- /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 d6cde4fe846..3e3a3f15542 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 342534e1f9f..354182458db 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 4b1ad4b012a..2634acd7241 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 89be5bfa577..ac30a17faed 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 a97fe0769d8..2cb5ba47ce6 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 35c7dea6bb3..170a2c970de 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 d30255ba0ab..9000e5b1316 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 00000000000..f5992970c3a
--- /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 00000000000..b0605cca993
--- /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 00000000000..3ef14080b57
--- /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 00000000000..5b36f21f1fc
--- /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 00000000000..98cba3c2c27
--- /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 00000000000..812cfd8b04b
--- /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 00000000000..19bd44a0cd9
--- /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 903105251e4..c19ec0ee18c 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 00000000000..3ef14080b57
--- /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 db3c4a6cb5d..baff9398354 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 00000000000..98cba3c2c27
--- /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 00000000000..8994f9933ba
--- /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 00000000000..edbdc303a02
--- /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 00000000000..65b7a53b1e5
--- /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 2e72a37db3e..9f667b0cc08 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 ec1e2e09cd4..b8c3fe61fdb 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 1a8b15d841a..f3d96c82c52 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 4d5134a2524..6a14999c910 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 00000000000..73aa89494c9
--- /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 00000000000..17c82988fa6
--- /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 00000000000..d3e1f7fda49
--- /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 00000000000..faff7034065
--- /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 41de31ae3e6..01533bb6249 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 00000000000..e69ce8e554c
--- /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 00000000000..eceb66e4d4c
--- /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 00000000000..b00147060fa
--- /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 2be26c5cec4..dc65c394dbf 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 a916a14cf3c..41ec9910a05 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 00000000000..7f33fba65f2
--- /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 8e911912ba8..a69f2fdd553 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 cb263e92320..8d54bed60bc 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 5d795c7b264..84c60abb42d 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 00000000000..87bfa9c5d10
--- /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 00000000000..02819f86ebb
--- /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 00000000000..84cfeb4f686
--- /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 c4d1d38b8e9..206f4a86b04 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 00000000000..a5e006c1f2e
--- /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 00000000000..df69cf7c378
--- /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 b0b8a44a22f..594da1e2775 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 00000000000..40d98f02c2f
--- /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 9a553bea6e6..919f7ec9a01 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 68a3c94d3c8..d967e51fc0b 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 53335fb4eb2..29338cea658 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 613a2dfdf2f..438e871f143 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 dc678b54cb3..a2dfecc6d86 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 11f0bbfb19a..89123585158 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 109444dc8fa..38540e03ebe 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 25978753e5b..720f4ce239c 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 b32cbc0393f..141b2b8bdd0 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 028863666d5..3f4602d96a2 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 becf1073dcd..6d5ff1e1813 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 6f3297b43e2..ba72a6f6c52 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 9a2a6f7a389..ccc6d63ec8b 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 5d6d9b45369..c8c0c86009f 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 cb9332ea06d..fd1facdfbb8 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 eb8203aa9ba..4f7cab2944d 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 cd6b070866f..89f522833fd 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 1bdeeb94eb4..c102af27c41 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 54b3e545a0b..76e5c544cc4 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 cb5d12ac9cc..7e6ca5259d9 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 4ca9162c017..95f93f285e1 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 a5fd552fc54..55bd0e8aa3f 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 b048cfee769..10fccac1664 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 e0f61e5e7bc..b6ae4212aa9 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 62061bbf18f..66b28e148c5 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 34cdc68745d..0f7014c10ad 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 33960d51bab..11c6b4c6ffa 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 9e11b57cf50..00000000000
--- 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 3e713801168..0752bc26157 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 179c0dd8026..ccb8048948d 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 5e884ad8181..434af4d436c 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 a317dbd420a..8370c845c08 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 21d5d89f697..a05fe47917a 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 a25e57a172b..5d93e0b106f 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 362131c7965..0eae2310de4 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 f16b812476f..e2d30714727 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 00000000000..881234b574e
--- /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 27221df4a20..84d72152e0b 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 2b382943d89..006ddd56d0f 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 29a728c2384..ccbcc96884c 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 6ddd1b58cb9..467f1ac6a51 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 86af1c575d1..79933ad8232 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 ba61bbc1607..2e92e60737b 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 a922cf3cc7e..ca0f2e4823a 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 0949af576b4..0bb225703df 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 aeab28fc4ea..3ea94909fae 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 c41956e32dd..f547acaa6b9 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 972f0ff852d..3a0283dc053 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 93cf1da523a..877cd097ca4 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 93fcee9b910..2eeb2a5361a 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 252728086d5..35636e9b574 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 2761896f8f5..ba6bc8a50a7 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 c1f888bd325..138a3444a08 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 00000000000..b15ac3a76d6
--- /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 00000000000..552b8d2826f
--- /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 00000000000..d654185a6c1
--- /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 00000000000..62237f15bfd
--- /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 88def1f34ab..d7ee416e3ab 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 4046f9f351b..d57f001c173 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 00000000000..58ae8cd85b1
--- /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 00000000000..68077f54c9e
--- /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 00000000000..615aae195c6
--- /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 00000000000..bac4e46fc88
--- /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 00000000000..c896bba0e2a
--- /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 00000000000..37a2c9b3b4e
--- /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 00000000000..a4e12a3fa7c
--- /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 00000000000..376d44623b8
--- /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 00000000000..3786f460147
--- /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 00000000000..c8dd558217e
--- /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 00000000000..fd366e9ef7d
--- /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 00000000000..966e827e4b0
--- /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 00000000000..bef885205b3
--- /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 00000000000..bc2e863e22d
--- /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 260008d98e0..5bbc9c1aaf9 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 00000000000..489c51deb1d
--- /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 00000000000..6478848d6c1
--- /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 6a25bef81a5..51410a3d333 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 a68bf44fdaf..00000000000
--- 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 8f2938da13b..fdb5d9277fc 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 00000000000..95461132ea5
--- /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 00000000000..e5b3b94f913
--- /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 00000000000..16c0813eba0
--- /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 00000000000..45ca1f17ab3
--- /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 aa61951f563..1e1ce470845 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 3f4ad518e2e..685accf0760 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 b34e1ac22a3..e44ecdf3efc 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 49f7da2a14f..385d65d832a 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 4838a92e14c..919f3ad28ba 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 5bbeed1e443..cfcfb31d970 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 277417ab284..bf74aaaf730 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 981fbadac50..59dc098f81e 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 f9c6d5f88c7..5c5964b8ff2 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 00000000000..68feed1c064
--- /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 00000000000..a53a97f5f32
--- /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 2cb090f6264..6dc3b2649dc 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 172442c286d..c88a2ef8ced 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 6c5b9f4e619..6016012462a 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 e1dedf7043d..f3c04a4dd39 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 2470accf900..7c0b0e4acba 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 f4d47688bb9..3a0ff4d1ffb 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 7aa31f6ab1e..25b10bd6452 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 887e9b7b820..839d0af959c 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 00000000000..079fbc04a86
--- /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 00000000000..ad401d14327
--- /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 00000000000..89dc0c13238
--- /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 00000000000..d87510ca029
--- /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 00000000000..c65cac6074c
--- /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 00000000000..2583a7c879f
--- /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 00000000000..8bf35beb2fc
--- /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 e426c624796..daa95701751 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 fd49284c1ae..95fa50a573a 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 d73065cb9d7..558985f867a 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 ec5d17fe0a1..e8c0670e580 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 b665e1ac2ab..b5f3228f7ba 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 c3e0c01aa8a..623f1f87a6e 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 07ce3101438..962bcb3be60 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 6ad49625459..1eb8915cdd2 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 a34bd55eedd..f45544c2306 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 faaf5153434..298c97d2cd3 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 00000000000..73ea0617d29
--- /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 00000000000..1be7e95b0f1
--- /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 00000000000..aa5d78ca25b
--- /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 00000000000..da6e2076cd2
--- /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 00000000000..9715e34e392
--- /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 00000000000..fcc2f9dcc76
--- /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 00000000000..5cfaeeef5a7
--- /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 00000000000..5a2cfbcfafd
--- /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 00000000000..fda2b0b2b05
--- /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 00000000000..faff0a6bcdb
--- /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 e60b2dc7dc5..900277d7c04 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 00000000000..e21e2865b0f
--- /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 00000000000..d8c2a5d4ed8
--- /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 00000000000..6ad24ea9423
--- /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 00000000000..7fe0b22f93a
--- /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 00000000000..7a25563cf93
--- /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 00000000000..60facbdf1ef
--- /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 00000000000..9a2989eccd6
--- /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 49692c34107..131a7e3cb20 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 00000000000..4e36ce2bf32
--- /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 e6e1395a8d5..7839828daa0 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 00000000000..376688460a4
--- /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 39cf8f69be9..6d5e9174350 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 2ff980dabb6..9d2ef009311 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 3b4c20e53a2..fd18aeea54b 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 00c942b4050..c3cf1c9e54b 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 c892f4cad30..69f5dfff984 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 00000000000..0339e87937a
--- /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 825cd66f2b0..34827b54f48 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 00000000000..7141bd9ca89
--- /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 033ce3a5730..29383a8ce63 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 d1957b40967..00000000000
--- 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 00000000000..905c5c05595
--- /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 00000000000..983638276e7
--- /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 00000000000..9471e606c57
--- /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 6998113ea81..294d03d74b6 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 00000000000..e705d842af0
--- /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 00000000000..55e3bc0d3ba
--- /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 00000000000..4469548c170
--- /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 6c0585ab837..810fb6604f8 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 00000000000..caac4ddefb6
--- /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 77f6fb8ac5f..341a72be0d0 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 2fd4496a4f7..d66590d1543 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 27e1482ca9b..8b7397ef539 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 912a240473b..a21ab6eb88a 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 cfa03de00b2..66208b761ec 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 7db499ac822..6a97e0e25d1 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 5df5fa888b9..0886947b4b3 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 2629e08e714..92ece22a80f 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()});
-- 
GitLab