diff --git a/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml b/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
index a7183277e514bfb390d08cf0241e9e3f3c581661..e3d32f17b6356bc974627b0daaba5dca5c467eea 100644
--- a/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
+++ b/app/code/Magento/AdminNotification/view/adminhtml/layout/default.xml
@@ -8,9 +8,20 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
     <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"/>
+            <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"
+                   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" name="notification.messages" before="user" template="toolbar_entry.phtml"/>
diff --git a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
index 76f6b5a4d616cc4da49008649411fd8c2afe6689..5c519899208db8fd966552bab21ec893b7b6477f 100644
--- a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
+++ b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
@@ -19,12 +19,12 @@
                 <argument name="template" xsi:type="string">Magento_Vault::form/vault.phtml</argument>
             </action>
         </referenceBlock>
-        <referenceBlock name="content">
+        <referenceBlock name="data">
             <block name="braintree_payment_script"
                    as="braintree_payment_script"
-                   after="billing_method"
                    template="Magento_Braintree::payment/script.phtml"
-                   class="Magento\Braintree\Block\Payment"/>
+                   class="Magento\Braintree\Block\Payment"
+                   after="billing_method"/>
         </referenceBlock>
     </body>
 </page>
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 ab0d6c303b2e7a4b273c28c1f01d822fa8416e98..5ab962f0b91b55dd6f617b97fa0f92e73cde766e 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
@@ -36,7 +36,7 @@
             </block>
         </referenceBlock>
         <referenceBlock name="product.info.form.options">
-            <container name="bundle.product.options.wrapper" htmlTag="div" htmlClass="bundle-options-wrapper" after="product.info.form.options" />
+            <container name="bundle.product.options.wrapper" htmlTag="div" htmlClass="bundle-options-wrapper"/>
         </referenceBlock> 
         <move element="product.info.options.wrapper" destination="bundle.product.options.wrapper" before="-" />
         <move element="product.info.options.wrapper.bottom" destination="bundle.product.options.wrapper" after="product.info.options.wrapper" />
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 1c7ae6de66ed062c751ddfa23e062c4b24d9a453..d61a2c344d666277fa2312ffea0c3f10c30d576c 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
@@ -9,7 +9,9 @@
     <body>
         <referenceContainer name="content">
             <container name="adminhtml.catalog.product.set.edit.wrapper" htmlTag="div" htmlClass="admin__scope-old"><!-- @todo ui: remove arguments within .admin__scope-old -->
-                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Main" name="adminhtml.catalog.product.set.edit" template="catalog/product/attribute/set/main.phtml"/>
+                <block class="Magento\Catalog\Block\Adminhtml\Product\Attribute\Set\Main"
+                       name="adminhtml.catalog.product.set.edit"
+                       template="catalog/product/attribute/set/main.phtml"/>
             </container>
         </referenceContainer>
     </body>
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 f7f1ee4ae54b7d81c8b8c9b13203481203b732d2..991d9a36d18e04c7e8b17744dd3b2d32981fdc18 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
@@ -30,7 +30,7 @@
         </referenceBlock>
         <referenceContainer name="content">
             <container name="product.info.main" htmlTag="div" htmlClass="product-info-main" before="-">
-                <container name="product.info.price" label="Product info auxiliary container" htmlTag="div" htmlClass="product-info-price" after="product.info.review">
+                <container name="product.info.price" label="Product info auxiliary container" htmlTag="div" htmlClass="product-info-price">
                     <container name="product.info.stock.sku" label="Product auxiliary info" htmlTag="div" htmlClass="product-info-stock-sku">
                         <container name="product.info.type" before="-"/>
                         <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.sku" template="product/view/attribute.phtml" after="product.info.type">
@@ -44,7 +44,7 @@
                         </block>
                     </container>
                     <block class="Magento\Catalog\Block\Product\View" name="product.info.review" template="product/view/review.phtml" after="product.info.stock.sku" />
-                    <block class="Magento\Catalog\Pricing\Render" name="product.price.final" after="product.info.sku">
+                    <block class="Magento\Catalog\Pricing\Render" name="product.price.final">
                         <arguments>
                             <argument name="price_render" xsi:type="string">product.price.render.default</argument>
                             <argument name="price_type_code" xsi:type="string">final_price</argument>
@@ -81,7 +81,7 @@
                     </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">
+                    <container name="product.info.social" label="Product social links container" htmlTag="div" htmlClass="product-social-links">
                         <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\AddTo\Compare" name="view.addto.compare" after="view.addto.wishlist"
                                    template="Magento_Catalog::product/view/addto/compare.phtml" />
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 37a39835fe9f6d1fefe54b2e629ebb8d1cc871da..ef8a6e758bac1c470dd9d80bca27e302db828ba7 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
@@ -5,21 +5,21 @@
  * See COPYING.txt for license details.
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceContainer name="content">
             <referenceBlock name="catalog_rule_form">
                 <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Conditions" name="promo_catalog_edit_tab_conditions">
                     <arguments>
-                    <argument name="config" xsi:type="array">
-                        <item name="label" xsi:type="string" translate="true">Conditions</item>
-                        <item name="collapsible" xsi:type="boolean">true</item>
-                        <item name="opened" xsi:type="boolean">false</item>
-                        <item name="sortOrder" xsi:type="number">20</item>
-                        <item name="canShow" xsi:type="boolean">true</item>
-                        <item name="componentType" xsi:type="string">fieldset</item>
-                    </argument>
-                </arguments>
+                        <argument name="config" xsi:type="array">
+                            <item name="label" xsi:type="string" translate="true">Conditions</item>
+                            <item name="collapsible" xsi:type="boolean">true</item>
+                            <item name="opened" xsi:type="boolean">false</item>
+                            <item name="sortOrder" xsi:type="number">20</item>
+                            <item name="canShow" xsi:type="boolean">true</item>
+                            <item name="componentType" xsi:type="string">fieldset</item>
+                        </argument>
+                    </arguments>
                 </block>
             </referenceBlock>
             <uiComponent name="catalog_rule_form"/>
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 9a56d1f172cd4ee4c354bdbb91896f7d82f0f336..a72f712e77f3f6fa3f4aa4855c91ef33268e65fe 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
@@ -8,7 +8,10 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
     <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"/>
+            <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.wrapper"/>
         </referenceContainer>
     </body>
 </page>
diff --git a/app/code/Magento/Cookie/view/frontend/layout/default.xml b/app/code/Magento/Cookie/view/frontend/layout/default.xml
index d515c6a42a5e88fa1968658a407cbd0e7e0cb8fe..3e8bcafd3dba43b16d0721b8ba11c4d61b0656ea 100644
--- a/app/code/Magento/Cookie/view/frontend/layout/default.xml
+++ b/app/code/Magento/Cookie/view/frontend/layout/default.xml
@@ -8,7 +8,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceContainer name="after.body.start">
-            <block class="Magento\Cookie\Block\Html\Notices" name="cookie_notices" template="html/notices.phtml" after="global_notices" />
+            <block class="Magento\Cookie\Block\Html\Notices" name="cookie_notices" template="html/notices.phtml"/>
         </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 5d1da28d4c189ff7deb870521137af6782280b24..c3a255192eb9b353fac275da89cc7afbbf25ce6e 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
@@ -14,7 +14,6 @@
             </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" cacheable="false"/>
             <block class="Magento\Customer\Block\Account\Dashboard\Address" name="customer_account_dashboard_address" as="address" template="account/dashboard/address.phtml" cacheable="false"/>
         </referenceContainer>
diff --git a/app/code/Magento/Customer/view/frontend/web/js/password-strength-indicator.js b/app/code/Magento/Customer/view/frontend/web/js/password-strength-indicator.js
index 138ac06504155b3badcf6c8b032790e68fbb46f5..298af46103ec0eb80e18a01e7ec47cd418dd525c 100644
--- a/app/code/Magento/Customer/view/frontend/web/js/password-strength-indicator.js
+++ b/app/code/Magento/Customer/view/frontend/web/js/password-strength-indicator.js
@@ -17,7 +17,6 @@ define([
     $.widget('mage.passwordStrengthIndicator', {
         options: {
             cache: {},
-            defaultClassName: 'password-strength-meter-',
             passwordSelector: '[type=password]',
             passwordStrengthMeterSelector: '[data-role=password-strength-meter]',
             passwordStrengthMeterLabelSelector: '[data-role=password-strength-meter-label]'
@@ -54,14 +53,15 @@ define([
             var password = this._getPassword(),
                 isEmpty = password.length === 0,
                 zxcvbnScore = zxcvbn(password).score,
-                isValid = $.validator.validateSingleElement(this.options.cache.input),
-                displayScore = zxcvbnScore || 1;
+                displayScore,
+                isValid;
 
             // Display score is based on combination of whether password is empty, valid, and zxcvbn strength
             if (isEmpty) {
                 displayScore = 0;
-            } else if (!isValid) {
-                displayScore = 1;
+            } else {
+                isValid  = $.validator.validateSingleElement(this.options.cache.input);
+                displayScore = isValid ? zxcvbnScore : 1;
             }
 
             // Update label
@@ -75,27 +75,32 @@ define([
          */
         _displayStrength: function (displayScore) {
             var strengthLabel = '',
-                className = this._getClassName(displayScore);
+                className = 'password-';
 
             switch (displayScore) {
                 case 0:
                     strengthLabel = $t('No Password');
+                    className += 'none';
                     break;
 
                 case 1:
                     strengthLabel = $t('Weak');
+                    className += 'weak';
                     break;
 
                 case 2:
                     strengthLabel = $t('Medium');
+                    className += 'medium';
                     break;
 
                 case 3:
                     strengthLabel = $t('Strong');
+                    className += 'strong';
                     break;
 
                 case 4:
                     strengthLabel = $t('Very Strong');
+                    className += 'very-strong';
                     break;
             }
 
@@ -112,16 +117,6 @@ define([
          */
         _getPassword: function () {
             return this.options.cache.input.val();
-        },
-
-        /**
-         * Get class name for score
-         * @param {int} displayScore
-         * @returns {String}
-         * @private
-         */
-        _getClassName: function (displayScore) {
-            return this.options.defaultClassName + displayScore;
         }
     });
 
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
index c8be1ad14bfd1323d2a569ec30b0b07dc4704a06..250410fc3b5264d9dc077e92c7c5c1479c0d2693 100644
--- a/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
@@ -28,7 +28,10 @@
 
             <dd id="allow-gift-options-for-order-container" class="order-options">
                 <div class="options-order-container" id="options-order-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"></div>
-                    <a href="#" class="action activate message" data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#allow-gift-messages-for-order-container"}}'><?php /* @escapeNotVerified */ echo __('Gift Message') ?></a>
+                    <button class="action action-gift"
+                            data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#allow-gift-messages-for-order-container"}}'>
+                        <span><?php /* @escapeNotVerified */ echo __('Gift Message') ?></span>
+                    </button>
                     <div id="allow-gift-messages-for-order-container" class="gift-messages-order hidden">
                         <fieldset class="fieldset">
                             <p><?php /* @escapeNotVerified */ echo __('Leave this box blank if you don\'t want to leave a gift message for the entire order.') ?></p>
@@ -52,13 +55,12 @@
                             </div>
                         </fieldset>
                         <script>
-require(['jquery'], function(jQuery){
-
-    jQuery('#add-gift-options-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
-        .add('#add-gift-options-for-order-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>').removeClass('hidden');
-
-});
-</script>
+                            require(['jquery'], function(jQuery){
+                                jQuery('#add-gift-options-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
+                                    .add('#add-gift-options-for-order-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
+                                    .removeClass('hidden');
+                            });
+                        </script>
                     </div>
             </dd>
             <?php endif ?>
@@ -87,7 +89,10 @@ require(['jquery'], function(jQuery){
                          <div class="options">
                              <div class="options-items-container" id="options-items-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>-<?php /* @escapeNotVerified */ echo $_item->getId() ?>"></div>
                              <?php if ($block->isItemMessagesAvailable($_item)): ?>
-                             <a href="#" class="action activate message" data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>"}}'><?php /* @escapeNotVerified */ echo __('Gift Message') ?></a>
+                             <button class="action action-gift"
+                                     data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>"}}'>
+                                 <span><?php /* @escapeNotVerified */ echo __('Gift Message') ?></span>
+                             </button>
                              <div id="gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>" class="block message hidden">
                                  <fieldset class="fieldset">
                                      <p><?php /* @escapeNotVerified */ echo __('Leave a box blank if you don\'t want to add a gift message for that item.') ?></p>
@@ -118,24 +123,23 @@ require(['jquery'], function(jQuery){
                 </ol>
             </dd>
             <script>
-require(['jquery'], function(jQuery){
-
-    jQuery('#add-gift-options-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
-        .add('#add-gift-options-for-items-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>').removeClass('hidden');
-
-});
-</script>
+                require(['jquery'], function(jQuery){
+                    jQuery('#add-gift-options-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
+                        .add('#add-gift-options-for-items-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>')
+                        .removeClass('hidden');
+                });
+            </script>
             <?php endif; ?>
             <dt class="extra-options-container" id="extra-options-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"></dt>
         </dl>
     </fieldset>
-<script type="text/x-magento-init">
-{
-    "#allow_gift_options, #allow_gift_options_for_order, #allow_gift_options_for_items": {
-        "giftOptions": {}
+    <script type="text/x-magento-init">
+    {
+        "#allow_gift_options, #allow_gift_options_for_order, #allow_gift_options_for_items": {
+            "giftOptions": {}
+        }
     }
-}
-</script>
+    </script>
 <?php break; ?>
 
 <?php case 'multishipping_address': ?>
@@ -159,7 +163,10 @@ require(['jquery'], function(jQuery){
                 <div class="options-order-container" id="options-order-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"></div>
                 <?php if ($block->isMessagesAvailable()): ?>
                     <?php $_giftMessage = true; ?>
-                    <a href="#" class="action activate message" data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-order-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"}}'><?php /* @escapeNotVerified */ echo __('Gift Message') ?></a>
+                    <button class="action action-gift"
+                            data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-order-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"}}'>
+                        <span><?php /* @escapeNotVerified */ echo __('Gift Message') ?></span>
+                    </button>
                     <div id="gift-messages-for-order-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>" class="gift-messages-order hidden">
                         <fieldset class="fieldset">
                             <p><?php /* @escapeNotVerified */ echo __('You can leave this box blank if you don\'t want to add a gift message for this address.') ?></p>
@@ -212,7 +219,10 @@ require(['jquery'], function(jQuery){
 
                              <?php if ($block->isItemMessagesAvailable($_item)): ?>
                              <?php $_giftMessage = true; ?>
-                                 <a href="#" class="action activate message" data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>"}}'><?php /* @escapeNotVerified */ echo __('Gift Message') ?></a>
+                                 <button class="action action-gift"
+                                         data-mage-init='{"toggleAdvanced": {"selectorsToggleClass":"hidden", "toggleContainers":"#gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>"}}'>
+                                     <span><?php /* @escapeNotVerified */ echo __('Gift Message') ?></span>
+                                 </button>
                                  <div id="gift-messages-for-item-container-<?php /* @escapeNotVerified */ echo $_item->getId() ?>" class="block message hidden">
                                      <fieldset class="fieldset">
                                         <p><?php /* @escapeNotVerified */ echo __('You can leave this box blank if you don\'t want to add a gift message for the item.') ?></p>
@@ -247,13 +257,13 @@ require(['jquery'], function(jQuery){
             <dt class="extra-options-container" id="extra-options-container-<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>"></dt>
         </dl>
     </fieldset>
-<script type="text/x-magento-init">
-    {
-        "#allow_gift_options_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>, #allow_gift_options_for_order_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>, #allow_gift_options_for_items_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>": {
-            "giftOptions": {}
+    <script type="text/x-magento-init">
+        {
+            "#allow_gift_options_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>, #allow_gift_options_for_order_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>, #allow_gift_options_for_items_<?php /* @escapeNotVerified */ echo $block->getEntity()->getId() ?>": {
+                "giftOptions": {}
+            }
         }
-    }
-</script>
+    </script>
     <?php break; ?>
 <?php endswitch ?>
 <?php if ($_giftMessage): ?>
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html
index 559875c90f75a92132ed56a311116754e4e42014..a310dcddf6a19a3226bf4f66a2981d1146fd6736 100644
--- a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html
+++ b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html
@@ -5,14 +5,13 @@
  */
  -->
 <!-- ko if: isActive() || hasActiveOptions() -->
-<a href="#"
-   class="action action-gift"
-   data-bind="
-   click: $data.toggleFormBlockVisibility.bind($data),
-   css: {_active: formBlockVisibility() || resultBlockVisibility()}
-   ">
+<button class="action action-gift"
+        data-bind="
+            click: $data.toggleFormBlockVisibility.bind($data),
+            css: {_active: formBlockVisibility() || resultBlockVisibility()}
+        ">
     <span data-bind="i18n: 'Gift options'"></span>
-</a>
+</button>
 <div class="gift-content" data-bind="css: {_active: formBlockVisibility() || resultBlockVisibility()}"> <!-- add class "active" to display the content -->
     <!-- ko ifnot: resultBlockVisibility() -->
         <div class="gift-options">
diff --git a/app/code/Magento/Integration/Block/Adminhtml/Widget/Grid/Column/Renderer/Name.php b/app/code/Magento/Integration/Block/Adminhtml/Widget/Grid/Column/Renderer/Name.php
index b881ff04db1a217102dd3802f884f1dcbe60f6ae..c1d849f8b718785d00abc4daa7b09dac87da14df 100644
--- a/app/code/Magento/Integration/Block/Adminhtml/Widget/Grid/Column/Renderer/Name.php
+++ b/app/code/Magento/Integration/Block/Adminhtml/Widget/Grid/Column/Renderer/Name.php
@@ -23,7 +23,7 @@ class Name extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Text
         /** @var \Magento\Integration\Model\Integration $row */
         $text = parent::render($row);
         if (!$this->isUrlSecure($row->getEndpoint()) || !$this->isUrlSecure($row->getIdentityLinkUrl())) {
-            $text .= '<span class="icon-error"><span>Integration not secure</span></span>';
+            $text .= '<span class="security-notice"><span>' . __("Integration not secure") . '</span></span>';
         }
         return $text;
     }
diff --git a/app/code/Magento/Integration/Test/Unit/Block/Adminhtml/Widget/Grid/Column/Renderer/NameTest.php b/app/code/Magento/Integration/Test/Unit/Block/Adminhtml/Widget/Grid/Column/Renderer/NameTest.php
index 3fb03dd3f65dc05b5548120ab5cb15512bf34b5d..f1bca8620570a29cf31f55daeee68761b4f9bada 100644
--- a/app/code/Magento/Integration/Test/Unit/Block/Adminhtml/Widget/Grid/Column/Renderer/NameTest.php
+++ b/app/code/Magento/Integration/Test/Unit/Block/Adminhtml/Widget/Grid/Column/Renderer/NameTest.php
@@ -101,7 +101,7 @@ class NameTest extends \PHPUnit_Framework_TestCase
             [
                 'http://myurl',
                 'Custom Integration',
-                'Custom Integration<span class="icon-error"><span>Integration not secure</span></span>'
+                'Custom Integration<span class="security-notice"><span>Integration not secure</span></span>'
             ]
         ];
     }
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 9825277958f6703c4d3e0d52610540047d00ec1b..8a4e55533d67820aa7b2bae9e6769b3d8df2304d 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
@@ -8,9 +8,6 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
-    <head>
-        <css src="Magento_Integration::integration.css"/>
-    </head>
     <update handle="adminhtml_integration_grid_block"/>
     <body>
         <referenceBlock name="content">
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 74deb27aaba968c40e345de5b71737c2593c2f32..492731b447ea2279d45f10ad2c1091aebccdbe3c 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
@@ -6,9 +6,6 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
-    <head>
-        <css src="Magento_Integration::integration.css"/>
-    </head>
     <update handle="adminhtml_integration_edit"/>
     <body>
         <referenceBlock name="content">
diff --git a/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions.phtml b/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions.phtml
index 225eac3fc7d6338757f1bcdd024590f965bb945c..bcad96435a5cec25a8a02dfcdf00b227af92ff50 100644
--- a/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions.phtml
+++ b/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions.phtml
@@ -14,4 +14,4 @@
 <div id="integration-activate-permissions-tabs">
     <?php echo $block->getChildHtml('tabs'); ?>
 </div>
-<div id="integrations-activate-permissions-content"></div>
\ No newline at end of file
+<div id="integrations-activate-permissions-content"></div>
diff --git a/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml b/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml
index a5131655334a89b678f9a250b4e2aa885905dfd8..7b853b53a815d9b3e41f8f5152c748cc30df5966 100644
--- a/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml
+++ b/app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml
@@ -24,22 +24,20 @@
 </fieldset>
 <?php if (!$block->isTreeEmpty()): ?>
     <script>
-require(["jquery", "Magento_User/js/roles-tree"], function($){
+        require(["jquery", "Magento_User/js/roles-tree"], function($){
+            $.widget('mage.rolesTree', $.mage.rolesTree, {
+                _checkNode: function(event) {},
+                _checkNodes: function() {
+                    this._super();
+                    this.element.jstree('disable_hotkeys').jstree('hide_checkboxes')
+                        .find('li.jstree-unchecked').hide().end().find('li.jstree-checked').attr('rel', 'disabled');
+                }
+            });
 
-    $.widget('mage.rolesTree', $.mage.rolesTree, {
-        _checkNode: function(event) {},
-        _checkNodes: function() {
-            this._super();
-            this.element.jstree('disable_hotkeys').jstree('hide_checkboxes')
-                .find('li.jstree-unchecked').hide().end().find('li.jstree-checked').attr('rel', 'disabled');
-        }
-    });
-
-    $('[data-role="resource-tree"]').rolesTree({
-        'treeInitData': <?php /* @escapeNotVerified */ echo $block->getResourcesTreeJson() ?>,
-        'treeInitSelectedData': <?php /* @escapeNotVerified */ echo $block->getSelectedResourcesJson() ?>
-    });
-
-});
-</script>
+            $('[data-role="resource-tree"]').rolesTree({
+                'treeInitData': <?php /* @escapeNotVerified */ echo $block->getResourcesTreeJson() ?>,
+                'treeInitSelectedData': <?php /* @escapeNotVerified */ echo $block->getSelectedResourcesJson() ?>
+            });
+        });
+    </script>
 <?php endif ?>
diff --git a/app/code/Magento/Integration/view/adminhtml/web/integration.css b/app/code/Magento/Integration/view/adminhtml/web/integration.css
deleted file mode 100644
index a9415ce2e5cdd3ac3d1c1926ca523977d935c40a..0000000000000000000000000000000000000000
--- a/app/code/Magento/Integration/view/adminhtml/web/integration.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-#integration-popup-container #resource-tree {
-    max-height: 170px;
-    overflow: auto;
-}
-
-#integrationGrid_table .action {
-    border: none;
-    border-radius: 0;
-    background: none;
-    margin: 0;
-    padding: 0;
-    box-shadow: none;
-    text-shadow: none;
-    filter: none;
-}
-#integrationGrid_table .action:before {
-    font-family: 'MUI-Icons';
-    font-style: normal;
-    speak: none;
-    font-weight: normal;
-    font-size: 18px;
-    -webkit-font-smoothing: antialiased;
-    color: #b7b3ad;
-}
-#integrationGrid_table .action:hover:before {
-    color: #7e7e7e;
-}
-
-#integrationGrid_table .action.edit:before {
-    content: '\e05b';
-}
-
-#integrationGrid_table .action.info:before {
-    content: '\e07e';    /* TOFIX: Need to get the proper character code */
-}
-
-#integrationGrid_table .action.delete:before {
-    content: '\e07f';
-}
-
-#integrationGrid_table .action[disabled] {
-    color: #bbb3b4;
-    cursor: not-allowed;
-    opacity: 0.6;
-}
-
-#integrationGrid_table .icon-error {
-    margin-left: 15px;
-    color: #c00815;
-    font-size: 11px;
-}
-#integrationGrid_table .icon-error:before {
-    font-family: 'MUI-Icons';
-    content: "\e086";
-    font-size: 13px;
-    line-height: 13px;
-    overflow: hidden;
-    speak: none;
-    font-weight: normal;
-    -webkit-font-smoothing: antialiased;
-    display: inline-block;
-    vertical-align: middle;
-    text-align: center;
-    margin: -1px 5px 0 0;
-}
-
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-    float: none;
-}
-
-.ui-dialog .ui-dialog-buttonpane {
-    text-align: right;
-}
-
-.no-close .ui-dialog-titlebar-close {
-    display: none;
-}
-
-#integration_token_base_fieldset input[readonly] {
-    cursor: copy;
-}
diff --git a/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js b/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js
index 8076048a5020853b3ce13ed6b8fa62a2e9022d88..ce9335138618305b1e71a1560b45bb2d60b7b690 100644
--- a/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js
+++ b/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js
@@ -37,7 +37,7 @@ define([
                     case 9: // DOCUMENT_NODE
                         var hostName = window.location.hostname,
                             iFrameHostName = $('<a>')
-                                .prop('href', element.prop('src'))
+                                .prop('href', $(element).prop('src'))
                                 .prop('hostname');
 
                         if (hostName === iFrameHostName) {
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 3b91748bf0ce7f221745f2d8247853af6173a846..de139d98d5118c549ac922199d3c10d454c193fd 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
@@ -16,7 +16,7 @@
             </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">
+            <block class="Magento\Paypal\Block\Bml\Banners" name="bml.right.logo" template="bml.phtml">
                 <arguments>
                     <argument name="section" xsi:type="string">productpage</argument>
                     <argument name="position" xsi:type="number">1</argument>
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php b/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
index e71cc97de683b1cd788e40beae556eaa403a5eef..437f7f6cd2f67a924075aff22ac68ef8c827b022 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
@@ -160,6 +160,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
                 'label' => __('From'),
                 'title' => __('From'),
                 'required' => true,
+                'css_class' => 'admin__field-small',
                 'class' => 'admin__control-text'
             ]
         );
@@ -173,6 +174,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
                 'label' => __('To'),
                 'title' => __('To'),
                 'required' => true,
+                'css_class' => 'admin__field-small',
                 'class' => 'admin__control-text'
             ]
         );
diff --git a/app/code/Magento/Reports/view/adminhtml/templates/report/grid/container.phtml b/app/code/Magento/Reports/view/adminhtml/templates/report/grid/container.phtml
index 9ae58816b17a36dd0179f8497bacb61860140016..f927a4cda56156a3e08a0a3a639f052d47d16487 100644
--- a/app/code/Magento/Reports/view/adminhtml/templates/report/grid/container.phtml
+++ b/app/code/Magento/Reports/view/adminhtml/templates/report/grid/container.phtml
@@ -4,7 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
 
 ?>
 
@@ -24,11 +23,15 @@ require([
 //<![CDATA[
     jQuery('#filter_form').mage('validation', {errorClass: 'mage-error'});
     function filterFormSubmit() {
-        var filters = $$('#filter_form input', '#filter_form select');
-        var elements = [];
-        for(var i in filters){
-            if(filters[i].value && filters[i].value.length && !filters[i].disabled) elements.push(filters[i]);
+        var filters = $$('#filter_form input', '#filter_form select'),
+            elements = [];
+
+        for (var i in filters) {
+            if (filters[i].value && filters[i].value.length && !filters[i].disabled) {
+                elements.push(filters[i]);
+            }
         }
+
         if (jQuery('#filter_form').valid()) {
             setLocation('<?php /* @escapeNotVerified */ echo $block->getFilterUrl(); ?>filter/'+Base64.encode(Form.serializeElements(elements))+'/');
         }
diff --git a/app/code/Magento/Sales/Model/Order.php b/app/code/Magento/Sales/Model/Order.php
index 7ed85998bf520075a4a240795593cfcda37dd6b6..8984d2312db36840282fecc7f4abc811357837e2 100644
--- a/app/code/Magento/Sales/Model/Order.php
+++ b/app/code/Magento/Sales/Model/Order.php
@@ -1442,10 +1442,12 @@ class Order extends AbstractModel implements EntityInterface, OrderInterface
      */
     public function setPayment(\Magento\Sales\Api\Data\OrderPaymentInterface $payment = null)
     {
-        $payment->setOrder($this)->setParentId($this->getId());
-        if (!$payment->getId()) {
-            $this->setData(OrderInterface::PAYMENT, $payment);
-            $this->setDataChanges(true);
+        $this->setData(OrderInterface::PAYMENT, $payment);
+        if ($payment !== null) {
+            $payment->setOrder($this)->setParentId($this->getId());
+            if (!$payment->getId()) {
+                $this->setDataChanges(true);
+            }
         }
         return $payment;
     }
diff --git a/app/code/Magento/Sales/Setup/InstallSchema.php b/app/code/Magento/Sales/Setup/InstallSchema.php
index 0801da31d117115b14b77de9a8f8313a98d612ca..6daa1b42b3a03734a1aeabcf46f3a91d0aa0198a 100644
--- a/app/code/Magento/Sales/Setup/InstallSchema.php
+++ b/app/code/Magento/Sales/Setup/InstallSchema.php
@@ -3216,12 +3216,6 @@ class InstallSchema implements InstallSchemaInterface
             '12,4',
             [],
             'Grand Total'
-        )->addColumn(
-            'base_grand_total',
-            \Magento\Framework\DB\Ddl\Table::TYPE_DECIMAL,
-            '12,4',
-            [],
-            'Base Grand Total'
         )->addColumn(
             'created_at',
             \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
@@ -3240,9 +3234,6 @@ class InstallSchema implements InstallSchemaInterface
         )->addIndex(
             $installer->getIdxName('sales_invoice_grid', ['grand_total']),
             ['grand_total']
-        )->addIndex(
-            $installer->getIdxName('sales_invoice_grid', ['base_grand_total']),
-            ['base_grand_total']
         )->addIndex(
             $installer->getIdxName('sales_invoice_grid', ['order_id']),
             ['order_id']
diff --git a/app/code/Magento/Sales/Setup/UpgradeSchema.php b/app/code/Magento/Sales/Setup/UpgradeSchema.php
index fbf2e929a2f0f39ff19716c11e3209e33d5be3e8..907d782e8deafd5649712ead99a6d94cbc93c1f1 100644
--- a/app/code/Magento/Sales/Setup/UpgradeSchema.php
+++ b/app/code/Magento/Sales/Setup/UpgradeSchema.php
@@ -7,6 +7,7 @@ namespace Magento\Sales\Setup;
 use Magento\Framework\Setup\UpgradeSchemaInterface;
 use Magento\Framework\Setup\ModuleContextInterface;
 use Magento\Framework\Setup\SchemaSetupInterface;
+use Magento\Framework\DB\Adapter\AdapterInterface;
 
 /**
  * @codeCoverageIgnore
@@ -53,5 +54,43 @@ class UpgradeSchema implements UpgradeSchemaInterface
 
             $installer->endSetup();
         }
+        if (version_compare($context->getVersion(), '2.0.3', '<')) {
+            $this->addColumnBaseGrandTotal($installer);
+            $this->addIndexBaseGrandTotal($installer);
+        }
+    }
+
+    /**
+     * @param SchemaSetupInterface $installer
+     * @return void
+     */
+    private function addColumnBaseGrandTotal(SchemaSetupInterface $installer)
+    {
+        $connection = $installer->getConnection();
+        $connection->addColumn(
+            $installer->getTable('sales_invoice_grid'),
+            'base_grand_total',
+            [
+                'type' => \Magento\Framework\DB\Ddl\Table::TYPE_DECIMAL,
+                'nullable' => true,
+                'length' => '12,4',
+                'comment' => 'Base Grand Total',
+                'after' => 'grand_total'
+            ]
+        );
+    }
+
+    /**
+     * @param SchemaSetupInterface $installer
+     * @return void
+     */
+    private function addIndexBaseGrandTotal(SchemaSetupInterface $installer)
+    {
+        $connection = $installer->getConnection();
+        $connection->addIndex(
+            $installer->getTable('sales_invoice_grid'),
+            $installer->getIdxName('sales_invoice_grid', ['base_grand_total']),
+            ['base_grand_total']
+        );
     }
-}
\ No newline at end of file
+}
diff --git a/app/code/Magento/Sales/Test/Unit/Model/OrderTest.php b/app/code/Magento/Sales/Test/Unit/Model/OrderTest.php
index 399092745977a5b480d2218ab145e9ea81e767e2..e8bf1ef1bfe4fc50982e7243ef13d127291a9b2b 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/OrderTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/OrderTest.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Sales\Test\Unit\Model;
 
+use Magento\Sales\Api\Data\OrderInterface;
 use Magento\Sales\Model\Order;
 use Magento\Sales\Model\ResourceModel\Order\Status\History\CollectionFactory as HistoryCollectionFactory;
 
@@ -757,6 +758,115 @@ class OrderTest extends \PHPUnit_Framework_TestCase
         $this->assertSame($this->order, $this->order->loadByIncrementIdAndStoreId($incrementId, $storeId));
     }
 
+    public function testSetPaymentWithId()
+    {
+        $this->order->setId(123);
+        $payment = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->order->setData(OrderInterface::PAYMENT, $payment);
+        $this->order->setDataChanges(false);
+
+        $payment->expects($this->once())
+            ->method('setOrder')
+            ->with($this->order)
+            ->willReturnSelf();
+
+        $payment->expects($this->once())
+            ->method('setParentId')
+            ->with(123)
+            ->willReturnSelf();
+
+        $payment->expects($this->any())
+            ->method('getId')
+            ->willReturn(1);
+
+        $this->order->setPayment($payment);
+
+        $this->assertEquals(
+            $this->order->getData(
+                OrderInterface::PAYMENT
+            ),
+            $payment
+        );
+
+        $this->assertFalse(
+            $this->order->hasDataChanges()
+        );
+    }
+
+    public function testSetPaymentNoId()
+    {
+        $this->order->setId(123);
+        $this->order->setDataChanges(false);
+
+        $payment = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $payment->expects($this->once())
+            ->method('setOrder')
+            ->with($this->order)
+            ->willReturnSelf();
+
+        $payment->expects($this->once())
+            ->method('setParentId')
+            ->with(123)
+            ->willReturnSelf();
+
+        $payment->expects($this->any())
+            ->method('getId')
+            ->willReturn(null);
+
+        $this->order->setPayment($payment);
+
+        $this->assertEquals(
+            $this->order->getData(
+                OrderInterface::PAYMENT
+            ),
+            $payment
+        );
+
+        $this->assertTrue(
+            $this->order->hasDataChanges()
+        );
+    }
+
+    public function testSetPaymentNull()
+    {
+        $this->assertEquals(null, $this->order->setPayment(null));
+
+        $this->assertEquals(
+            $this->order->getData(
+                OrderInterface::PAYMENT
+            ),
+            null
+        );
+
+        $this->assertTrue(
+            $this->order->hasDataChanges()
+        );
+    }
+
+    public function testResetOrderWillResetPayment()
+    {
+        $payment = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->order->setData(OrderInterface::PAYMENT, $payment);
+        $this->order->reset();
+        $this->assertEquals(
+            $this->order->getData(
+                OrderInterface::PAYMENT
+            ),
+            null
+        );
+
+        $this->assertTrue(
+            $this->order->hasDataChanges()
+        );
+    }
+
     public function notInvoicingStatesProvider()
     {
         return [
diff --git a/app/code/Magento/Sales/etc/module.xml b/app/code/Magento/Sales/etc/module.xml
index 19956e89184471dfb60b25b58e5ccba168e4e33d..88d6e25d31fb6c4ed9777595296e969028b154f2 100644
--- a/app/code/Magento/Sales/etc/module.xml
+++ b/app/code/Magento/Sales/etc/module.xml
@@ -6,7 +6,7 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
-    <module name="Magento_Sales" setup_version="2.0.2">
+    <module name="Magento_Sales" setup_version="2.0.3">
         <sequence>
             <module name="Magento_Rule"/>
             <module name="Magento_Catalog"/>
diff --git a/app/code/Magento/Sales/view/adminhtml/templates/order/address/form.phtml b/app/code/Magento/Sales/view/adminhtml/templates/order/address/form.phtml
index 1a8985d2c3ccfb37782222bcd281f60509a54bcf..b2b7abf77acc9a938e7d0a6329ef05ca8aa6dd72 100644
--- a/app/code/Magento/Sales/view/adminhtml/templates/order/address/form.phtml
+++ b/app/code/Magento/Sales/view/adminhtml/templates/order/address/form.phtml
@@ -18,7 +18,7 @@
         <span><?php /* @escapeNotVerified */ echo $block->getHeaderText() ?></span>
     </legend>
     <br>
-    <div class="form-inline">
+    <div class="form-inline" data-mage-init='{"Magento_Sales/order/edit/address/form":{}}'>
         <?php echo $block->getForm()->toHtml() ?>
     </div>
 </fieldset>
diff --git a/app/code/Magento/Sales/view/adminhtml/web/order/edit/address/form.js b/app/code/Magento/Sales/view/adminhtml/web/order/edit/address/form.js
new file mode 100644
index 0000000000000000000000000000000000000000..bdcb2cc8a574601d78ba7ae7ed70d7b3030108ba
--- /dev/null
+++ b/app/code/Magento/Sales/view/adminhtml/web/order/edit/address/form.js
@@ -0,0 +1,34 @@
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+define([
+    'jquery'
+], function ($) {
+    'use strict';
+
+    /**
+     * Currently Magento App stores both  region_id and region (as text) values.
+     * To prevent missing region (as text) we need to copy it in hidden field.
+     * @param {Array} config
+     * @param {String} element
+     */
+    return function (config, element) {
+        var form = $(element),
+            regionId = form.find('#region_id'),
+
+            /**
+             * Set region callback
+             */
+            setRegion = function () {
+                form.find('#region').val(regionId.filter(':visible').find(':selected').text());
+            };
+
+        if (regionId.is('visible')) {
+            setRegion();
+        }
+
+        regionId.on('change', setRegion);
+        form.find('#country_id').on('change', setRegion);
+    };
+});
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 bf62f4c5c3a4ed07fd649573c5108fdfaf9e8387..cd3b81593734ffbfe49c4669ef9366785a09bdeb 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
@@ -8,7 +8,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
     <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"/>
+            <block class="Magento\Sales\Block\Order\Recent" name="customer_account_dashboard_top" template="order/recent.phtml"/>
         </referenceContainer>
     </body>
 </page>
diff --git a/app/code/Magento/SalesRule/view/adminhtml/ui_component/sales_rule_form.xml b/app/code/Magento/SalesRule/view/adminhtml/ui_component/sales_rule_form.xml
index a9a682be3194cbf91234dbcb837c394dc8b385fd..dea387e465685bb846e0368ba4f32f35e6531832 100644
--- a/app/code/Magento/SalesRule/view/adminhtml/ui_component/sales_rule_form.xml
+++ b/app/code/Magento/SalesRule/view/adminhtml/ui_component/sales_rule_form.xml
@@ -51,7 +51,7 @@
     <fieldset name="general">
         <argument name="data" xsi:type="array">
             <item name="config" xsi:type="array">
-                <item name="label" xsi:type="string">Currently Active</item>
+                <item name="label" xsi:type="string" translate="true">Currently Active</item>
                 <item name="additionalClasses" xsi:type="string">fieldset-schedule</item>
             </item>
         </argument>
diff --git a/app/code/Magento/Theme/view/adminhtml/page_layout/admin-1column.xml b/app/code/Magento/Theme/view/adminhtml/page_layout/admin-1column.xml
index 51684b30fac9777de069a3e5207ff1ab060cf47d..570f5322e9eb95881ba29f6e6abac446e5a5d56c 100644
--- a/app/code/Magento/Theme/view/adminhtml/page_layout/admin-1column.xml
+++ b/app/code/Magento/Theme/view/adminhtml/page_layout/admin-1column.xml
@@ -17,9 +17,9 @@
                     <container name="global.notices" as="global_notices" after="notification.window"/>
                 </container>
 
-                <container name="header" after="global.notices" htmlTag="header" htmlClass="page-header"/>
+                <container name="header" htmlTag="header" htmlClass="page-header"/>
                 <container name="page.menu" as="page.menu" after="header"/>
-                <container name="page.breadcrumbs" after="notifications" as="page.breadcrumbs"/>
+                <container name="page.breadcrumbs" as="page.breadcrumbs"/>
 
                 <container name="page.formkey" as="page.formkey"/>
 
diff --git a/app/code/Magento/Theme/view/adminhtml/page_layout/admin-2columns-left.xml b/app/code/Magento/Theme/view/adminhtml/page_layout/admin-2columns-left.xml
index 62dc716817221eda59c8bc0bc1900639c5c91042..0c662a0d467da9cdd41b7e997dc3b9a7a8fde97f 100644
--- a/app/code/Magento/Theme/view/adminhtml/page_layout/admin-2columns-left.xml
+++ b/app/code/Magento/Theme/view/adminhtml/page_layout/admin-2columns-left.xml
@@ -17,9 +17,9 @@
                     <container name="global.notices" as="global_notices" after="notification.window"/>
                 </container>
 
-                <container name="header" after="global.notices" htmlTag="header" htmlClass="page-header"/>
+                <container name="header" htmlTag="header" htmlClass="page-header"/>
                 <container name="page.menu" as="page.menu" after="header"/>
-                <container name="page.breadcrumbs" after="notifications" as="page.breadcrumbs"/>
+                <container name="page.breadcrumbs" as="page.breadcrumbs"/>
 
                 <container name="page.formkey" as="page.formkey"/>
 
diff --git a/app/code/Magento/Theme/view/adminhtml/ui_component/design_config_form.xml b/app/code/Magento/Theme/view/adminhtml/ui_component/design_config_form.xml
index 696449889d6b28dd0096fbd1dfc237e63ab6fd19..ace2babc100d35fca9c4aabce774c41ca5afb295 100644
--- a/app/code/Magento/Theme/view/adminhtml/ui_component/design_config_form.xml
+++ b/app/code/Magento/Theme/view/adminhtml/ui_component/design_config_form.xml
@@ -188,7 +188,7 @@
             <field name="header_logo_width">
                 <argument name="data" xsi:type="array">
                     <item name="config" xsi:type="array">
-                        <item name="label" xsi:type="string" translate="true">Logo Image Width</item>
+                        <item name="label" xsi:type="string" translate="true">Logo Attribute Width</item>
                         <item name="dataType" xsi:type="string">number</item>
                         <item name="formElement" xsi:type="string">input</item>
                         <item name="dataScope" xsi:type="string">header_logo_width</item>
@@ -201,7 +201,7 @@
             <field name="header_logo_height">
                 <argument name="data" xsi:type="array">
                     <item name="config" xsi:type="array">
-                        <item name="label" xsi:type="string" translate="true">Logo Image Height</item>
+                        <item name="label" xsi:type="string" translate="true">Logo Attribute Height</item>
                         <item name="dataType" xsi:type="string">number</item>
                         <item name="formElement" xsi:type="string">input</item>
                         <item name="dataScope" xsi:type="string">header_logo_height</item>
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js b/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
index b3db5d11b98a51bc166082a10ae351949f317d9c..01c8ef29029a9ef34f82885e3efbada75774a88b 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
@@ -16,6 +16,7 @@ define([
         defaults: {
             elementSelector: 'textarea',
             value: '',
+            $wysiwygEditorButton: '',
             links: {
                 value: '${ $.provider }:${ $.dataScope }'
             },
@@ -23,7 +24,10 @@ define([
             elementTmpl: 'ui/form/element/wysiwyg',
             content:        '',
             showSpinner:    false,
-            loading:        false
+            loading:        false,
+            listens: {
+                disabled: 'setDisabled'
+            }
         },
 
         /**
@@ -34,6 +38,13 @@ define([
             this._super()
                 .initNodeListener();
 
+            $.async({
+                component: this,
+                selector: 'button'
+            }, function (element) {
+                this.$wysiwygEditorButton = $(element);
+            }.bind(this));
+
             return this;
         },
 
@@ -69,6 +80,26 @@ define([
             $(node).bindings({
                 value: this.value
             });
+        },
+
+        /**
+         * Set disabled property to wysiwyg component
+         *
+         * @param {Boolean} status
+         */
+        setDisabled: function (status) {
+            this.$wysiwygEditorButton.attr('disabled', status);
+
+            /* eslint-disable no-undef */
+            if (tinyMCE) {
+                _.each(tinyMCE.activeEditor.controlManager.controls, function (property, index, controls) {
+                    controls[property].setDisabled(status);
+                });
+
+                tinyMCE.activeEditor.getBody().setAttribute('contenteditable', !status);
+            }
+
+            /* eslint-enable  no-undef*/
         }
     });
 });
diff --git a/app/code/Magento/Ui/view/base/web/js/grid/resize.js b/app/code/Magento/Ui/view/base/web/js/grid/resize.js
index bad2061ec763562aa8bd927c9e6ba02911be4649..f7edde0ea47c422e48035f8254356edaa9091e46 100644
--- a/app/code/Magento/Ui/view/base/web/js/grid/resize.js
+++ b/app/code/Magento/Ui/view/base/web/js/grid/resize.js
@@ -261,11 +261,10 @@ define([
          */
         initResizableElement: function (column) {
             var model = ko.dataFor(column),
-                ctx = ko.contextFor(column),
-                tempalteDragElement = '<div class="' + ctx.$parent.resizeConfig.classResize + '"></div>';
+                templateDragElement = '<div class="' + this.resizableElementClass + '"></div>';
 
             if (_.isUndefined(model.resizeEnabled) || model.resizeEnabled) {
-                $(column).append(tempalteDragElement);
+                $(column).append(templateDragElement);
 
                 return true;
             }
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 6c4156291d3219fdb96552feb9218181db4c32e7..d26590e617c163cd00d6bce47f56574172de8b67 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml
+++ b/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml
@@ -29,7 +29,7 @@
         <move element="page.title" before="-" destination="header.inner.left" />
         <move element="user" before="-" destination="header.inner.right" />
         <move element="notification.messages" after="user" destination="header.inner.right" />
-        <move element="global.search" after="notification.messages" destination="header.inner.right" />
+        <move element="global.search" destination="header.inner.right" />
 
     </body>
 </page>
diff --git a/app/design/adminhtml/Magento/backend/Magento_Integration/web/css/source/_module.less b/app/design/adminhtml/Magento/backend/Magento_Integration/web/css/source/_module.less
new file mode 100644
index 0000000000000000000000000000000000000000..3527cb48759e89a388ac355480c132adb0e7dece
--- /dev/null
+++ b/app/design/adminhtml/Magento/backend/Magento_Integration/web/css/source/_module.less
@@ -0,0 +1,79 @@
+// /**
+//  * Copyright © 2016 Magento. All rights reserved.
+//  * See COPYING.txt for license details.
+//  */
+
+.adminhtml-integration-index {
+    .data-grid {
+        .action {
+            &:extend(.abs-action-reset all);
+
+            &[disabled] {
+                color: @color-gray-light2;
+                cursor: not-allowed;
+                opacity: 0.6;
+            }
+
+            &:hover {
+                &:before {
+                    color: @color-gray-middle3;
+                }
+            }
+
+            &:before {
+                &:extend(.abs-icon all);
+            }
+
+            &.edit {
+                &:before {
+                    content: @icon-edit__content;
+                }
+            }
+
+            &.info {
+                &:before {
+                    content: @icon-info__content;
+                }
+            }
+
+            &.delete {
+                &:before {
+                    content: @icon-delete__content;
+                }
+            }
+        }
+    }
+
+    .security-notice {
+        color: @color-red11;
+        font-size: @font-size__tiny;
+        margin-left: 1.5rem;
+        vertical-align: middle;
+
+        &:before {
+            &:extend(.abs-icon all);
+            content: @icon-warning__content;
+            margin-right: @indent__xs;
+        }
+    }
+
+    input[readonly] {
+        cursor: copy;
+    }
+
+    .ui-dialog {
+        .ui-dialog-buttonpane {
+            float: none;
+
+            .ui-dialog-buttonset {
+                text-align: right;
+            }
+        }
+    }
+
+    .no-close {
+        .ui-dialog-titlebar-close {
+            display: none;
+        }
+    }
+}
diff --git a/app/design/adminhtml/Magento/backend/web/css/styles-old.less b/app/design/adminhtml/Magento/backend/web/css/styles-old.less
index 9dbb6a860be023cf96bea1eec0184999f7e89422..166baeb788a4a9e9a81f8d7a3ea7f3ff50e42dfd 100644
--- a/app/design/adminhtml/Magento/backend/web/css/styles-old.less
+++ b/app/design/adminhtml/Magento/backend/web/css/styles-old.less
@@ -756,10 +756,6 @@
         display: none;
     }
 
-    label {
-        display: inline-block;
-    }
-
     label > input[type="radio"],
     label > input[type="checkbox"] {
         margin: -3px 3px 0 0;
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
index a7850c22dac19d2167fee48698f89c2532feb927..512ec326052272907de276af6299b53d26cc8265 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
@@ -276,6 +276,7 @@
                     text-align: center;
                     white-space: nowrap;
                     width: 33%;
+
                     &:before {
                         content: attr(data-th) ':';
                         display: block;
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 9672c4ce214dc42fc1db55018b5ec81e6e617517..4453309461d020b96bccb033a18c92f26fa11e33 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
@@ -41,7 +41,7 @@
                 .lib-font-size(18);
             }
         }
-    
+
         .fieldset {
             .lib-form-hasrequired(bottom);
             &:after {
@@ -49,35 +49,35 @@
             }
         }
     }
-    
+
     .block-addresses-list {
         .items.addresses {
             > .item {
                 margin-bottom: @indent__base;
-    
+
                 &:last-child {
                     margin-bottom: 0;
                 }
             }
         }
     }
-    
+
     .form-address-edit {
         #region_id {
             display: none;
         }
-    
+
         .actions-toolbar .action.primary {
             &:extend(.abs-button-l all);
         }
     }
-    
+
     .form-edit-account {
         .fieldset.password {
             display: none;
         }
     }
-    
+
     .box-billing-address,
     .box-shipping-address,
     .box-information,
@@ -96,43 +96,43 @@
             h2 {
                 margin-top: 0;
             }
-    
+
             .toolbar {
                 text-align: center;
                 .limiter-options {
                     width: auto;
                 }
             }
-    
+
             .limiter {
                 >.label {
                     &:extend(.abs-visually-hidden all);
                 }
             }
-    
+
             .block:not(.widget) {
                 &:extend(.abs-account-blocks all);
             }
         }
-    
+
         .sidebar-additional {
             margin-top: 40px;
         }
-    
+
         .table-wrapper {
             &:last-child {
                 margin-bottom: 0;
             }
-    
+
             .action {
                 margin-right: 15px;
-    
+
                 &:last-child {
                     margin-right: 0;
                 }
             }
         }
-    
+
         .table-return-items {
             .qty {
                 .input-text {
@@ -141,7 +141,7 @@
             }
         }
     }
-    
+
     //  Checkout address (create shipping address)
     .field.street {
         .field.additional {
@@ -214,10 +214,10 @@
                 margin-bottom: 0;
             }
         }
-    
+
         .title {
             margin-bottom: @indent__s;
-    
+
             strong {
                 .lib-heading(h4);
                 .column.main & {
@@ -272,42 +272,42 @@
             z-index: -1;
         }
 
-        .password-strength-meter-0 & {
+        .password-none & {
             &:before {
                 background-color: @_password-default;
                 width: 100%;
             }
         }
 
-        .password-strength-meter-1 & {
+        .password-weak & {
             &:before {
                 background-color: @_password-weak;
                 width: 25%;
             }
         }
 
-        .password-strength-meter-2 & {
+        .password-medium & {
             &:before {
                 background-color: @_password-medium;
                 width: 50%;
             }
         }
 
-        .password-strength-meter-3 & {
+        .password-strong & {
             &:before {
                 background-color: @_password-strong;
                 width: 75%;
             }
         }
 
-        .password-strength-meter-4 & {
+        .password-very-strong & {
             &:before {
                 background-color: @_password-very-strong;
                 width: 100%;
             }
         }
     }
-    
+
     .control.captcha-image {
         .lib-css(margin-top, @indent__s);
 
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 450de45c9152ec7a14e0bb0a9bf9f73aa458795a..59ee7d7dcc472ec6576e939cdcc53a86474d1164 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
@@ -18,6 +18,9 @@
 & when (@media-common = true) {
     .gift-message {
         .field {
+            &:extend(.abs-clearfix all);
+            margin-bottom: @indent__base;
+
             .label {
                 .lib-css(color, @gift-message-field-label__color);
                 .lib-css(font-weight, @font-weight__regular);
@@ -27,6 +30,7 @@
 
     .gift-options {
         &:extend(.abs-add-clearfix all);
+
         .actions-toolbar {
             .action-cancel {
                 &:extend(.abs-action-button-as-link all);
@@ -44,6 +48,7 @@
             margin: 0 0 @indent__base;
         }
     }
+
     .gift-summary {
         .actions-toolbar {
             > .secondary {
@@ -56,39 +61,43 @@
         }
     }
 
-    //
-    //  In-table block
-    //  ---------------------------------------------
-
-    .cart.table-wrapper {
-        .gift-content {
-            box-sizing: border-box;
-            clear: left;
-            display: none;
-            float: left;
-            margin: @indent__base 0;
-            text-align: left;
-            width: 100%;
-
-            &._active {
-                display: block;
-            }
-        }
+    .action-gift {
+        &:extend(.cart.table-wrapper .actions-toolbar > .action all);
 
-        .action-gift {
-            &:extend(.cart.table-wrapper .actions-toolbar > .action all);
-            .lib-button-icon(
+        .lib-button-icon(
             @icon-down,
             @_icon-font-size: 32px,
             @_icon-font-line-height: 16px,
             @_icon-font-position: after
-            );
+        );
 
-            &._active {
-                .lib-icon-font-symbol(
+        &.active,
+        &._active {
+            .lib-icon-font-symbol(
                 @icon-up,
                 @_icon-font-position: after
-                );
+            );
+        }
+    }
+
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart {
+        &.table-wrapper {
+            .gift-content {
+                box-sizing: border-box;
+                clear: left;
+                display: none;
+                float: left;
+                margin: @indent__s 0 @indent__base;
+                text-align: left;
+                width: 100%;
+
+                &._active {
+                    display: block;
+                }
             }
         }
     }
@@ -99,6 +108,7 @@
 
     .gift-item-block {
         margin: 0;
+
         &._active {
             .title {
                 .lib-icon-font-symbol(
@@ -109,7 +119,9 @@
         }
 
         .title {
+            .lib-css(font-weight, @font-weight__bold);
             border-radius: 3px;
+
             .lib-button(
             @_button-margin: 20px 0 0,
             @_button-padding: 7px 15px,
@@ -120,7 +132,6 @@
             @_button-icon-font-line-height: 16px,
             @_button-icon-font-position: after
             );
-            .lib-css(font-weight, @font-weight__bold);
 
             &:active {
                 .lib-css(box-shadow, @button__shadow);
@@ -165,41 +176,41 @@
                 clear: left;
             }
         }
-    }
 
-    .order-details-items .order-items {
-        .order-gift-message {
-            &:not(.expanded-content) {
-                &:extend(.abs-hidden);
-            }
+        .order-items {
+            .order-gift-message {
+                &:not(.expanded-content) {
+                    &:extend(.abs-hidden);
+                }
 
-            .action.close {
-                &:extend(.abs-no-display all);
+                .action.close {
+                    &:extend(.abs-no-display all);
+                }
             }
-        }
 
-        .action.show {
-            .lib-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
-            );
-            padding-right: @indent__base;
-            position: relative;
+            .action.show {
+                .lib-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
+                );
+                padding-right: @indent__base;
+                position: relative;
 
-            &:after {
-                position: absolute;
-                right: 0;
-                top: -4px;
-            }
+                &:after {
+                    position: absolute;
+                    right: 0;
+                    top: -4px;
+                }
 
-            &.expanded {
-                .lib-icon-font-symbol(
-                @_icon-font-content: @icon-up,
-                @_icon-font-position: after
-                );
+                &.expanded {
+                    .lib-icon-font-symbol(
+                    @_icon-font-content: @icon-up,
+                    @_icon-font-position: after
+                    );
+                }
             }
         }
     }
@@ -226,22 +237,26 @@
     }
 
     .gift-item-block {
-        border-bottom: 0;
         .lib-css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+        border-bottom: 0;
     }
 
-    .cart.table-wrapper {
-        .gift-content {
-            margin-right: -@indent__s;
+    .cart {
+        &.table-wrapper {
+            .gift-content {
+                margin-right: -@indent__s;
+            }
         }
     }
 }
 
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__s) {
-    .cart.table-wrapper {
-        .gift-content {
-            border-bottom: @border-width__base solid @border-color__base;
-            margin-bottom: @indent__base;
+    .cart {
+        &.table-wrapper {
+            .gift-content {
+                border-bottom: @border-width__base solid @border-color__base;
+                margin-bottom: @indent__base;
+            }
         }
     }
 }
@@ -253,11 +268,7 @@
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .gift-message {
         .field {
-            &:extend(.abs-clearfix all);
-            .lib-form-field-type-revert(
-            @_type: inline,
-            @_type-inline-label-align: left
-            );
+            margin-bottom: @indent__base;
         }
     }
 
@@ -323,9 +334,22 @@
     //  In-table block
     //  ---------------------------------------------
 
-    .cart.table-wrapper {
-        .action-gift {
-            float: left;
+    .cart {
+        &.table-wrapper {
+            .action-gift {
+                float: left;
+            }
+        }
+    }
+
+    //
+    //  Multiple Shipping Checkout
+    //  ---------------------------------------------
+
+    .order-options,
+    .table-order-review {
+        .gift-wrapping {
+            max-width: 50%;
         }
     }
 }
diff --git a/app/design/frontend/Magento/blank/Magento_GiftWrapping/web/css/source/_module.less b/app/design/frontend/Magento/blank/Magento_GiftWrapping/web/css/source/_module.less
index e2b3771ac38863afddd2e4420d6b2337afb088c6..b4665dbd62e965e3bc5925ea2e47ece7bb063f28 100644
--- a/app/design/frontend/Magento/blank/Magento_GiftWrapping/web/css/source/_module.less
+++ b/app/design/frontend/Magento/blank/Magento_GiftWrapping/web/css/source/_module.less
@@ -25,6 +25,17 @@
 //  _____________________________________________
 
 & when (@media-common = true) {
+    .gift-wrapping {
+        .label {
+            .lib-css(margin, @form-field-type-label-block__margin);
+            display: inline-block;
+        }
+
+        .field {
+            margin-bottom: @indent__s;
+        }
+    }
+
     .gift-wrapping-info {
         .lib-css(font-weight, @font-weight__light);
         font-size: @font-size__l;
@@ -147,6 +158,8 @@
 
     .gift-summary,
     .gift-options {
+        &:extend(.abs-adjustment-incl-excl-tax all);
+
         .price-box {
             margin-left: 22px;
         }
@@ -160,8 +173,30 @@
                 font-weight: @font-weight__bold;
             }
         }
+    }
 
-        &:extend(.abs-adjustment-incl-excl-tax all);
+    //
+    //  Multiple Shipping Checkout
+    //  ---------------------------------------------
+
+    .order-options {
+        .item {
+            padding-bottom: @indent__base;
+        }
+
+        .product {
+            &:extend(.abs-add-clearfix all);
+            margin-bottom: @indent__s;
+        }
+
+        .product-image-container {
+            float: left;
+            padding-right: @indent__s;
+        }
+
+        .gift-wrapping {
+            margin-bottom: @indent__s;
+        }
     }
 }
 
@@ -217,18 +252,21 @@
         }
     }
 
-    .gift-wrapping {
-        box-sizing: border-box;
-        float: left;
-        padding-right: @indent__base;
-        width: 50%;
-
-        & + .gift-message {
-            .lib-css(border-left, @gift-wrapping__border-width solid @gift-wrapping__border-color);
+    .gift-options-cart-item,
+    .cart-gift-item {
+        .gift-wrapping {
             box-sizing: border-box;
             float: left;
-            padding-left: 4.5rem;
+            padding-right: @indent__base;
             width: 50%;
+
+            & + .gift-message {
+                .lib-css(border-left, @gift-wrapping__border-width solid @gift-wrapping__border-color);
+                box-sizing: border-box;
+                float: left;
+                padding-left: 4.5rem;
+                width: 50%;
+            }
         }
     }
 }
diff --git a/app/design/frontend/Magento/luma/Magento_Customer/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_Customer/web/css/source/_module.less
index 5eaccc85a2c0d7a8d6f38e65cb478f313c64ebee..4ad7af8c4e8ba9eb362e03013376d51d89a68852 100644
--- a/app/design/frontend/Magento/luma/Magento_Customer/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_Customer/web/css/source/_module.less
@@ -254,35 +254,35 @@
             z-index: -1;
         }
 
-        .password-strength-meter-0 & {
+        .password-none & {
             &:before {
                 background-color: @_password-default;
                 width: 100%;
             }
         }
 
-        .password-strength-meter-1 & {
+        .password-weak & {
             &:before {
                 background-color: @_password-weak;
                 width: 25%;
             }
         }
 
-        .password-strength-meter-2 & {
+        .password-medium & {
             &:before {
                 background-color: @_password-medium;
                 width: 50%;
             }
         }
 
-        .password-strength-meter-3 & {
+        .password-strong & {
             &:before {
                 background-color: @_password-strong;
                 width: 75%;
             }
         }
 
-        .password-strength-meter-4 & {
+        .password-very-strong & {
             &:before {
                 background-color: @_password-very-strong;
                 width: 100%;
diff --git a/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
index 0b00a22ce92c2e8885977e350ff863295f3440c4..6a579f19583c1020664e88fa40be48494b2d82ab 100644
--- a/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
@@ -27,6 +27,9 @@
 & when (@media-common = true) {
     .gift-message {
         .field {
+            &:extend(.abs-clearfix all);
+            margin-bottom: @indent__base;
+
             .label {
                 .lib-css(color, @gift-message-field-label__color);
                 .lib-css(font-weight, @font-weight__regular);
@@ -34,18 +37,6 @@
         }
     }
 
-    .cart.table-wrapper {
-        .item-gift {
-            &._active {
-                .lib-css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
-            }
-
-            .action {
-                margin-right: 0;
-            }
-        }
-    }
-
     .gift-options {
         margin: @indent__base 0;
 
@@ -70,6 +61,8 @@
 
     .gift-summary {
         position: relative;
+        margin-top: @indent__s;
+
         .actions-toolbar {
             > .secondary {
                 .action {
@@ -92,6 +85,7 @@
             @_icon-font-color-active: @minicart-icons-color
             );
         }
+
         .action-delete {
             .lib-icon-font-symbol(
             @_icon-font-content: @icon-trash
@@ -99,6 +93,28 @@
         }
     }
 
+    .action-gift {
+        &:extend(.abs-action-button-as-link all);
+
+        .lib-icon-font(
+            @icon-down,
+            @_icon-font-size: 1.2rem,
+            @_icon-font-line-height: 20px,
+            @_icon-font-color: @minicart-icons-color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-color-active: @minicart-icons-color,
+            @_icon-font-margin: 0 0 0 @indent__s,
+            @_icon-font-position: after
+        );
+
+        &.active,
+        &._active {
+            &:after {
+                content: @icon-up;
+            }
+        }
+    }
+
     .gift-summary,
     .cart.table-wrapper .gift-summary {
         .actions-toolbar {
@@ -113,18 +129,30 @@
     //  In-table block
     //  ---------------------------------------------
 
-    .cart.table-wrapper {
-        .gift-content {
-            box-sizing: border-box;
-            clear: left;
-            display: none;
-            float: left;
-            margin-right: -100%;
-            padding: @indent__base 0;
-            width: 100%;
+    .cart {
+        &.table-wrapper {
+            .gift-content {
+                box-sizing: border-box;
+                clear: left;
+                display: none;
+                float: left;
+                margin-right: -100%;
+                padding: @indent__base 0;
+                width: 100%;
 
-            &._active {
-                display: block;
+                &._active {
+                    display: block;
+                }
+            }
+
+            .item-gift {
+                &._active {
+                    .lib-css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+                }
+
+                .action {
+                    margin-right: 0;
+                }
             }
         }
     }
@@ -148,6 +176,10 @@
         .title {
             .lib-css(color, @gift-item-block-title__color);
             cursor: pointer;
+            margin: 0;
+            padding: @indent__s @indent__xl @indent__s 15px;
+            position: relative;
+
             .lib-icon-font(
             @gift-item-block-title-icon__content,
             @_icon-font-size: @gift-item-block-title-icon__font-size,
@@ -158,9 +190,6 @@
             @_icon-font-position: after,
             @_icon-font-display: block
             );
-            margin: 0;
-            padding: @indent__s @indent__xl @indent__s 15px;
-            position: relative;
         }
 
         .content {
@@ -200,9 +229,7 @@
                 }
             }
         }
-    }
 
-    .order-details-items {
         .order-items {
             .order-gift-message {
                 &:not(.expanded-content) {
@@ -216,11 +243,6 @@
         }
     }
 
-    .options-order-container,
-    .options-items-container {
-        margin-bottom: @indent__s;
-    }
-
     .gift-messages-order {
         margin-bottom: @indent__m;
     }
@@ -242,8 +264,8 @@
     }
 
     .gift-item-block {
-        border-bottom: 0;
         .lib-css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+        border-bottom: 0;
 
         .title {
             &:after {
@@ -264,7 +286,21 @@
         padding-right: 7rem;
     }
 
-    .cart.table-wrapper {
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart {
+        &.table-wrapper {
+            .gift-content {
+                border-top: @border-width__base solid @color-gray-light5;
+                margin-right: -@mobile-cart-padding;
+                overflow: hidden;
+                padding-left: @mobile-cart-padding;
+                padding-right: @mobile-cart-padding;
+            }
+        }
+
         .action-gift {
             .lib-icon-font(
             @icon-present,
@@ -274,6 +310,7 @@
             @_icon-font-color: @minicart-icons-color,
             @_icon-font-color-hover: @primary__color,
             @_icon-font-color-active: @minicart-icons-color,
+            @_icon-font-margin: 0,
             @_icon-font-position: after
             );
 
@@ -288,14 +325,6 @@
                 }
             }
         }
-
-        .gift-content {
-            border-top: @border-width__base solid @color-gray-light5;
-            margin-right: -@mobile-cart-padding;
-            overflow: hidden;
-            padding-left: @mobile-cart-padding;
-            padding-right: @mobile-cart-padding;
-        }
     }
 
     .gift-options-cart-item {
@@ -311,16 +340,6 @@
 //  _____________________________________________
 
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
-    .gift-message {
-        .field {
-            &:extend(.abs-clearfix all);
-            .lib-form-field-type-revert(
-            @_type: inline,
-            @_type-inline-label-align: left
-            );
-        }
-    }
-
     .gift-options {
         position: relative;
         z-index: 1;
@@ -369,6 +388,7 @@
 
     .gift-item-block {
         .title {
+            font-size: 1.6rem;
             padding: @indent__base 0;
         }
     }
@@ -384,33 +404,19 @@
     //  In-table block
     //  ---------------------------------------------
 
-    .cart.table-wrapper {
-        .action-gift {
-            float: left;
-            .lib-icon-font(
-            @icon-down,
-            @_icon-font-size: 1.2rem,
-            @_icon-font-line-height: 20px,
-            @_icon-font-color: @minicart-icons-color,
-            @_icon-font-color-hover: @primary__color,
-            @_icon-font-color-active: @minicart-icons-color,
-            @_icon-font-margin: 0 0 0 @indent__s,
-            @_icon-font-position: after
-            );
-
-            &._active {
-                &:after {
-                    content: @icon-up;
+    .cart {
+        &.table-wrapper {
+            .gift-options {
+                .actions-toolbar {
+                    clear: both;
+                    padding: 0;
+                    position: static;
                 }
             }
         }
 
-        .gift-options {
-            .actions-toolbar {
-                clear: both;
-                padding: 0;
-                position: static;
-            }
+        .action-gift {
+            float: left;
         }
     }
 
diff --git a/app/design/frontend/Magento/luma/Magento_GiftWrapping/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_GiftWrapping/web/css/source/_module.less
index f751f491a6d4786912b6500598bbc355d36f92ef..858beaefc7d94fc94ae6b5e22a123292425bda54 100644
--- a/app/design/frontend/Magento/luma/Magento_GiftWrapping/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_GiftWrapping/web/css/source/_module.less
@@ -25,6 +25,17 @@
 //  _____________________________________________
 
 & when (@media-common = true) {
+    .gift-wrapping {
+        .label {
+            .lib-css(margin, @form-field-type-label-block__margin);
+            display: inline-block;
+        }
+
+        .field {
+            margin-bottom: @indent__s;
+        }
+    }
+
     .gift-wrapping-info {
         .lib-css(font-weight, @font-weight__light);
         font-size: @font-size__l;
@@ -99,6 +110,7 @@
         .action-remove {
             &:extend(.abs-action-button-as-link all);
             margin: -@indent__xs 0 0 @indent__xs;
+
             .lib-icon-font(
             @icon-trash,
             @_icon-font-size: 18px,
@@ -130,9 +142,15 @@
     }
 
     .opc-wrapper {
-        .fieldset.gift-message .field.gift-wrapping {
-            padding: 0;
-            width: 100%;
+        .fieldset {
+            &.gift-message {
+                .field {
+                    &.gift-wrapping {
+                        padding: 0;
+                        width: 100%;
+                    }
+                }
+            }
         }
     }
 
@@ -140,6 +158,7 @@
     .table-order-items {
         .gift-wrapping {
             margin: @indent__base 0 0;
+
             .title {
                 float: none;
             }
@@ -160,6 +179,8 @@
 
     .gift-summary,
     .gift-options {
+        &:extend(.abs-adjustment-incl-excl-tax all);
+
         .price-box {
             margin-left: 22px;
         }
@@ -173,8 +194,30 @@
                 font-weight: @font-weight__bold;
             }
         }
+    }
 
-        &:extend(.abs-adjustment-incl-excl-tax all);
+    //
+    //  Multiple Shipping Checkout
+    //  ---------------------------------------------
+
+    .order-options {
+        .item {
+            padding-bottom: @indent__base;
+        }
+
+        .product {
+            &:extend(.abs-add-clearfix all);
+            margin-bottom: @indent__s;
+        }
+
+        .product-image-container {
+            float: left;
+            padding-right: @indent__s;
+        }
+
+        .gift-wrapping {
+            margin-bottom: @indent__s;
+        }
     }
 }
 
@@ -183,12 +226,16 @@
 //  _____________________________________________
 
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
-    .gift-wrapping {
-        .lib-css(border-bottom, @gift-wrapping__border-width solid @gift-wrapping__border-color);
-        margin-bottom: @indent__base;
-        padding-bottom: @indent__s;
+    .gift-options-cart-item,
+    .cart-gift-item {
+        .gift-wrapping {
+            .lib-css(border-bottom, @gift-wrapping__border-width solid @gift-wrapping__border-color);
+            margin-bottom: @indent__base;
+            padding-bottom: @indent__s;
+        }
     }
 
+
     .gift-wrapping-list {
         width: 100%;
     }
@@ -238,18 +285,42 @@
 //  _____________________________________________
 
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
-    .gift-wrapping {
-        box-sizing: border-box;
-        float: left;
-        padding-right: @indent__base;
-        width: 50%;
-
-        & + .gift-message {
-            .lib-css(border-left, @gift-wrapping__border-width solid @gift-wrapping__border-color);
+    .gift-options-cart-item,
+    .cart-gift-item {
+        .gift-wrapping {
             box-sizing: border-box;
             float: left;
-            padding-left: 4.5rem;
+            padding-right: @indent__base;
             width: 50%;
+
+            & + .gift-message {
+                .lib-css(border-left, @gift-wrapping__border-width solid @gift-wrapping__border-color);
+                box-sizing: border-box;
+                float: left;
+                padding-left: 4.5rem;
+                width: 50%;
+            }
+        }
+
+        .gift-summary {
+            .regular-price {
+                white-space: nowrap;
+            }
+        }
+
+        .gift-wrapping-name {
+            padding-right: @indent__base;
+        }
+    }
+
+    //
+    //  Multiple Shipping Checkout
+    //  ---------------------------------------------
+
+    .order-options,
+    .table-order-review {
+        .gift-wrapping {
+            max-width: 50%;
         }
     }
 }
diff --git a/composer.json b/composer.json
index e95bd4e1a226d231f72ea191604cdfdf0e06f051..b90db7519b5aa6fabc7839e13918e7d88d8d7c0f 100644
--- a/composer.json
+++ b/composer.json
@@ -41,7 +41,7 @@
         "oyejorge/less.php": "~1.7.0",
         "pelago/emogrifier": "0.1.1",
         "tubalmartin/cssmin": "2.4.8-p4",
-        "magento/magento-composer-installer": "*",
+        "magento/magento-composer-installer": ">=0.1.11",
         "braintree/braintree_php": "3.7.0",
         "symfony/console": "~2.3 <2.7",
         "symfony/event-dispatcher": "~2.1",
diff --git a/composer.lock b/composer.lock
index fa33302ecd436068dc0e6f461ee1728a04e33a90..897f4db750e35c4ad1f6ffb4cb9687520c5b36b7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "aff7fa6dabe298220186da680893030c",
-    "content-hash": "38de5bfd21f69bb1a076b127b3a80d56",
+    "hash": "e447a3cde1c69182cd539976df5284d2",
+    "content-hash": "77f475ee4b3a11984e7cebfd321a1081",
     "packages": [
         {
             "name": "braintree/braintree_php",
@@ -1253,16 +1253,16 @@
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "2a6b8713f8bdb582058cfda463527f195b066110"
+                "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2a6b8713f8bdb582058cfda463527f195b066110",
-                "reference": "2a6b8713f8bdb582058cfda463527f195b066110",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b180b70439dca70049b6b9b7e21d75e6e5d7aca9",
+                "reference": "b180b70439dca70049b6b9b7e21d75e6e5d7aca9",
                 "shasum": ""
             },
             "require": {
@@ -1309,20 +1309,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:11:27"
+            "time": "2016-06-29 05:29:29"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "dee379131dceed90a429e951546b33edfe7dccbb"
+                "reference": "7258ddd6f987053f21fa43d03430580ba54e6096"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/dee379131dceed90a429e951546b33edfe7dccbb",
-                "reference": "dee379131dceed90a429e951546b33edfe7dccbb",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/7258ddd6f987053f21fa43d03430580ba54e6096",
+                "reference": "7258ddd6f987053f21fa43d03430580ba54e6096",
                 "shasum": ""
             },
             "require": {
@@ -1358,20 +1358,20 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2016-04-12 18:01:21"
+            "time": "2016-06-29 05:31:50"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.1.1",
+            "version": "v3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "40d17ed287bf51a2f884c4619ce8ff2a1c5cd219"
+                "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/40d17ed287bf51a2f884c4619ce8ff2a1c5cd219",
-                "reference": "40d17ed287bf51a2f884c4619ce8ff2a1c5cd219",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/8201978de88a9fa0923e18601bb17f1df9c721e7",
+                "reference": "8201978de88a9fa0923e18601bb17f1df9c721e7",
                 "shasum": ""
             },
             "require": {
@@ -1407,20 +1407,20 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2016-05-13 18:06:41"
+            "time": "2016-06-29 05:41:56"
         },
         {
             "name": "symfony/process",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "115347d00c342198cdc52a7bd8bc15b5ab43500c"
+                "reference": "89f33c16796415ccfd8bb3cf8d520cbb79899bfe"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/115347d00c342198cdc52a7bd8bc15b5ab43500c",
-                "reference": "115347d00c342198cdc52a7bd8bc15b5ab43500c",
+                "url": "https://api.github.com/repos/symfony/process/zipball/89f33c16796415ccfd8bb3cf8d520cbb79899bfe",
+                "reference": "89f33c16796415ccfd8bb3cf8d520cbb79899bfe",
                 "shasum": ""
             },
             "require": {
@@ -1456,7 +1456,7 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:11:27"
+            "time": "2016-06-29 05:29:29"
         },
         {
             "name": "tedivm/jshrink",
@@ -3105,16 +3105,16 @@
         },
         {
             "name": "fabpot/php-cs-fixer",
-            "version": "v1.11.4",
+            "version": "v1.11.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
-                "reference": "eeb280e909834603ffe03524dbe0066e77c83084"
+                "reference": "d3d08b76753092a232a4d8c3b94095ac06898719"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/eeb280e909834603ffe03524dbe0066e77c83084",
-                "reference": "eeb280e909834603ffe03524dbe0066e77c83084",
+                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d3d08b76753092a232a4d8c3b94095ac06898719",
+                "reference": "d3d08b76753092a232a4d8c3b94095ac06898719",
                 "shasum": ""
             },
             "require": {
@@ -3128,8 +3128,12 @@
                 "symfony/process": "~2.3|~3.0",
                 "symfony/stopwatch": "~2.5|~3.0"
             },
+            "conflict": {
+                "hhvm": "<3.9"
+            },
             "require-dev": {
-                "satooshi/php-coveralls": "0.7.*@dev"
+                "phpunit/phpunit": "^4.5|^5",
+                "satooshi/php-coveralls": "^0.7.1"
             },
             "bin": [
                 "php-cs-fixer"
@@ -3156,7 +3160,7 @@
             ],
             "description": "A tool to automatically fix PHP code style",
             "abandoned": "friendsofphp/php-cs-fixer",
-            "time": "2016-06-07 07:51:27"
+            "time": "2016-07-06 22:49:35"
         },
         {
             "name": "lusitanian/oauth",
@@ -4189,16 +4193,16 @@
         },
         {
             "name": "symfony/config",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "a2edd59c2163c65747fc3f35d132b5a39266bd05"
+                "reference": "0926e69411eba491803dbafb9f1f233e2ced58d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/a2edd59c2163c65747fc3f35d132b5a39266bd05",
-                "reference": "a2edd59c2163c65747fc3f35d132b5a39266bd05",
+                "url": "https://api.github.com/repos/symfony/config/zipball/0926e69411eba491803dbafb9f1f233e2ced58d0",
+                "reference": "0926e69411eba491803dbafb9f1f233e2ced58d0",
                 "shasum": ""
             },
             "require": {
@@ -4238,20 +4242,20 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:11:27"
+            "time": "2016-06-29 05:31:50"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "2d05009d890cf1139988ff059b5b2e0eb280ed13"
+                "reference": "2dd85de8216079d1360b2b14988cd5cdbbb49063"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2d05009d890cf1139988ff059b5b2e0eb280ed13",
-                "reference": "2d05009d890cf1139988ff059b5b2e0eb280ed13",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2dd85de8216079d1360b2b14988cd5cdbbb49063",
+                "reference": "2dd85de8216079d1360b2b14988cd5cdbbb49063",
                 "shasum": ""
             },
             "require": {
@@ -4301,20 +4305,20 @@
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:11:27"
+            "time": "2016-06-29 05:31:50"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.1.1",
+            "version": "v3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "e7238f98c90b99e9b53f3674a91757228663b04d"
+                "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/e7238f98c90b99e9b53f3674a91757228663b04d",
-                "reference": "e7238f98c90b99e9b53f3674a91757228663b04d",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/bb42806b12c5f89db4ebf64af6741afe6d8457e1",
+                "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1",
                 "shasum": ""
             },
             "require": {
@@ -4350,20 +4354,20 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:42:41"
+            "time": "2016-06-29 05:41:56"
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.8.7",
+            "version": "v2.8.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "815fabf3f48c7d1df345a69d1ad1a88f59757b34"
+                "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/815fabf3f48c7d1df345a69d1ad1a88f59757b34",
-                "reference": "815fabf3f48c7d1df345a69d1ad1a88f59757b34",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/dba4bb5846798cd12f32e2d8f3f35d77045773c8",
+                "reference": "dba4bb5846798cd12f32e2d8f3f35d77045773c8",
                 "shasum": ""
             },
             "require": {
@@ -4399,7 +4403,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2016-06-06 11:11:27"
+            "time": "2016-06-29 05:29:29"
         },
         {
             "name": "theseer/fdomdocument",
diff --git a/lib/internal/Magento/Framework/View/Layout/Data/Structure.php b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php
index dcd01d423cdb48b64ef05198df8f6d27ad80f381..0612231ad5cc896b1daf24c3772ce6057c44b825 100644
--- a/lib/internal/Magento/Framework/View/Layout/Data/Structure.php
+++ b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php
@@ -119,7 +119,7 @@ class Structure extends DataStructure
                 $siblingParentName = $this->getParentId($sibling);
                 if ($parentName !== $siblingParentName) {
                     if ($this->state->getMode() === State::MODE_DEVELOPER) {
-                        $this->logger->critical(
+                        $this->logger->info(
                             "Broken reference: the '{$childName}' tries to reorder itself towards '{$sibling}', but " .
                             "their parents are different: '{$parentName}' and '{$siblingParentName}' respectively."
                         );
diff --git a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
index 2e0ee3b63dcad103ddcdcc51a36f5930c3d10428..870f147a436342f13b196b430279e631ce60c981 100644
--- a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
+++ b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure/Helper.php
@@ -201,7 +201,7 @@ class Helper
                 $scheduledStructure->setElementToBrokenParentList($key);
 
                 if ($this->state->getMode() === State::MODE_DEVELOPER) {
-                    $this->logger->critical(
+                    $this->logger->info(
                         "Broken reference: the '{$name}' element cannot be added as child to '{$parentName}', " .
                         'because the latter doesn\'t exist'
                     );
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/Layout/Data/StructureTest.php b/lib/internal/Magento/Framework/View/Test/Unit/Layout/Data/StructureTest.php
index a5f00f082402689bd0943245519841c3e930d16b..d9c39373d76d4447f2a81c877e6e9838ab50ea89 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/Layout/Data/StructureTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/Layout/Data/StructureTest.php
@@ -64,7 +64,7 @@ class StructureTest extends \PHPUnit_Framework_TestCase
             ->method('getMode')
             ->willReturn($stateMode);
         $this->loggerMock->expects($loggerExpects)
-            ->method('critical')
+            ->method('info')
             ->with(
                 "Broken reference: the '{$childName}' tries to reorder itself towards '', but " .
                 "their parents are different: '{$parentName}' and '' respectively."
diff --git a/lib/internal/Magento/Framework/View/Test/Unit/Layout/ScheduledStructure/HelperTest.php b/lib/internal/Magento/Framework/View/Test/Unit/Layout/ScheduledStructure/HelperTest.php
index 6cb3a5cfdca8366d5cb439acb0f8ee8c00277b3f..8803392d184f0b329cfe22b5492da83b5136fdf7 100644
--- a/lib/internal/Magento/Framework/View/Test/Unit/Layout/ScheduledStructure/HelperTest.php
+++ b/lib/internal/Magento/Framework/View/Test/Unit/Layout/ScheduledStructure/HelperTest.php
@@ -181,7 +181,7 @@ class HelperTest extends \PHPUnit_Framework_TestCase
             ->method('getMode')
             ->willReturn($stateMode);
         $this->loggerMock->expects($loggerExpects)
-            ->method('critical')
+            ->method('info')
             ->with(
                 "Broken reference: the '{$key}' element cannot be added as child to '{$parentName}', " .
                 'because the latter doesn\'t exist'
diff --git a/lib/web/css/source/lib/_dropdowns.less b/lib/web/css/source/lib/_dropdowns.less
index f3559356c365a616bd2a91c94832de0d881af184..be9cef120a686e378d8ff2f681af666ff0d9d6a8 100644
--- a/lib/web/css/source/lib/_dropdowns.less
+++ b/lib/web/css/source/lib/_dropdowns.less
@@ -253,6 +253,7 @@
         .lib-css(z-index, @_dropdown-list-z-index);
         box-sizing: border-box;
         display: none;
+        position: absolute;
 
         ._lib-dropdown-list-position(
             @_dropdown-list-position-top,
@@ -291,7 +292,6 @@
 
         @{_options-selector} {
             display: block;
-            position: absolute;
         }
     }
 }
diff --git a/lib/web/mage/apply/scripts.js b/lib/web/mage/apply/scripts.js
index 7f059a45ae5cd9acbb7c2c1f330419d8abe9f5a8..3b87f4fd2f40e6330f1577ca8dc2251a9f6a04d3 100644
--- a/lib/web/mage/apply/scripts.js
+++ b/lib/web/mage/apply/scripts.js
@@ -88,7 +88,7 @@ define([
 
     /**
      * Parses 'script' tags with a custom type attribute and moves it's data
-     * to a 'data-mage-init' attribute of an elemennt found by provided selector.
+     * to a 'data-mage-init' attribute of an element found by provided selector.
      * Note: All found script nodes will be removed from DOM.
      *
      * @returns {Array} An array of components not assigned to the specific element.
diff --git a/lib/web/mage/menu.js b/lib/web/mage/menu.js
index a3f4ad36d0afa39f911f027754afab67e09925d7..4562285654c70f8b991e89866dfc82977842dd64 100644
--- a/lib/web/mage/menu.js
+++ b/lib/web/mage/menu.js
@@ -18,7 +18,9 @@ define([
         options: {
             responsive: false,
             expanded: false,
-            delay: 300
+            showDelay: 42,
+            hideDelay: 300,
+            mediaBreakpoint: '(max-width: 768px)'
         },
         _create: function () {
             var self = this;
@@ -31,7 +33,6 @@ define([
 
         _init: function () {
             this._super();
-            this.delay = this.options.delay;
 
             if (this.options.expanded === true) {
                 this.isExpanded();
@@ -39,7 +40,7 @@ define([
 
             if (this.options.responsive === true) {
                 mediaCheck({
-                    media: '(max-width: 640px)',
+                    media: this.options.mediaBreakpoint,
                     entry: $.proxy(function () {
                         this._toggleMobileMode();
                     }, this),
@@ -70,23 +71,25 @@ define([
         },
 
         toggle: function () {
-            if ($('html').hasClass('nav-open')) {
-                $('html').removeClass('nav-open');
+            var html = $('html');
+
+            if (html.hasClass('nav-open')) {
+                html.removeClass('nav-open');
                 setTimeout(function () {
-                    $('html').removeClass('nav-before-open');
-                }, 300);
+                    html.removeClass('nav-before-open');
+                }, this.options.hideDelay);
             } else {
-                $('html').addClass('nav-before-open');
+                html.addClass('nav-before-open');
                 setTimeout(function () {
-                    $('html').addClass('nav-open');
-                }, 42);
+                    html.addClass('nav-open');
+                }, this.options.showDelay);
             }
         },
 
         //Add class for expanded option
         isExpanded: function () {
             var subMenus = this.element.find(this.options.menus),
-                expandedMenus = subMenus.find('ul');
+                expandedMenus = subMenus.find(this.options.menus);
 
             expandedMenus.addClass('expanded');
         },
@@ -105,7 +108,7 @@ define([
                 return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
             }
 
-            if (this.active.closest('ul').attr('aria-expanded') != 'true') {
+            if (this.active.closest(this.options.menus).attr('aria-expanded') != 'true') {
 
                 switch (event.keyCode) {
                     case $.ui.keyCode.PAGE_UP:
@@ -334,15 +337,16 @@ define([
                 },
                 "mouseenter .ui-menu-item": function (event) {
                     var target = $(event.currentTarget),
+                        submenu = this.options.menus,
                         ulElement,
                         ulElementWidth,
                         width,
                         targetPageX,
                         rightBound;
 
-                    if (target.has('ul')) {
-                        ulElement = target.find('ul');
-                        ulElementWidth = target.find('ul').outerWidth(true);
+                    if (target.has(submenu)) {
+                        ulElement = target.find(submenu);
+                        ulElementWidth = ulElement.outerWidth(true);
                         width = target.outerWidth() * 2;
                         targetPageX = target.offset().left;
                         rightBound = $(window).width();
diff --git a/lib/web/mage/validation.js b/lib/web/mage/validation.js
index 209db5d024acc2d37f1c90db38117d37feca14fe..aff3141c2d4d1287ae2a801fd2d411bfa41b231a 100644
--- a/lib/web/mage/validation.js
+++ b/lib/web/mage/validation.js
@@ -1476,8 +1476,8 @@
             errorPlacement: function (error, element) {
                 var errorPlacement = element;
                 // logic for date-picker error placement
-                if (element.hasClass('hasDatepicker')) {
-                    errorPlacement = element.siblings('img');
+                if (element.hasClass('_has-datepicker')) {
+                    errorPlacement = element.siblings('button');
                 }
                 // logic for field wrapper
                 var fieldWrapper = element.closest('.addon');
@@ -1488,6 +1488,10 @@
                 if (element.is(':checkbox') || element.is(':radio')) {
                     errorPlacement = element.siblings('label').last();
                 }
+                //logic for control with tooltip
+                if (element.siblings('.tooltip').length) {
+                     errorPlacement = element.siblings('.tooltip');
+                }
                 errorPlacement.after(error);
             }
         },
diff --git a/setup/pub/magento/setup/install-extension-grid.js b/setup/pub/magento/setup/install-extension-grid.js
index 7e213fdbba9bb27beb60ced92c715f8d37686927..04a3bb1efb547fd73ad4f90046179cf8c171068b 100644
--- a/setup/pub/magento/setup/install-extension-grid.js
+++ b/setup/pub/magento/setup/install-extension-grid.js
@@ -143,6 +143,7 @@ angular.module('install-extension-grid', ['ngStorage', 'clickOut'])
                             version: extension.version
                         }
                     ];
+                    $localStorage.moduleName = extension.name;
                     $scope.error = false;
                     $scope.errorMessage = '';
                 }
diff --git a/setup/pub/magento/setup/select-version.js b/setup/pub/magento/setup/select-version.js
index 89bf9b63c1be47064bb5be77ab271f1888e3260e..83c201429f97bee59e8209e1142ced0923fa65d6 100644
--- a/setup/pub/magento/setup/select-version.js
+++ b/setup/pub/magento/setup/select-version.js
@@ -181,6 +181,7 @@ angular.module('select-version', ['ngStorage'])
                     $scope.packages.splice(1, $scope.totalForGrid);
                 }
             }
+            $localStorage.moduleName = '';
             $localStorage.packages = $scope.packages;
             $scope.nextState();
         };